mirror of
https://github.com/docker/docs.git
synced 2026-10-23 18:09:02 +03:00
API generation introduced in #26048 added roughly five minutes to site builds: median successful main-branch build-workflow duration rose from 4m 05s to 8m 48s across September 3–25. The pre-build command took 4m 41s–4m 53s in each of four jobs on the merge commit. Vendor the generated presentation model in `data/api-reference.json`, mark it as generated, and let Docker, Netlify, and local Hugo builds consume it directly. Keep the existing rendered-output checks. Move generator tests, strict spec validation, and a byte-for-byte regeneration check into `docker buildx bake validate-api-reference`, inheriting the shared Docker base stage. The target uses the pinned Vacuum release binary with Dockerfile ADD checksum verification and archive extraction instead of compiling Vacuum from source. The existing build workflow runs this target alongside the other validation matrix entries. Only this matrix entry is advisory; its failures do not block site builds or deployment. Validated locally with the Docker target, rejection of deliberately stale data, repeatable generation across directories, a production Hugo build and verification of 453 API HTML/Markdown page pairs, workflow syntax checks, and scoped documentation lint. The prebuilt-binary CI check passed in 1m 40s, down from 5m 15s with source compilation. Remote layer-cache settings were subsequently removed; local Go cache mounts remain. Generated by Codex
114 lines
3.3 KiB
YAML
114 lines
3.3 KiB
YAML
name: build
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
on:
|
|
push:
|
|
# needs push event on default branch otherwise cache is evicted when pull request is merged
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
|
|
env:
|
|
# Use edge release of buildx (latest RC, fallback to latest stable)
|
|
SETUP_BUILDX_VERSION: edge
|
|
SETUP_BUILDKIT_IMAGE: "moby/buildkit:latest"
|
|
|
|
permissions:
|
|
contents: read # to fetch code (actions/checkout)
|
|
|
|
jobs:
|
|
releaser:
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
-
|
|
name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4
|
|
with:
|
|
version: ${{ env.SETUP_BUILDX_VERSION }}
|
|
driver-opts: image=${{ env.SETUP_BUILDKIT_IMAGE }}
|
|
-
|
|
name: Build
|
|
uses: docker/bake-action@82490499d2e5613fcead7e128237ef0b0ea210f7 # v7
|
|
with:
|
|
files: |
|
|
docker-bake.hcl
|
|
targets: |
|
|
releaser-build
|
|
releaser-test
|
|
|
|
build:
|
|
runs-on: ubuntu-24.04
|
|
needs:
|
|
- releaser
|
|
steps:
|
|
-
|
|
name: Checkout
|
|
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
|
|
-
|
|
name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4
|
|
-
|
|
name: Build
|
|
uses: docker/bake-action@82490499d2e5613fcead7e128237ef0b0ea210f7 # v7
|
|
with:
|
|
source: .
|
|
files: |
|
|
docker-bake.hcl
|
|
targets: release
|
|
-
|
|
name: Check Cloudfront config
|
|
uses: docker/bake-action@82490499d2e5613fcead7e128237ef0b0ea210f7 # v7
|
|
with:
|
|
source: .
|
|
targets: aws-cloudfront-update
|
|
env:
|
|
DRY_RUN: true
|
|
AWS_REGION: us-east-1
|
|
AWS_CLOUDFRONT_ID: 0123456789ABCD
|
|
AWS_LAMBDA_FUNCTION: DockerDocsRedirectFunction-dummy
|
|
|
|
validate:
|
|
runs-on: ubuntu-24.04
|
|
continue-on-error: ${{ matrix.target == 'validate-api-reference' }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
target:
|
|
- lint
|
|
- vale
|
|
- test
|
|
- unused-media
|
|
- test-go-redirects
|
|
- dockerfile-lint
|
|
- validate-vendor
|
|
- validate-api-reference
|
|
steps:
|
|
-
|
|
name: Checkout
|
|
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
|
|
-
|
|
name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4
|
|
-
|
|
name: Validate
|
|
uses: docker/bake-action@82490499d2e5613fcead7e128237ef0b0ea210f7 # v7
|
|
with:
|
|
source: .
|
|
files: |
|
|
docker-bake.hcl
|
|
targets: ${{ matrix.target }}
|
|
-
|
|
name: Install reviewdog
|
|
if: ${{ matrix.target == 'vale' && github.event_name == 'pull_request' }}
|
|
uses: reviewdog/action-setup@d8a7baabd7f3e8544ee4dbde3ee41d0011c3a93f # v1.5.0
|
|
-
|
|
name: Run reviewdog for vale
|
|
if: ${{ matrix.target == 'vale' && github.event_name == 'pull_request' }}
|
|
run: |
|
|
cat ./tmp/vale.out | reviewdog -f=rdjsonl -name=vale -reporter=github-pr-annotations -filter-mode=added -level=info -fail-level=warning
|
|
env:
|
|
REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|