Deploy Vue.js app to GitHub Pages #12
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
| # Workflow for building and deploying an Astro site to GitHub Pages | |
| # plus inclusion du site statique de la branche `old` dans /old | |
| name: Deploy Astro + Old site to GitHub Pages | |
| on: | |
| push: | |
| branches: ["master"] | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| pages: write | |
| id-token: write | |
| concurrency: | |
| group: "pages" | |
| cancel-in-progress: false | |
| env: | |
| BUILD_PATH: "." # dossier du site Astro | |
| jobs: | |
| build: | |
| name: Build Astro site + include old version | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout master (Astro site) | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: master | |
| - name: Detect package manager | |
| id: detect-package-manager | |
| run: | | |
| if [ -f "${{ github.workspace }}/yarn.lock" ]; then | |
| echo "manager=yarn" >> $GITHUB_OUTPUT | |
| echo "command=install" >> $GITHUB_OUTPUT | |
| echo "runner=yarn" >> $GITHUB_OUTPUT | |
| echo "lockfile=yarn.lock" >> $GITHUB_OUTPUT | |
| elif [ -f "${{ github.workspace }}/package.json" ]; then | |
| echo "manager=npm" >> $GITHUB_OUTPUT | |
| echo "command=ci" >> $GITHUB_OUTPUT | |
| echo "runner=npx --no-install" >> $GITHUB_OUTPUT | |
| echo "lockfile=package-lock.json" >> $GITHUB_OUTPUT | |
| else | |
| echo "Unable to determine package manager" | |
| exit 1 | |
| fi | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: "20" | |
| cache: ${{ steps.detect-package-manager.outputs.manager }} | |
| cache-dependency-path: ${{ env.BUILD_PATH }}/${{ steps.detect-package-manager.outputs.lockfile }} | |
| - name: Setup Pages | |
| id: pages | |
| uses: actions/configure-pages@v5 | |
| - name: Install dependencies | |
| run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }} | |
| working-directory: ${{ env.BUILD_PATH }} | |
| - name: Build Astro site | |
| run: | | |
| ${{ steps.detect-package-manager.outputs.runner }} astro build \ | |
| --site "${{ steps.pages.outputs.origin }}" \ | |
| --base "${{ steps.pages.outputs.base_path }}" | |
| working-directory: ${{ env.BUILD_PATH }} | |
| - name: Clone old branch (static site) | |
| run: | | |
| git clone --depth 1 --branch old https://github.com/${{ github.repository }} tmp-old | |
| mkdir -p ${{ env.BUILD_PATH }}/dist/old | |
| cp -r tmp-old/* ${{ env.BUILD_PATH }}/dist/old/ || true | |
| rm -rf tmp-old | |
| - name: Upload artifact | |
| uses: actions/upload-pages-artifact@v3 | |
| with: | |
| path: ${{ env.BUILD_PATH }}/dist | |
| deploy: | |
| name: Deploy to GitHub Pages | |
| environment: | |
| name: github-pages | |
| url: ${{ steps.deployment.outputs.page_url }} | |
| needs: build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Deploy to GitHub Pages | |
| id: deployment | |
| uses: actions/deploy-pages@v4 |