Build and Deploy Sphinx site for support Salt ref docs to pages #116
This file contains hidden or 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
| # Workflow for building and deploying a Hugo site to GitHub Pages | |
| name: Build and Deploy Sphinx site for support Salt ref docs to pages | |
| on: | |
| push: | |
| branches: | |
| - '*' | |
| # 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 | |
| # Default to bash | |
| defaults: | |
| run: | |
| shell: bash | |
| jobs: | |
| # master HTML | |
| master-html: | |
| runs-on: ubuntu-24.04 | |
| container: ghcr.io/saltstack/salt-ci-containers/builddocs:latest | |
| env: | |
| DOC_BRANCH: master | |
| WEBSITE_POINT_RELEASE: master | |
| WEBSITE_RELEASE: master | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: 'true' | |
| - name: Checkout and prep Salt | |
| run: | | |
| git clone --depth 1 -b "${DOC_BRANCH}" https://github.com/saltstack/salt | |
| sed -i "s:^cffi==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^contextvars==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^immutables==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^rpm-vercmp==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| - name: Install Python prereqs | |
| run: | | |
| python3 -m venv venv | |
| source venv/bin/activate | |
| pip install -U pip setuptools wheel | |
| pip install -r salt/requirements/static/ci/py3.10/docs.lock && pip install -r salt/requirements/static/pkg/py3.10/linux.lock | |
| pip install jaraco.text==3.14.0 | |
| - name: Build docs | |
| run: | | |
| source venv/bin/activate | |
| ./build_html.sh | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: master-html | |
| path: ./public/ | |
| if-no-files-found: error | |
| retention-days: 1 | |
| # master PDF | |
| master-pdf: | |
| runs-on: ubuntu-24.04 | |
| container: ghcr.io/saltstack/salt-ci-containers/builddocs:latest | |
| env: | |
| DOC_BRANCH: master | |
| WEBSITE_POINT_RELEASE: master | |
| WEBSITE_RELEASE: master | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: 'true' | |
| - name: Checkout and prep Salt | |
| run: | | |
| git clone --depth 1 -b "${DOC_BRANCH}" https://github.com/saltstack/salt | |
| sed -i "s:^cffi==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^contextvars==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^immutables==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^rpm-vercmp==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| - name: Install Python prereqs | |
| run: | | |
| python3 -m venv venv | |
| source venv/bin/activate | |
| pip install -U pip setuptools wheel | |
| pip install -r salt/requirements/static/ci/py3.10/docs.lock && pip install -r salt/requirements/static/pkg/py3.10/linux.lock | |
| pip install jaraco.text==3.14.0 | |
| - name: Build docs | |
| run: | | |
| source venv/bin/activate | |
| ./build_pdf.sh | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: master-pdf | |
| path: ./public/ | |
| if-no-files-found: error | |
| retention-days: 1 | |
| # latest HTML | |
| latest-html: | |
| runs-on: ubuntu-24.04 | |
| container: ghcr.io/saltstack/salt-ci-containers/builddocs:latest | |
| env: | |
| BUILD_TYPE: latest | |
| DOC_BRANCH: 'v3008.2' | |
| WEBSITE_POINT_RELEASE: '3008.2' | |
| WEBSITE_RELEASE: latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: 'true' | |
| - name: Checkout and prep Salt | |
| run: | | |
| git clone --depth 1 -b "${DOC_BRANCH}" https://github.com/saltstack/salt | |
| sed -i "s:^cffi==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^contextvars==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^immutables==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^rpm-vercmp==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| - name: Install Python prereqs | |
| run: | | |
| python3 -m venv venv | |
| source venv/bin/activate | |
| pip install -U pip setuptools wheel | |
| pip install -r salt/requirements/static/ci/py3.10/docs.lock && pip install -r salt/requirements/static/pkg/py3.10/linux.lock | |
| pip install jaraco.text==3.14.0 | |
| - name: Build docs | |
| run: | | |
| source venv/bin/activate | |
| ./build_html.sh | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: latest-html | |
| path: ./public/ | |
| if-no-files-found: error | |
| retention-days: 1 | |
| # lastest PDF | |
| latest-pdf: | |
| runs-on: ubuntu-24.04 | |
| container: ghcr.io/saltstack/salt-ci-containers/builddocs:latest | |
| env: | |
| BUILD_TYPE: latest | |
| DOC_BRANCH: 'v3008.2' | |
| WEBSITE_POINT_RELEASE: '3008.2' | |
| WEBSITE_RELEASE: latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: 'true' | |
| - name: Checkout and prep Salt | |
| run: | | |
| git clone --depth 1 -b "${DOC_BRANCH}" https://github.com/saltstack/salt | |
| sed -i "s:^cffi==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^contextvars==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^immutables==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^rpm-vercmp==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| - name: Install Python prereqs | |
| run: | | |
| python3 -m venv venv | |
| source venv/bin/activate | |
| pip install -U pip setuptools wheel | |
| pip install -r salt/requirements/static/ci/py3.10/docs.lock && pip install -r salt/requirements/static/pkg/py3.10/linux.lock | |
| pip install jaraco.text==3.14.0 | |
| - name: Build docs | |
| run: | | |
| source venv/bin/activate | |
| ./build_pdf.sh | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: latest-pdf | |
| path: ./public/ | |
| if-no-files-found: error | |
| retention-days: 1 | |
| # latest-sts HTML | |
| latest-3008-html: | |
| runs-on: ubuntu-24.04 | |
| container: ghcr.io/saltstack/salt-ci-containers/builddocs:latest | |
| env: | |
| BUILD_TYPE: latest | |
| DOC_BRANCH: 'v3008.2' | |
| WEBSITE_POINT_RELEASE: '3008.2' | |
| WEBSITE_RELEASE: '3008' | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: 'true' | |
| - name: Checkout and prep Salt | |
| run: | | |
| git clone --depth 1 -b "${DOC_BRANCH}" https://github.com/saltstack/salt | |
| sed -i "s:^cffi==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^contextvars==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^immutables==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^rpm-vercmp==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| - name: Install Python prereqs | |
| run: | | |
| python3 -m venv venv | |
| source venv/bin/activate | |
| pip install -U pip setuptools wheel | |
| pip install -r salt/requirements/static/ci/py3.10/docs.lock && pip install -r salt/requirements/static/pkg/py3.10/linux.lock | |
| pip install jaraco.text==3.14.0 | |
| - name: Build docs | |
| run: | | |
| source venv/bin/activate | |
| ./build_html.sh | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: 3008-html | |
| path: ./public/ | |
| if-no-files-found: error | |
| retention-days: 1 | |
| # previous-lts html | |
| previous-3006-html: | |
| runs-on: ubuntu-24.04 | |
| container: ghcr.io/saltstack/salt-ci-containers/builddocs:latest | |
| env: | |
| BUILD_TYPE: previous | |
| DOC_BRANCH: 'v3006.27' | |
| WEBSITE_POINT_RELEASE: '3006.27' | |
| WEBSITE_RELEASE: '3006' | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: 'true' | |
| - name: Checkout and prep Salt | |
| run: | | |
| git clone --depth 1 -b "${DOC_BRANCH}" https://github.com/saltstack/salt | |
| find salt/requirements -name "linux*" | sort | |
| sed -i "s:^timelib==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^cffi==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^contextvars==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^immutables==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^rpm-vercmp==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| - name: Install Python prereqs | |
| run: | | |
| apt update && apt install libffi-dev -y | |
| python3 -m venv venv | |
| source venv/bin/activate | |
| pip install -U pip setuptools wheel | |
| pip install -r salt/requirements/static/ci/py3.10/docs.lock && pip install -r salt/requirements/static/pkg/py3.10/linux.lock | |
| pip install jaraco.text==3.14.0 | |
| - name: Build docs | |
| run: | | |
| source venv/bin/activate | |
| ./build_html.sh | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: 3006-html | |
| path: ./public/ | |
| if-no-files-found: error | |
| retention-days: 1 | |
| # previous-lts PDF | |
| previous-3006-pdf: | |
| runs-on: ubuntu-24.04 | |
| container: ghcr.io/saltstack/salt-ci-containers/builddocs:latest | |
| env: | |
| BUILD_TYPE: previous | |
| DOC_BRANCH: 'v3006.27' | |
| WEBSITE_POINT_RELEASE: '3006.27' | |
| WEBSITE_RELEASE: '3006' | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: 'true' | |
| - name: Checkout and prep Salt | |
| run: | | |
| git clone --depth 1 -b "${DOC_BRANCH}" https://github.com/saltstack/salt | |
| find salt/requirements -name "linux*" | sort | |
| sed -i "s:^timelib==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^cffi==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^contextvars==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^immutables==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| sed -i "s:^rpm-vercmp==.*::g" salt/requirements/static/pkg/py3.10/linux.lock | |
| - name: Install Python prereqs | |
| run: | | |
| apt update && apt install libffi-dev -y | |
| python3 -m venv venv | |
| source venv/bin/activate | |
| pip install -U pip setuptools wheel | |
| pip install -r salt/requirements/static/ci/py3.10/docs.lock && pip install -r salt/requirements/static/pkg/py3.10/linux.lock | |
| pip install jaraco.text==3.14.0 | |
| - name: Build docs | |
| run: | | |
| source venv/bin/activate | |
| ./build_pdf.sh | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: 3006-pdf | |
| path: ./public/ | |
| if-no-files-found: error | |
| retention-days: 1 | |
| single-tarball-site-archive: | |
| runs-on: ubuntu-24.04 | |
| needs: | |
| - master-html | |
| - master-pdf | |
| - latest-html | |
| - latest-pdf | |
| - latest-3008-html | |
| - previous-3006-html | |
| - previous-3006-pdf | |
| if: success() | |
| steps: | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v4 | |
| - name: Display all downloaded archives/artifacts | |
| run: | | |
| ls -lah | |
| echo " | |
| Listing *html/*..." | |
| ls -lah *html/* | |
| echo " | |
| Listing *pdf/*..." | |
| ls -lah *pdf/* | |
| - name: Create and populate docs-saltproject-io directory structure | |
| run: | | |
| echo " | |
| Creating docs-saltproject-io directory structure..." | |
| mkdir -p docs-saltproject-io/en | |
| mkdir -p docs-saltproject-io/en/pdf | |
| mkdir -p docs-saltproject-io/salt/install-guide/en | |
| mkdir -p docs-saltproject-io/salt/user-guide/en | |
| echo '<meta http-equiv="refresh" content="0; url=en/latest/contents.html" />' > docs-saltproject-io/index.html | |
| echo '<meta http-equiv="refresh" content="0; url=latest/contents.html" />' > docs-saltproject-io/en/index.html | |
| echo '<meta http-equiv="refresh" content="0; url=en/latest/index.html" />' > docs-saltproject-io/salt/install-guide/index.html | |
| echo '<meta http-equiv="refresh" content="0; url=latest/index.html" />' > docs-saltproject-io/salt/install-guide/en/index.html | |
| echo '<meta http-equiv="refresh" content="0; url=en/latest/index.html" />' > docs-saltproject-io/salt/user-guide/index.html | |
| echo '<meta http-equiv="refresh" content="0; url=latest/index.html" />' > docs-saltproject-io/salt/user-guide/en/index.html | |
| echo " | |
| Moving built docs to expected docs file paths..." | |
| mv *-html/* docs-saltproject-io/en/ | |
| mv *-pdf/pdf/* docs-saltproject-io/en/pdf/ | |
| - name: Download salt-install-guide and salt-user-guide | |
| run: | | |
| touch checksums.txt | |
| curl -o salt-install-guide.tar.gz -fsSL https://github.com/saltstack/salt-install-guide/releases/latest/download/salt-install-guide.tar.gz | |
| curl -fsSL https://github.com/saltstack/salt-install-guide/releases/latest/download/checksums.txt | tee --append checksums.txt | |
| curl -o salt-user-guide.tar.gz -fsSL https://github.com/saltstack/salt-user-guide/releases/latest/download/salt-user-guide.tar.gz | |
| curl -fsSL https://github.com/saltstack/salt-user-guide/releases/latest/download/checksums.txt | tee --append checksums.txt | |
| sha512sum -c checksums.txt --ignore-missing | |
| tar xvf salt-install-guide.tar.gz | |
| tar xvf salt-user-guide.tar.gz | |
| mv salt-install-guide docs-saltproject-io/salt/install-guide/en/latest | |
| mv salt-user-guide docs-saltproject-io/salt/user-guide/en/latest | |
| - name: Create tarball of docs | |
| run: | | |
| tar cvzf docs-saltproject-io.tar.gz docs-saltproject-io | |
| - name: Upload docs-saltproject-io.tar.gz | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: docs-saltproject-io | |
| path: docs-saltproject-io.tar.gz | |
| if-no-files-found: error | |
| retention-days: 1 | |
| - name: Upload docs-saltproject-io for GitHub Pages | |
| uses: actions/upload-pages-artifact@v3 | |
| if: success() && github.ref == 'refs/heads/main' | |
| with: | |
| path: ./docs-saltproject-io | |
| # Deployment job | |
| deploy: | |
| environment: | |
| name: github-pages | |
| url: ${{ steps.deployment.outputs.page_url }} | |
| runs-on: ubuntu-24.04 | |
| needs: | |
| - single-tarball-site-archive | |
| if: success() && github.ref == 'refs/heads/main' | |
| steps: | |
| - name: Deploy to GitHub Pages | |
| id: deployment | |
| uses: actions/deploy-pages@v4 |