diff --git a/.dev.env b/.env.example similarity index 76% rename from .dev.env rename to .env.example index aa54d10..3ff53e9 100644 --- a/.dev.env +++ b/.env.example @@ -7,12 +7,11 @@ # any secret values. BOT_TOKEN= -BOT_VER=0.5.1 +BOT_VER=0.5.0 BOT_AUTHOR=Vylpes BOT_OWNERID=147392775707426816 BOT_CLIENTID=682942374040961060 BOT_ENV=4 -BOT_LOGLEVEL=info BOT_ADMINS=147392775707426816,887272961504071690 ABOUT_FUNDING= @@ -20,16 +19,17 @@ ABOUT_REPO= DATA_DIR= -DB_HOST=127.0.0.1 -DB_PORT=3301 -DB_NAME=carddrop -DB_AUTH_USER=dev -DB_AUTH_PASS=dev -DB_SYNC=true -DB_LOGGING=true +DB_HOST= +DB_PORT= +DB_NAME= +DB_AUTH_USER= +DB_AUTH_PASS= +DB_SYNC= +DB_LOGGING= +DB_DATA_LOCATION=~/.docker DB_CARD_FILE=:memory: EXPRESS_PORT=3303 -GDRIVESYNC_AUTO=true +GDRIVESYNC_AUTO=true \ No newline at end of file diff --git a/.forgejo/workflows/production.yml b/.forgejo/workflows/production.yml new file mode 100644 index 0000000..8291098 --- /dev/null +++ b/.forgejo/workflows/production.yml @@ -0,0 +1,70 @@ +name: Deploy To Production + +on: + push: + branches: + - main + +jobs: + build: + environment: prod + + runs-on: docker + + steps: + - uses: actions/checkout@v2 + - name: Use Node.js + uses: actions/setup-node@v1 + with: + node-version: 18.x + - run: npm ci + - run: npm run build + - run: npm test + + - name: "Copy files over to location" + run: cp -r . ${{ secrets.PROD_REPO_PATH }} + + deploy: + environment: prod + needs: build + runs-on: docker + steps: + - uses: https://github.com/appleboy/ssh-action@v1.0.0 + env: + DB_NAME: ${{ secrets.PROD_DB_NAME }} + DB_AUTH_USER: ${{ secrets.PROD_DB_AUTH_USER }} + DB_AUTH_PASS: ${{ secrets.PROD_DB_AUTH_PASS }} + DB_HOST: ${{ secrets.PROD_DB_HOST }} + DB_PORT: ${{ secrets.PROD_DB_PORT }} + DB_ROOT_HOST: ${{ secrets.PROD_DB_ROOT_HOST }} + DB_SYNC: ${{ secrets.PROD_DB_SYNC }} + DB_LOGGING: ${{ secrets.PROD_DB_LOGGING }} + DB_DATA_LOCATION: ${{ secrets.PROD_DB_DATA_LOCATION }} + SERVER_PATH: ${{ secrets.PROD_SSH_SERVER_PATH }} + BOT_TOKEN: ${{ secrets.PROD_BOT_TOKEN }} + BOT_VER: ${{ vars.PROD_BOT_VER }} + BOT_AUTHOR: ${{ vars.PROD_BOT_AUTHOR }} + BOT_OWNERID: ${{ vars.PROD_BOT_OWNERID }} + BOT_CLIENTID: ${{ vars.PROD_BOT_CLIENTID }} + BOT_ENV: ${{ vars.PROD_BOT_ENV }} + BOT_ADMINS: ${{ vars.PROD_BOT_ADMINS }} + ABOUT_FUNDING: ${{ vars.PROD_ABOUT_FUNDING }} + ABOUT_REPO: ${{ vars.PROD_ABOUT_REPO }} + DATA_DIR: ${{ secrets.PROD_DATA_DIR }} + GDRIVESYNC_AUTO: ${{ vars.PROD_GDRIVESYNC_AUTO }} + EXPRESS_PORT: ${{ secrets.PROD_EXPRESS_PORT }} + with: + host: ${{ secrets.PROD_SSH_HOST }} + username: ${{ secrets.PROD_SSH_USER }} + key: ${{ secrets.PROD_SSH_KEY }} + port: ${{ secrets.PROD_SSH_PORT }} + envs: DB_NAME,DB_AUTH_USER,DB_AUTH_PASS,DB_HOST,DB_PORT,DB_ROOT_HOST,DB_SYNC,DB_LOGGING,DB_DATA_LOCATION,BOT_TOKEN,BOT_VER,BOT_AUTHOR,BOT_OWNERID,BOT_CLIENTID,ABOUT_FUNDING,ABOUT_REPO,BOT_ENV,BOT_ADMINS,DATA_DIR,GDRIVESYNC_AUTO,SERVER_PATH,EXPRESS_PORT + script: | + cd /home/vylpes/apps/card-drop/card-drop_prod \ + && docker compose down \ + && (pm2 stop card-drop_prod || true) \ + && (pm2 delete card-drop_prod || true) \ + && docker compose up -d \ + && sleep 10 \ + && yarn run db:up \ + && pm2 start --name card-drop_prod dist/bot.js \ No newline at end of file diff --git a/.forgejo/workflows/stage.yml b/.forgejo/workflows/stage.yml new file mode 100644 index 0000000..8e222be --- /dev/null +++ b/.forgejo/workflows/stage.yml @@ -0,0 +1,70 @@ +name: Deploy To Stage + +on: + push: + branches: + - develop + +jobs: + build: + environment: stage + + runs-on: docker + + steps: + - uses: actions/checkout@v2 + - name: Use Node.js + uses: actions/setup-node@v1 + with: + node-version: 18.x + - run: npm ci + - run: npm run build + - run: npm test + + - name: "Copy files over to location" + run: cp -r . ${{ secrets.STAGE_REPO_PATH }} + + deploy: + environment: prod + needs: build + runs-on: docker + steps: + - uses: https://github.com/appleboy/ssh-action@v1.0.0 + env: + DB_NAME: ${{ secrets.STAGE_DB_NAME }} + DB_AUTH_USER: ${{ secrets.STAGE_DB_AUTH_USER }} + DB_AUTH_PASS: ${{ secrets.STAGE_DB_AUTH_PASS }} + DB_HOST: ${{ secrets.STAGE_DB_HOST }} + DB_PORT: ${{ secrets.STAGE_DB_PORT }} + DB_ROOT_HOST: ${{ secrets.STAGE_DB_ROOT_HOST }} + DB_SYNC: ${{ secrets.STAGE_DB_SYNC }} + DB_LOGGING: ${{ secrets.STAGE_DB_LOGGING }} + DB_DATA_LOCATION: ${{ secrets.STAGE_DB_DATA_LOCATION }} + SERVER_PATH: ${{ secrets.STAGE_SSH_SERVER_PATH }} + BOT_TOKEN: ${{ secrets.STAGE_BOT_TOKEN }} + BOT_VER: ${{ vars.STAGE_BOT_VER }} + BOT_AUTHOR: ${{ vars.STAGE_BOT_AUTHOR }} + BOT_OWNERID: ${{ vars.STAGE_BOT_OWNERID }} + BOT_CLIENTID: ${{ vars.STAGE_BOT_CLIENTID }} + BOT_ENV: ${{ vars.STAGE_BOT_ENV }} + BOT_ADMINS: ${{ vars.STAGE_BOT_ADMINS }} + ABOUT_FUNDING: ${{ vars.STAGE_ABOUT_FUNDING }} + ABOUT_REPO: ${{ vars.STAGE_ABOUT_REPO }} + DATA_DIR: ${{ secrets.STAGE_DATA_DIR }} + GDRIVESYNC_AUTO: ${{ vars.STAGE_GDRIVESYNC_AUTO }} + EXPRESS_PORT: ${{ secrets.STAGE_EXPRESS_PORT }} + with: + host: ${{ secrets.STAGE_SSH_HOST }} + username: ${{ secrets.STAGE_SSH_USER }} + key: ${{ secrets.STAGE_SSH_KEY }} + port: ${{ secrets.STAGE_SSH_PORT }} + envs: DB_NAME,DB_AUTH_USER,DB_AUTH_PASS,DB_HOST,DB_PORT,DB_ROOT_HOST,DB_SYNC,DB_LOGGING,DB_DATA_LOCATION,BOT_TOKEN,BOT_VER,BOT_AUTHOR,BOT_OWNERID,BOT_CLIENTID,ABOUT_FUNDING,ABOUT_REPO,BOT_ENV,BOT_ADMINS,DATA_DIR,GDRIVESYNC_AUTO,SERVER_PATH,EXPRESS_PORT + script: | + cd /home/vylpes/apps/card-drop/card-drop_stage \ + && docker compose down \ + && (pm2 stop card-drop_stage || true) \ + && (pm2 delete card-drop_stage || true) \ + && docker compose up -d \ + && sleep 10 \ + && yarn run db:up \ + && pm2 start --name card-drop_stage dist/bot.js \ No newline at end of file diff --git a/.forgejo/workflows/test.yml b/.forgejo/workflows/test.yml new file mode 100644 index 0000000..989ac4f --- /dev/null +++ b/.forgejo/workflows/test.yml @@ -0,0 +1,24 @@ +name: Test + +on: + push: + branches: + - feature/* + - hotfix/* + - renovate/* + +jobs: + build: + environment: stage + + runs-on: node + + steps: + - uses: actions/checkout@v2 + - name: Use Node.js + uses: actions/setup-node@v1 + with: + node-version: 18.x + - run: npm ci + - run: npm run build + - run: npm test \ No newline at end of file diff --git a/.prod.env b/.prod.env deleted file mode 100644 index 80de62d..0000000 --- a/.prod.env +++ /dev/null @@ -1,35 +0,0 @@ -# Security Warning! Do not commit this file to any VCS! -# This is a local file to speed up development process, -# so you don't have to change your environment variables. -# -# This is not applied to `.env.template`! -# Template files must be committed to the VCS, but must not contain -# any secret values. - -BOT_TOKEN= -BOT_VER=0.5.1 -BOT_AUTHOR=Vylpes -BOT_OWNERID=147392775707426816 -BOT_CLIENTID=1093810443589529631 -BOT_ENV=1 -BOT_LOGLEVEL=info -BOT_ADMINS=147392775707426816,887272961504071690 - -ABOUT_FUNDING= -ABOUT_REPO= - -DATA_DIR=/home/vylpes/appdata/card-drop/card-drop_prod - -DB_HOST=127.0.0.1 -DB_PORT=3321 -DB_NAME=carddrop -DB_AUTH_USER=prod -DB_AUTH_PASS=prod -DB_SYNC=false -DB_LOGGING=false - -DB_CARD_FILE=:memory: - -EXPRESS_PORT=3323 - -GDRIVESYNC_AUTO=false diff --git a/.stage.env b/.stage.env deleted file mode 100644 index 09120c1..0000000 --- a/.stage.env +++ /dev/null @@ -1,35 +0,0 @@ -# Security Warning! Do not commit this file to any VCS! -# This is a local file to speed up development process, -# so you don't have to change your environment variables. -# -# This is not applied to `.env.template`! -# Template files must be committed to the VCS, but must not contain -# any secret values. - -BOT_TOKEN= -BOT_VER=0.5.1 -BOT_AUTHOR=Vylpes -BOT_OWNERID=147392775707426816 -BOT_CLIENTID=1147976642942214235 -BOT_ENV=2 -BOT_LOGLEVEL=info -BOT_ADMINS=147392775707426816,887272961504071690 - -ABOUT_FUNDING= -ABOUT_REPO= - -DATA_DIR=/home/vylpes/appdata/card-drop/card-drop_stage - -DB_HOST=127.0.0.1 -DB_PORT=3311 -DB_NAME=carddrop -DB_AUTH_USER=stage -DB_AUTH_PASS=stage -DB_SYNC=false -DB_LOGGING=false - -DB_CARD_FILE=:memory: - -EXPRESS_PORT=3313 - -GDRIVESYNC_AUTO=false diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml deleted file mode 100644 index faac7fb..0000000 --- a/docker-compose.prod.yml +++ /dev/null @@ -1,31 +0,0 @@ -version: "3.9" - -volumes: - prod_database_data: - -services: - # discord: - # build: . - - database: - image: mysql/mysql-server - command: --default-authentication-plugin=mysql_native_password - restart: always - environment: - - MYSQL_DATABASE=carddrop - - MYSQL_USER=prod - - MYSQL_PASSWORD=prod - - MYSQL_ROOT_PASSWORD=root - - MYSQL_ROOT_HOST=0.0.0.0 - ports: - - "3321:3306" - volumes: - - prod_database_data:/var/lib/mysql - - phpmyadmin: - image: phpmyadmin - restart: always - ports: - - "3322:80" - environment: - - PMA_ARBITRARY=1 \ No newline at end of file diff --git a/docker-compose.stage.yml b/docker-compose.stage.yml deleted file mode 100644 index a6666a4..0000000 --- a/docker-compose.stage.yml +++ /dev/null @@ -1,31 +0,0 @@ -version: "3.9" - -volumes: - stage_database_data: - -services: - # discord: - # build: . - - database: - image: mysql/mysql-server - command: --default-authentication-plugin=mysql_native_password - restart: always - environment: - - MYSQL_DATABASE=carddrop - - MYSQL_USER=stage - - MYSQL_PASSWORD=stage - - MYSQL_ROOT_PASSWORD=root - - MYSQL_ROOT_HOST=0.0.0.0 - ports: - - "3311:3306" - volumes: - - stage_database_data:/var/lib/mysql - - phpmyadmin: - image: phpmyadmin - restart: always - ports: - - "3312:80" - environment: - - PMA_ARBITRARY=1 \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index c0b5077..025a674 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,31 +1,17 @@ version: "3.9" -volumes: - dev_database_data: - services: - # discord: - # build: . - database: image: mysql/mysql-server command: --default-authentication-plugin=mysql_native_password restart: always environment: - - MYSQL_DATABASE=carddrop - - MYSQL_USER=dev - - MYSQL_PASSWORD=dev - - MYSQL_ROOT_PASSWORD=root - - MYSQL_ROOT_HOST=0.0.0.0 + - MYSQL_DATABASE=$DB_NAME + - MYSQL_USER=$DB_AUTH_USER + - MYSQL_PASSWORD=$DB_AUTH_PASS + - MYSQL_ROOT_PASSWORD=$DB_AUTH_PASS + - MYSQL_ROOT_HOST=$DB_ROOT_HOST ports: - - "3301:3306" + - "$DB_PORT:3306" volumes: - - dev_database_data:/var/lib/mysql - - phpmyadmin: - image: phpmyadmin - restart: always - ports: - - "3302:80" - environment: - - PMA_ARBITRARY=1 \ No newline at end of file + - $DB_DATA_LOCATION:/var/lib/mysql \ No newline at end of file