From 0bde83809cd2143c2d327040fe054a630ff4986b Mon Sep 17 00:00:00 2001 From: Alain Nicolas Date: Sat, 23 Mar 2024 10:59:23 +0100 Subject: [PATCH] feat: Deploy tutorial --- .github/workflows/explorer-deploy-preview.yml | 5 +- .github/workflows/tutorial-deploy-preview.yml | 96 +++++++++++++++++++ ...al-deploy.yml => tutorial-deploy-prod.yml} | 42 +++----- .github/workflows/website-deploy.yml | 10 +- 4 files changed, 119 insertions(+), 34 deletions(-) create mode 100644 .github/workflows/tutorial-deploy-preview.yml rename .github/workflows/{tutorial-deploy.yml => tutorial-deploy-prod.yml} (62%) diff --git a/.github/workflows/explorer-deploy-preview.yml b/.github/workflows/explorer-deploy-preview.yml index 5eea6f0d..cb351bd4 100644 --- a/.github/workflows/explorer-deploy-preview.yml +++ b/.github/workflows/explorer-deploy-preview.yml @@ -4,9 +4,8 @@ on: pull_request: branches: - dev - push: - branches: - - dev + paths: + - explorer/** jobs: deploy-explorer-preview: diff --git a/.github/workflows/tutorial-deploy-preview.yml b/.github/workflows/tutorial-deploy-preview.yml new file mode 100644 index 00000000..739cbe82 --- /dev/null +++ b/.github/workflows/tutorial-deploy-preview.yml @@ -0,0 +1,96 @@ +name: Deploy preview tutorial + +on: + pull_request: + branches: + - dev + paths: + - tutorial/** + +jobs: + deploy-tutorial-preview: + runs-on: ubuntu-latest + + defaults: + run: + working-directory: tutorial + + steps: + - name: Check out the repo + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - id: check-changes + run: | + if [ -n "$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} | grep '^tutorial/')" ]; then + echo "::set-output name=changed::true" + else + echo "::set-output name=changed::false" + fi + + - name: Install Pnpm + if: steps.check-changes.outputs.changed == 'true' + uses: pnpm/action-setup@v2 + with: + version: 8 + run_install: false + + - name: Install Node.js + if: steps.check-changes.outputs.changed == 'true' + uses: actions/setup-node@v3 + with: + node-version: 18 + cache: pnpm + + - name: Get pnpm store directory + if: steps.check-changes.outputs.changed == 'true' + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + + - uses: actions/cache@v3 + if: steps.check-changes.outputs.changed == 'true' + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install dependencies + if: steps.check-changes.outputs.changed == 'true' + run: pnpm install --frozen-lockfile + + - name: Build + if: steps.check-changes.outputs.changed == 'true' + run: pnpm run build:netlify + env: + VITE_WALLETCONNECT_PROJECT_ID: ${{ secrets.VITE_WALLETCONNECT_PROJECT_ID }} + + - name: Deploy to Netlify + if: steps.check-changes.outputs.changed == 'true' + uses: nwtgck/actions-netlify@v2.0 + with: + publish-dir: "./tutorial/dist" + github-token: ${{ secrets.GITHUB_TOKEN }} + deploy-message: "Deploy from GitHub Actions" + enable-pull-request-comment: true + enable-commit-comment: true + overwrites-pull-request-comment: true + env: + NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} + NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID_TUTORIAL_STAGING }} + timeout-minutes: 1 + + - name: Add tutorial deployment summary + if: steps.check-changes.outputs.changed == 'true' + run: | + echo "## Tutorial staging deployment result" >> $GITHUB_STEP_SUMMARY + echo "✅ Passed" >> $GITHUB_STEP_SUMMARY + + - name: Add tutorial deployment summary + if: steps.check-changes.outputs.changed == 'false' + run: | + echo "## Tutorial staging deployment result" >> $GITHUB_STEP_SUMMARY + echo "✅ No change detected in the tutorial" >> $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/tutorial-deploy.yml b/.github/workflows/tutorial-deploy-prod.yml similarity index 62% rename from .github/workflows/tutorial-deploy.yml rename to .github/workflows/tutorial-deploy-prod.yml index d2b80cbb..eece14df 100644 --- a/.github/workflows/tutorial-deploy.yml +++ b/.github/workflows/tutorial-deploy-prod.yml @@ -1,26 +1,15 @@ -name: Deploy tutorial +name: Deploy production tutorial on: + workflow_dispatch: push: - branches: ["dev"] + branches: + - dev paths: - tutorial/** -permissions: - contents: read - pages: write - id-token: write - -concurrency: - group: "pages" - cancel-in-progress: true - jobs: - deploy-tutorial: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - + deploy-tutorial-prod: runs-on: ubuntu-latest defaults: @@ -60,24 +49,19 @@ jobs: run: pnpm install --frozen-lockfile - name: Build - run: pnpm run build + run: pnpm run build:netlify env: VITE_WALLETCONNECT_PROJECT_ID: ${{ secrets.VITE_WALLETCONNECT_PROJECT_ID }} - VITE_INFURA_API_KEY: ${{ secrets.VITE_INFURA_API_KEY }} - - name: Setup Pages - uses: actions/configure-pages@v3 - - - name: Upload artifact - uses: actions/upload-pages-artifact@v2 + - name: Deploy tutorial to Netlify + uses: netlify/actions/cli@master + env: + NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} + NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID_TUTORIAL }} with: - path: "./tutorial/dist" - - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v2 + args: deploy --dir=./tutorial/dist --filter tutorial --prod - name: Add tutorial deployment summary run: | - echo "## Tutorial deployment result" >> $GITHUB_STEP_SUMMARY + echo "## Tutorial production deployment result" >> $GITHUB_STEP_SUMMARY echo "✅ Passed" >> $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/website-deploy.yml b/.github/workflows/website-deploy.yml index 3d921fdb..02cefe0a 100644 --- a/.github/workflows/website-deploy.yml +++ b/.github/workflows/website-deploy.yml @@ -1,6 +1,7 @@ name: Deploy website on: + workflow_dispatch: push: branches: ["dev"] paths: @@ -34,10 +35,15 @@ jobs: - name: Setup Pages uses: actions/configure-pages@v3 + - name: Move the HTML page to a dedicated folder + run: | + mkdir -p dist + mv index.html dist/index.html + - name: Upload artifact - uses: actions/upload-pages-artifact@v2 + uses: actions/upload-pages-artifact@v3 with: - path: "./website/index.html" + path: "./website/dist" - name: Deploy to GitHub Pages id: deployment