Skip to content

Build and Deploy Documentation (main) #3036

Build and Deploy Documentation (main)

Build and Deploy Documentation (main) #3036

Workflow file for this run

name: Build and Deploy Documentation
run-name: ${{ format('{0} ({1})', github.workflow, github.event.inputs.build-refname || 'all') }}
on:
workflow_dispatch:
inputs:
build-refname:
description: Enter git refname to build (e.g., 1.0.x).
required: false
build-version:
description: Enter the version being build (e.g. 1.0.3-SNAPSHOT)
required: false
push:
branches: docs-build
permissions: read-all
jobs:
build-and-deploy-docs:
name: Build and Deploy Documentation
if: github.repository_owner == 'spring-projects'
runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }}
steps:
- name: Check Out
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Fetch Main Branch
run: git fetch origin ${{ github.event.repository.default_branch }}:main
- name: Set Up Node
uses: actions/setup-node@v4
with:
node-version: 20
- name: Check Out 'package.json' From Main
run: node run.js --only-checkout
- name: Cache Files
uses: actions/cache@v4
with:
key: antora-${{ hashFiles('package-lock.json', 'antora-playbook.yml') }}
path: |
~/.npm
~/.cache/antora
- name: Install and Run Antora
env:
ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }}
ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }}
COMMERCIAL_REPO_USERNAME: ${{ secrets.COMMERCIAL_ARTIFACTORY_RO_USERNAME }}
COMMERCIAL_REPO_PASSWORD: ${{ secrets.COMMERCIAL_ARTIFACTORY_RO_PASSWORD }}
COMMERCIAL_SNAPSHOT_REPO_URL: ${{ vars.COMMERCIAL_SNAPSHOT_REPO_URL }}
COMMERCIAL_RELEASE_REPO_URL: ${{ vars.COMMERCIAL_RELEASE_REPO_URL }}
BUILD_REFNAME: ${{ github.event.inputs.build-refname }}
BUILD_VERSION: ${{ github.event.inputs.build-version }}
run: node run.js --no-checkout
- name: Sync OSS Documentation
if: ${{ !vars.COMMERCIAL }}
uses: spring-io/spring-doc-actions/[email protected]
with:
docs-username: ${{ secrets.DOCS_USERNAME }}
docs-host: ${{ secrets.DOCS_HOST }}
docs-ssh-key: ${{ secrets.DOCS_SSH_KEY }}
docs-ssh-host-key: ${{ secrets.DOCS_SSH_HOST_KEY }}
httpdocs-path: /spring-boot/antora/
env:
BUILD_REFNAME: ${{ github.event.inputs.build-refname }}
BUILD_VERSION: ${{ github.event.inputs.build-version }}
- name: Bust OSS Cloudflare Cache
if: ${{ !vars.COMMERCIAL }}
uses: spring-io/spring-doc-actions/[email protected]
with:
context-root: spring-boot
context-path: /
cloudflare-zone-id: ${{ secrets.CLOUDFLARE_ZONE_ID }}
cloudflare-cache-token: ${{ secrets.CLOUDFLARE_CACHE_TOKEN }}
- name: Authenticate for commercial distribution
if: ${{ vars.COMMERCIAL }}
uses: 'google-github-actions/[email protected]'
with:
credentials_json: '${{ secrets.COMMERCIAL_DOCS_GCP_BUCKET_JSON }}'
- name: Sync commercial Documentation
if: ${{ vars.COMMERCIAL }}
uses: 'google-github-actions/[email protected]'
with:
path: 'build/site'
destination: '${{ vars.COMMERCIAL_DOCS_HOST }}/spring-boot'
parent: false
- name: Send Notification
if: failure()
uses: ./.github/actions/send-notification
with:
run-name: ${{ vars.COMMERCIAL && format('{0} | Build and Deploy Commerical Docs', github.ref_name) || format('{0} | Build and Deploy OSS Docs', github.ref_name) }}
status: ${{ job.status }}
webhook-url: ${{ secrets.GOOGLE_CHAT_WEBHOOK_URL }}