#2 Incorporating the CFA convention for aggregated datasets into CF #527
Workflow file for this run
This file contains 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
# | |
# GitHub Actions Workflow for building and publishing the CF conventions and | |
# conformance docs. | |
# | |
# Pull request events against the main branch trigger jobs to build the | |
# documents. If successful, the resulting html and pdf files are uploaded as | |
# artifacts to make it easier to preview the impacts of a PR on the | |
# documentation. | |
# | |
# When a PR is accepted and merged into main, the documents are built and | |
# published to the root directory of the gh-pages branch. | |
# | |
# When a GitHub release is published, the documents are built and published to | |
# on the gh-pages branch in a directory named after the release (e.g. v1.9.0/). | |
# | |
# For more information on the actions used in this workflow, please see: | |
# https://github.com/actions/checkout | |
# https://github.com/Analog-inc/asciidoctor-action | |
# https://github.com/actions/upload-artifact | |
# https://github.com/actions/download-artifact | |
# | |
name: Asciidoctor Build Workflow | |
on: | |
# manually run workflow | |
workflow_dispatch: | |
# trigger on PR event against main (will not run publish job) | |
pull_request: | |
branches: [ main ] | |
# Trigger on a push to main (a PR is merged), or when a release is | |
# published on github. These will run the publish job. | |
push: | |
branches: | |
- main | |
# Trigger when a GitHub release is published. | |
release: | |
types: | |
- published | |
jobs: | |
# Job to build cf-conventions.html, cf-conventions.pdf | |
build_conventions_and_conformance: | |
name: Build cf-conventions and conformance html and pdf | |
runs-on: ubuntu-latest | |
steps: | |
# Check out PR | |
- uses: actions/checkout@v4 | |
# If it is release event, tag for final | |
- name: If it is a release add the "final" tag and date timestamp formatting | |
if: github.event_name == 'release' | |
run: | | |
echo "CF_FINAL=True" >> "$GITHUB_ENV" | |
# Build cf-conventions.html using the Analog-inc asciidoctor-action | |
- name: Make ALL | |
uses: Analog-inc/asciidoctor-action@v1 | |
with: | |
shellcommand: 'make all' | |
- name: Copy index.html | |
run: | | |
sudo cp -p .github/gh-pages/index.html build/ | |
# Upload artifact containing cf-conventions.html, cf-conventions.pdf | |
- name: Save cf-conventions and conformance docs | |
uses: actions/upload-artifact@v4 | |
with: | |
name: convention_and_conformance_docs | |
path: build/ | |
# Use artifacts from the build_conventions, build_conformance, and | |
# images_artifact jobs to update the gh-pages branch. The location of the | |
# files to be updated depend on whether the job it triggered from a PR merge | |
# into main (files in the base directory are updated), or if the job is | |
# triggered by the publication of a release on github (new files are created | |
# in a directory named after the release name). | |
publish: | |
name: Release cf-conventions and conformance html and pdf | |
# Do not run on pull requests | |
if: github.event_name != 'pull_request' | |
# Wait for the build artifacts to become available | |
needs: [build_conventions_and_conformance] | |
runs-on: ubuntu-latest | |
steps: | |
# Checkout gh-pages branch | |
- uses: actions/checkout@v4 | |
with: | |
ref: 'gh-pages' | |
# Will new docs go into root, or into a directory named after the | |
# release? | |
- name: Determine where the new documents should live | |
run: | | |
if [[ ${{ github.event_name }} == 'release' ]]; then | |
# ${GITHUB_REF##*/} -> turns refs/tags/vM.m.p into vM.m.p | |
echo "TARGET_DIR=${GITHUB_REF##*/}" >> "$GITHUB_ENV" | |
else | |
echo "TARGET_DIR=." >> "$GITHUB_ENV" | |
fi | |
# Obtain the build artifacts from the previous jobs and place them in the | |
# build/ directory | |
- uses: actions/download-artifact@v4 | |
with: | |
name: convention_and_conformance_docs | |
path: build/ | |
# If we are doing a release, we need to create the release directory | |
- name: Make release directory | |
if: github.event_name == 'release' | |
run: mkdir -p ${{ env.TARGET_DIR }} | |
# If we are not doing a release, let's clean out the previous images | |
# directory in the root directory | |
- name: Remove old images directory | |
if: github.event_name != 'release' | |
run: rm -rf ${{ env.TARGET_DIR }}/images | |
- name: Copy conventions and conformance documents | |
run: | | |
cp -p build/cf-conventions.html ${{ env.TARGET_DIR }}/ | |
cp -p build/cf-conventions.pdf ${{ env.TARGET_DIR }}/ | |
cp -p build/conformance.html ${{ env.TARGET_DIR }}/ | |
cp -p build/conformance.pdf ${{ env.TARGET_DIR }}/ | |
cp -p build/index.html ${{ env.TARGET_DIR }}/ | |
# Remove the directory that held the artifacts so that it does not get | |
# committed to the gh-pages branch | |
- name: Remove artifact directory | |
run: rm -rf build/ | |
# If we are doing a release, update the index.html file to reflect the new | |
# latest release version. | |
- name: Update release index.html to point to new release | |
if: github.event_name == 'release' | |
run: | | |
sed -i s/Latest/"${GITHUB_REF##*/}"/ ${{ env.TARGET_DIR }}/index.html; | |
# Stage all changed files to git | |
- name: Add all changes to git | |
run: git add --all | |
# Configure git to use the built-in repo credentials, commit changes, and | |
# push to the gh-pages branch | |
- name: Commit changes and push to gh-pages branch | |
run: | | |
git config user.name github-actions | |
git config user.email [email protected] | |
git commit -m "Auto-generated from ${GITHUB_REPOSITORY}@${GITHUB_SHA}" | |
git push |