name: Deploy Web (Test) on: push: branches: - build/test env: NODE_VERSION: "18.16.0" PNPM_VERSION: "8.5.0" concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: deploy: runs-on: ubuntu-latest env: SSH_PRIVATE_KEY: ${{ secrets.WEB_TEST_SSH_PRIVATE_KEY }} REMOTE_HOST: ${{ secrets.WEB_TEST_REMOTE_HOST }} REMOTE_USER: ${{ secrets.WEB_TEST_REMOTE_USER }} SSL_CERTIFICATE: ${{ secrets.WEB_TEST_SSL_CERTIFICATE }} SSL_CERTIFICATE_KEY: ${{ secrets.WEB_TEST_SSL_CERTIFICATE_KEY }} ENV_FILE: test.env steps: - uses: actions/checkout@v4 - name: setup node uses: actions/setup-node@v3 with: node-version: ${{ env.NODE_VERSION }} - name: setup pnpm uses: pnpm/action-setup@v2 with: version: ${{ env.PNPM_VERSION }} - name: Node_modules cache uses: actions/cache@v2 with: path: frontend/appflowy_web_app/node_modules key: node-modules-${{ runner.os }} - name: install frontend dependencies working-directory: frontend/appflowy_web_app run: | pnpm install - name: copy env file working-directory: frontend/appflowy_web_app run: | cp ${{ env.ENV_FILE }} .env - name: test and lint working-directory: frontend/appflowy_web_app run: | pnpm run lint - name: build working-directory: frontend/appflowy_web_app run: | pnpm run build - name: generate SSL certificate run: | echo "${{ env.SSL_CERTIFICATE }}" > nginx-signed.crt echo "${{ env.SSL_CERTIFICATE_KEY }}" > nginx-signed.key - name: Deploy to EC2 uses: easingthemes/ssh-deploy@main with: SSH_PRIVATE_KEY: ${{ env.SSH_PRIVATE_KEY }} ARGS: "-rlgoDzvc -i" SOURCE: "frontend/appflowy_web_app/dist frontend/appflowy_web_app/server.cjs frontend/appflowy_web_app/start.sh frontend/appflowy_web_app/Dockerfile frontend/appflowy_web_app/nginx.conf frontend/appflowy_web_app/.env nginx-signed.crt nginx-signed.key" REMOTE_HOST: ${{ env.REMOTE_HOST }} REMOTE_USER: ${{ env.REMOTE_USER }} EXCLUDE: "frontend/appflowy_web_app/dist/, frontend/appflowy_web_app/node_modules/" SCRIPT_AFTER: | docker build -t appflowy-web-app . docker rm -f appflowy-web-app || true docker run -d -p 80:80 -p 443:443 --name appflowy-web-app appflowy-web-app