# Sample workflow for building and deploying a Gatsby site to GitHub Pages # # To get started with Gatsby see: https://www.gatsbyjs.com/docs/quick-start/ # name: Deploy Gatsby site to Pages on: # Runs on pushes targeting the default branch push: branches: [master] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: contents: read pages: write id-token: write # Allow one concurrent deployment concurrency: group: "pages" cancel-in-progress: true # Default to bash defaults: run: shell: bash jobs: # Build job build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Detect package manager id: detect-package-manager run: | if [ -f "${{ github.workspace }}/yarn.lock" ]; then echo "::set-output name=manager::yarn" echo "::set-output name=command::install" exit 0 elif [ -f "${{ github.workspace }}/package.json" ]; then echo "::set-output name=manager::npm" echo "::set-output name=command::ci" exit 0 else echo "Unable to determine packager manager" exit 1 fi - name: Setup Node uses: actions/setup-node@v3 with: node-version: "16" cache: ${{ steps.detect-package-manager.outputs.manager }} - name: Setup Pages id: pages uses: actions/configure-pages@v2 with: # Automatically inject pathPrefix in your Gatsby configuration file. # # You may remove this line if you want to manage the configuration yourself. static_site_generator: gatsby - name: Restore cache uses: actions/cache@v3 with: path: | public .cache key: ${{ runner.os }}-gatsby-build-${{ hashFiles('public') }} restore-keys: | ${{ runner.os }}-gatsby-build- - name: Install dependencies run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }} - name: Build with Gatsby env: PREFIX_PATHS: 'true' run: ${{ steps.detect-package-manager.outputs.manager }} run build - name: Upload artifact uses: actions/upload-pages-artifact@v1 with: path: ./public # Deployment job deploy: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest needs: build steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v1