diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index bea1575ed9..d54a03bdb4 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -7,6 +7,15 @@ on: pull_request: paths: - 'docs/**' + # A change to this workflow should be exercised by this workflow. + - '.github/workflows/docs.yml' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + # Only the newest push to a pull request is worth previewing. Pushes to main are never + # cancelled, so a publish cannot be interrupted by the next docs merge. + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + jobs: test: runs-on: ubuntu-latest @@ -22,62 +31,35 @@ jobs: run: npm ci - name: Test Documentation Links run: npm run test:docs - test-with-website: - runs-on: ubuntu-latest - name: Test Documentation with website - steps: - - name: Checkout - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - path: 'flowfuse' - - name: Check out website repository - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - repository: 'FlowFuse/website' - path: 'website' - - name: Generate a token - id: generate_token - uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0 - with: - app-id: ${{ secrets.GH_BOT_APP_ID }} - private-key: ${{ secrets.GH_BOT_APP_KEY }} - owner: ${{ github.repository_owner }} - repositories: blueprint-library - - name: Check out FlowFuse/blueprint-library repository (to access the blueprints) - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - repository: 'FlowFuse/blueprint-library' - ref: main - path: 'blueprint-library' - token: ${{ steps.generate_token.outputs.token }} - - name: Cache image pipeline output - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - key: img-pipeline-cache - path: website/_site/img - - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 - with: - cache: 'npm' - cache-dependency-path: './website/package-lock.json' - - run: npm run docs - working-directory: 'website' - - run: npm run blueprints - working-directory: 'website' - - name: Install Dependencies - run: npm install - working-directory: 'website' - - name: Build the forge - run: npm run build:nuxt:skip-images - working-directory: 'website' - - uses: untitaker/hyperlink@9375bc4063712ad490d5eb3d54df0b6aade15e54 # 0.3.2 - with: - args: website/nuxt/dist/ --check-anchors --sources website/src + # The build lives in FlowFuse/github-actions-workflows so this repository does not carry a + # second copy of it, and FlowFuse/website's own CI calls the same definition. The release + # job there moves build_website/v1 on each release, so build changes are picked up here. + website: + name: Build the website with these docs + permissions: + contents: read + deployments: write + pull-requests: write + uses: FlowFuse/github-actions-workflows/.github/workflows/build_website.yml@build_website/v1 + with: + docs_repository: ${{ github.repository }} + docs_ref: ${{ github.sha }} + # Pull requests from forks receive no secrets, so they get the build and the link + # check without an upload. + deploy_preview: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository }} + preview_alias: docs-pr-${{ github.event.pull_request.number }} + pr_number: ${{ github.event.pull_request.number || 0 }} + secrets: + ci_app_id: ${{ secrets.GH_BOT_APP_ID }} + ci_app_key: ${{ secrets.GH_BOT_APP_KEY }} + netlify_auth_token: ${{ secrets.NETLIFY_AUTH_TOKEN }} + netlify_site_id: ${{ secrets.NETLIFY_SITE_ID }} publish: if: github.ref == 'refs/heads/main' runs-on: ubuntu-latest needs: - test - - test-with-website + - website name: Publish Documentation steps: - name: Generate token @@ -88,7 +70,7 @@ jobs: private-key: ${{ secrets.GH_BOT_APP_KEY }} owner: ${{ github.repository_owner }} repositories: website - + - name: Trigger website rebuild uses: benc-uk/workflow-dispatch@31e2b3319479a63f0ab15bf800eff9e913504e26 # v1.3.2 with: