fix typo #3925
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Test & Deploy | |
| on: [push, workflow_dispatch] | |
| env: | |
| FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} | |
| jobs: | |
| test_back: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 25 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v3 | |
| with: | |
| fetch-depth: 0 | |
| - uses: actions/setup-node@v3 | |
| with: | |
| node-version: 18 | |
| - name: Setup timezone | |
| uses: zcong1993/setup-timezone@master | |
| with: | |
| timezone: Europe/Paris | |
| - name: Install api deps | |
| run: | | |
| cd run | |
| npm install | |
| - name: Run api tests | |
| run: | | |
| cd run | |
| npm run test tests/ | |
| - name: Install pm2 server deps | |
| run: | | |
| cd pm2-server | |
| npm install | |
| - name: Run pm2 server tests | |
| run: | | |
| cd pm2-server | |
| npm run test | |
| test_front: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 25 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v3 | |
| with: | |
| fetch-depth: 0 | |
| - uses: actions/setup-node@v3 | |
| with: | |
| node-version: 18 | |
| - name: Setup timezone | |
| uses: zcong1993/setup-timezone@master | |
| with: | |
| timezone: Europe/Paris | |
| - name: Install deps | |
| run: yarn | |
| - name: Run tests | |
| run: yarn test tests/unit | |
| env: | |
| VITE_ENABLE_BILLING: true | |
| VITE_MAIN_DOMAIN: ethernal.local:8080 | |
| VITE_ENABLE_DEMO: true | |
| create_release: | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| needs: [test_front, test_back] | |
| runs-on: ubuntu-latest | |
| outputs: | |
| current_version: ${{ steps.get_changelog.outputs.version }} | |
| changes: ${{ steps.get_changelog.outputs.changes }} | |
| release_name: ${{ steps.get_release.outputs.release_name }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v3 | |
| with: | |
| fetch-depth: 0 | |
| - name: Get tag | |
| id: get_tag | |
| run: echo "current_version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT | |
| shell: bash | |
| - name: Get release name | |
| id: get_release | |
| run: echo "release_name=ethernal@${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT | |
| shell: bash | |
| - name: Get Changelog Entry | |
| id: get_changelog | |
| uses: mindsers/changelog-reader-action@v2 | |
| with: | |
| validation_depth: 10 | |
| version: ${{ steps.get_tag.outputs.current_version }} | |
| - name: Create Release | |
| uses: ncipollo/release-action@v1 | |
| with: | |
| body: ${{ steps.get_changelog.outputs.changes }} | |
| tag: ${{ steps.get_changelog.outputs.version }} | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| deploy_front: | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| needs: [create_release] | |
| runs-on: ubuntu-latest | |
| environment: production | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v3 | |
| with: | |
| fetch-depth: 0 | |
| - uses: actions/setup-node@v3 | |
| with: | |
| node-version: 18 | |
| - name: Install deps & build | |
| run: yarn && yarn build | |
| env: | |
| VITE_API_ROOT: ${{ secrets.API_ROOT }} | |
| VITE_ENABLE_BILLING: true | |
| VITE_MAIN_DOMAIN: ${{ secrets.MAIN_DOMAIN }} | |
| VITE_ENABLE_ANALYTICS: true | |
| VITE_ENABLE_MARKETING: true | |
| VITE_ENABLE_DEMO: true | |
| VITE_POSTHOG_API_KEY: ${{ secrets.POSTHOG_API_KEY }} | |
| VITE_POSTHOG_API_HOST: ${{ secrets.POSTHOG_API_HOST }} | |
| VITE_SOKETI_HOST: ${{ secrets.SOKETI_HOST }} | |
| VITE_SOKETI_PORT: ${{ secrets.SOKETI_PORT }} | |
| VITE_SOKETI_FORCE_TLS: ${{ secrets.SOKETI_FORCE_TLS }} | |
| VITE_PUSHER_KEY: ${{ secrets.PUSHER_KEY }} | |
| VITE_FEEDBACK_FIN_ENDPOINT: ${{ secrets.FEEDBACK_FIN_ENDPOINT }} | |
| VITE_VERSION: ${{ needs.create_release.outputs.current_version }} | |
| VITE_SENTRY_DSN_SECRET: ${{ secrets.SENTRY_DSN_SECRET }} | |
| VITE_SENTRY_DSN_PROJECT_ID: ${{ secrets.SENTRY_DSN_PROJECT_ID }} | |
| COMMIT_REF: ${{ github.sha }} | |
| SENTRY_URL: ${{ secrets.SENTRY_URL }} | |
| SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
| SENTRY_ORG: ${{ secrets.SENTRY_ORG }} | |
| SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} | |
| SENTRY_RELEASE: ${{ needs.create_release.outputs.release_name }} | |
| - uses: nwtgck/[email protected] | |
| id: netlify_deploy | |
| with: | |
| publish-dir: './dist' | |
| deploy-message: 'Deploying commit ${{ github.sha }}' | |
| env: | |
| NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} | |
| NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} | |
| - name: Store deploy id | |
| id: store_deploy_id | |
| run: | | |
| ID=$(echo ${{ steps.netlify_deploy.outputs.deploy-url }} | sed 's/https:\/\/\(.*\)--tryethernal\.netlify\.app/\1/') | |
| echo $ID > deploy_id.txt | |
| - name: Upload deploy ID | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: netlify_deploy_id | |
| path: deploy_id.txt | |
| deploy_back_amd64: | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| needs: [create_release] | |
| runs-on: ubuntu-latest | |
| environment: production | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Setup credentials | |
| run: | | |
| echo "$GCLOUD_CREDENTIALS" >> ethernal-95a14-19f78a7e26cc.json | |
| shell: bash | |
| env: | |
| GCLOUD_CREDENTIALS: ${{ secrets.GCLOUD_CREDENTIALS }} | |
| - uses: superfly/flyctl-actions/setup-flyctl@master | |
| - name: Setup Docker Buildx | |
| run: | | |
| docker buildx create --use | |
| docker buildx inspect --bootstrap | |
| shell: bash | |
| - name: Log in to Docker Hub | |
| run: | | |
| echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin | |
| - name: Build & push backend image | |
| run: | | |
| flyctl auth docker | |
| ./build-prod-images-amd64.sh ${{ needs.create_release.outputs.current_version }} | |
| deploy_back_arm64: | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| needs: [create_release] | |
| runs-on: ubuntu-latest | |
| environment: production | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - uses: superfly/flyctl-actions/setup-flyctl@master | |
| - name: Setup Docker Buildx | |
| run: | | |
| docker buildx create --use | |
| docker buildx inspect --bootstrap | |
| shell: bash | |
| - name: Log in to Docker Hub | |
| run: | | |
| echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin | |
| - name: Build & push backend image | |
| run: | | |
| flyctl auth docker | |
| ./build-prod-images-arm64.sh ${{ needs.create_release.outputs.current_version }} | |
| release_front: | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| needs: [deploy_front, deploy_back_amd64] | |
| runs-on: ubuntu-latest | |
| environment: production | |
| steps: | |
| - name: Download Deploy ID | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: netlify_deploy_id | |
| - name: Release deploy | |
| run: | | |
| deploy_id=$(cat deploy_id.txt) | |
| curl -H "Authorization: Bearer ${{ secrets.NETLIFY_AUTH_TOKEN }}" -X POST -d {} https://api.netlify.com/api/v1/sites/${{ secrets.NETLIFY_SITE_ID }}/deploys/$deploy_id/restore | |
| release_back: | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| needs: [deploy_front, deploy_back_amd64, create_release] | |
| runs-on: ubuntu-latest | |
| environment: production | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - uses: superfly/flyctl-actions/setup-flyctl@master | |
| - name: Update version | |
| run: | | |
| flyctl secrets set VERSION=${{ needs.create_release.outputs.current_version }} --stage -a ethernal | |
| flyctl secrets set VERSION=${{ needs.create_release.outputs.current_version }} --stage -a ethernal-pm2 | |
| - name: Release backend | |
| run: flyctl deploy -c fly.toml -i registry.fly.io/ethernal:${{ needs.create_release.outputs.current_version }} | |
| - name: Release PM2 server | |
| run: flyctl deploy -c fly.pm2.toml -i registry.fly.io/ethernal-pm2:${{ needs.create_release.outputs.current_version }} | |
| - name: Release Soketi server | |
| run: flyctl deploy -c fly.soketi.toml |