From 4f614a80682037c381491d5d20fed091dd30cf8d Mon Sep 17 00:00:00 2001 From: Tim Martin Date: Fri, 17 Nov 2023 22:42:28 +0000 Subject: [PATCH] Automatically publish docs to GH Pages on merge to main --- .github/workflows/blossom-docs.yml | 107 +++++++++++++++++++++++++++++ docs_input/conf.py.in | 5 +- 2 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/blossom-docs.yml diff --git a/.github/workflows/blossom-docs.yml b/.github/workflows/blossom-docs.yml new file mode 100644 index 00000000..e46dec0b --- /dev/null +++ b/.github/workflows/blossom-docs.yml @@ -0,0 +1,107 @@ +# Copyright (c) 2020-2023, NVIDIA CORPORATION. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Simple workflow for deploying static content to GitHub Pages +name: Build Docs and deploy to Github Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: ["main"] + + # 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 only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + Authorization: + name: Authorization + runs-on: blossom + outputs: + args: ${{ env.args }} + + # This job only runs for pull request merges or manually via the Actions tab + if: | + contains( 'cliffburdick,awthomp,tbensonatl,tylera-nvidia,luitjens,tmartin-gh,', format('{0},', github.actor)) + steps: + - name: Check if comment is issued by authorized person + run: blossom-ci + env: + OPERATION: 'AUTH' + REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO_KEY_DATA: ${{ secrets.BLOSSOM_KEY }} + + Vulnerability-scan: + name: Vulnerability scan + needs: [Authorization] + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + repository: ${{ fromJson(needs.Authorization.outputs.args).repo }} + ref: ${{ fromJson(needs.Authorization.outputs.args).ref }} + lfs: 'true' + - name: Run blossom action + uses: NVIDIA/blossom-action@main + env: + REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO_KEY_DATA: ${{ secrets.BLOSSOM_KEY }} + with: + args1: ${{ fromJson(needs.Authorization.outputs.args).args1 }} + args2: ${{ fromJson(needs.Authorization.outputs.args).args2 }} + args3: ${{ fromJson(needs.Authorization.outputs.args).args3 }} + + deploy: + name: Deploy Github Pages + needs: [Vulnerability-scan] + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + container: + image: ghcr.io/nvidia/matx/build:ubuntu22.04-cuda12.2.2 + credentials: + username: ${{ secrets.DOCS_TOKEN_NAME }} + password: ${{ secrets.DOCS_TOKEN }} + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Build Docs + run: | + mkdir build + cd build + cmake .. -DMATX_BUILD_DOCS=ON + make + - name: Setup Pages + uses: actions/configure-pages@v3 + - name: Upload artifact + uses: actions/upload-pages-artifact@v2 + with: + path: 'build/docs_input/sphinx/' + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 + diff --git a/docs_input/conf.py.in b/docs_input/conf.py.in index 9d8de944..cdc8e84f 100644 --- a/docs_input/conf.py.in +++ b/docs_input/conf.py.in @@ -15,18 +15,19 @@ # import os # import sys # sys.path.insert(0, os.path.abspath('.')) +import datetime # -- Project information ----------------------------------------------------- project = 'matx' -copyright = '2021, Nvidia' +copyright = '2021-2023, Nvidia' author = 'Nvidia' # The short X.Y version version = '' # The full version, including alpha/beta/rc tags -release = '' +release = f'{datetime.datetime.now()}' # -- General configuration ---------------------------------------------------