From ed3517ecda748e27b4994b7cbf57c2948c0d45be Mon Sep 17 00:00:00 2001 From: Ethan Lane Date: Sun, 28 Apr 2024 15:49:54 +0100 Subject: [PATCH] Use forgejo runner --- .dev.env => .env.example | 2 +- .forgejo/workflows/production.yml | 73 +++++++++++++++++++++++++++++++ .prod.env | 26 ----------- .stage.env | 26 ----------- docker-compose.prod.yml | 31 ------------- docker-compose.stage.yml | 31 ------------- docker-compose.yml | 28 +++--------- 7 files changed, 81 insertions(+), 136 deletions(-) rename .dev.env => .env.example (97%) create mode 100644 .forgejo/workflows/production.yml delete mode 100644 .prod.env delete mode 100644 .stage.env delete mode 100644 docker-compose.prod.yml delete mode 100644 docker-compose.stage.yml diff --git a/.dev.env b/.env.example similarity index 97% rename from .dev.env rename to .env.example index 7fcb151..674b0f8 100644 --- a/.dev.env +++ b/.env.example @@ -7,7 +7,7 @@ # any secret values. BOT_TOKEN= -BOT_VER=3.2.2 +BOT_VER=3.2.1 BOT_AUTHOR=Vylpes BOT_OWNERID=147392775707426816 BOT_CLIENTID=682942374040961060 diff --git a/.forgejo/workflows/production.yml b/.forgejo/workflows/production.yml new file mode 100644 index 0000000..b696fdf --- /dev/null +++ b/.forgejo/workflows/production.yml @@ -0,0 +1,73 @@ +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: yarn install --frozen-lockfile + - run: yarn build + - run: yarn test + + - name: RSync to server + uses: https://github.com/D3rHase/rsync-deploy-action@v0.2 + with: + HOST: ${{ secrets.SSH_HOST }} + PORT: ${{ secrets.SSH_PORT }} + USER: ${{ secrets.SSH_USER }} + PRIVATE_SSH_KEY: ${{ secrets.SSH_KEY }} + REPOSITORY_PATH: ${{ secrets.PROD_SSH_REPO_PATH }} + SERVER_PATH: ${{ secrets.PROD_SSH_SERVER_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 }} + ABOUT_FUNDING: ${{ vars.PROD_ABOUT_FUNDING }} + ABOUT_REPO: ${{ vars.PROD_ABOUT_REPO }} + CACHE_INTERVAL: ${{ vars.PROD_CACHE_INTERVAL }} + with: + host: ${{ secrets.SSH_HOST }} + username: ${{ secrets.SSH_USER }} + key: ${{ secrets.SSH_KEY }} + port: ${{ secrets.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,CACHE_INTERVAL + script: | + cd /home/vylpes/apps/vylbot/vylbot_prod \ + && docker compose down \ + && (pm2 stop vylbot_prod || true) \ + && (pm2 delete vylbot_prod || true) \ + && docker compose up -d \ + && sleep 10 \ + && yarn run db:up \ + && pm2 start --name vylbot_prod dist/vylbot.js \ No newline at end of file diff --git a/.prod.env b/.prod.env deleted file mode 100644 index 09ce5bb..0000000 --- a/.prod.env +++ /dev/null @@ -1,26 +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=3.2.2 -BOT_AUTHOR=Vylpes -BOT_OWNERID=147392775707426816 -BOT_CLIENTID=680083120896081954 - -ABOUT_FUNDING=https://ko-fi.com/vylpes -ABOUT_REPO=https://gitea.vylpes.xyz/RabbitLabs/vylbot-app - -CACHE_INTERVAL=1800000 # 30 minutes - -DB_HOST=127.0.0.1 -DB_PORT=3121 -DB_NAME=vylbot -DB_AUTH_USER=prod -DB_AUTH_PASS=prod -DB_SYNC=false -DB_LOGGING=false \ No newline at end of file diff --git a/.stage.env b/.stage.env deleted file mode 100644 index cbf7e4b..0000000 --- a/.stage.env +++ /dev/null @@ -1,26 +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=3.2.2 -BOT_AUTHOR=Vylpes -BOT_OWNERID=147392775707426816 -BOT_CLIENTID=1016767908740857949 - -ABOUT_FUNDING=https://ko-fi.com/vylpes -ABOUT_REPO=https://gitea.vylpes.xyz/RabbitLabs/vylbot-app - -CACHE_INTERVAL=1800000 # 30 minutes - -DB_HOST=127.0.0.1 -DB_PORT=3111 -DB_NAME=vylbot -DB_AUTH_USER=stage -DB_AUTH_PASS=stage -DB_SYNC=false -DB_LOGGING=false \ No newline at end of file diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml deleted file mode 100644 index ae37fc5..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=vylbot - - MYSQL_USER=prod - - MYSQL_PASSWORD=prod - - MYSQL_ROOT_PASSWORD=root - - MYSQL_ROOT_HOST=0.0.0.0 - ports: - - "3121:3306" - volumes: - - prod_database_data:/var/lib/mysql - - phpmyadmin: - image: phpmyadmin - restart: always - ports: - - "3122: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 e25a6f1..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=vylbot - - MYSQL_USER=stage - - MYSQL_PASSWORD=stage - - MYSQL_ROOT_PASSWORD=root - - MYSQL_ROOT_HOST=0.0.0.0 - ports: - - "3111:3306" - volumes: - - stage_database_data:/var/lib/mysql - - phpmyadmin: - image: phpmyadmin - restart: always - ports: - - "3112:80" - environment: - - PMA_ARBITRARY=1 \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 92ce70a..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=vylbot - - 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: - - "3101:3306" + - "$DB_PORT:3306" volumes: - - dev_database_data:/var/lib/mysql - - phpmyadmin: - image: phpmyadmin - restart: always - ports: - - "3102:80" - environment: - - PMA_ARBITRARY=1 \ No newline at end of file + - $DB_DATA_LOCATION:/var/lib/mysql \ No newline at end of file