diff --git a/.github/workflows/deploy-production.yml b/.github/workflows/deploy-production.yml index f330e40e..82397e0b 100644 --- a/.github/workflows/deploy-production.yml +++ b/.github/workflows/deploy-production.yml @@ -1,36 +1,47 @@ -# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions - name: Deploy production server to ec2 on: + workflow_dispatch: push: branches: - main jobs: - build: - runs-on: self-hosted + deploy: + runs-on: ubuntu-latest + strategy: matrix: node-version: [16.x] - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - defaults: - run: - working-directory: ${{ env.SERVER_PROFILE }} + steps: - - uses: actions/checkout@v2 - with: - path: ${{ env.SERVER_PROFILE }} + - name: Checkout Repository + uses: actions/checkout@v3 + - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - - run: cp ~/config-injection/ecosystem-${{ env.SERVER_PROFILE }}.json ${{ env.PROJECT_PATH }}/ecosystem.json - - run: cp ~/config-injection/envs/.env.${{ env.NODE_ENV }} ${{ env.PROJECT_PATH }}/.env - - run: bash ${{ env.PROJECT_PATH }}/script/prebuild.sh - - run: sh ${{ env.PROJECT_PATH }}/script/reload.sh + + - name: Deploy to EC2 using SSH + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SSH_USERNAME }} + key: ${{ secrets.SSH_PRIVATE_KEY }} + port: 22 + script: | + cp ~/config-injection/ecosystem-${{ env.SERVER_PROFILE }}.json ${{ env.PROJECT_PATH }}/ecosystem.json && + cp ~/config-injection/envs/.env.${{ env.NODE_ENV }} ${{ env.PROJECT_PATH }}/.env && + cd ${{ env.PROJECT_PATH }} && + git fetch --all && + git checkout ${{ env.BRANCH_NAME }} && + git pull origin ${{ env.BRANCH_NAME }} && + bash script/prebuild.sh && + bash script/reload.sh + env: + BRANCH_NAME: main NODE_ENV: production SERVER_PROFILE: production PROJECT_PATH: ~/actions-runner/_work/A.fume.Server/A.fume.Server/production