Skip to content

Build and Deploy Sphinx site for support Salt ref docs to pages #116

Build and Deploy Sphinx site for support Salt ref docs to pages

Build and Deploy Sphinx site for support Salt ref docs to pages #116

# 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