📒 Docs › Build #863
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
| # # | |
| # @type github workflow | |
| # @author Aetherinox | |
| # @url https://github.com/Aetherinox | |
| # @usage builds mkdocs from the main branch /docs/ folder and puts the compiled version | |
| # in the `gh-pages` branch. Is hosted using Github Pages. | |
| # | |
| # @update use the following commands to update mkdocs and the mkdocs-material theme: | |
| # pip install --upgrade mkdocs | |
| # pip install --upgrade --force-reinstall mkdocs-material | |
| # | |
| # @secrets secrets.SELF_TOKEN self github personal access token (fine-grained) | |
| # secrets.SELF_TOKEN_CL self github personal access token (classic) | |
| # secrets.NPM_TOKEN self npmjs access token | |
| # secrets.PYPI_API_TOKEN self Pypi API token (production site) - https://pypi.org/ | |
| # secrets.PYPI_API_TEST_TOKEN self Pypi API token (test site) - https://test.pypi.org/ | |
| # secrets.SELF_DOCKERHUB_TOKEN self Dockerhub token | |
| # secrets.CODECOV_TOKEN codecov upload token for nodejs projects | |
| # secrets.API_GEOLITE2_KEY maxmind API token | |
| # secrets.CF_ACCOUNT_ID cloudflare account id | |
| # secrets.CF_ACCOUNT_TOKEN cloudflare account token | |
| # secrets.ARTIFACTS_DOMAIN github artifacts domain name | |
| # secrets.ARTIFACTS_PORT github artifacts port | |
| # secrets.ARTIFACTS_GITHUB_SSH_PRIVATE_KEY github artifacts server ssh private key | |
| # secrets.ORG_TOKEN org github personal access token (fine-grained) | |
| # secrets.ORG_TOKEN_CL org github personal access token (classic) | |
| # secrets.ORG_DOCKERHUB_TOKEN org dockerhub secret | |
| # secrets.ORG_GITEA_TOKEN org gitea personal access token (classic) with package:write permission | |
| # secrets.BOT_GPG_KEY_ASC bot gpg private key (armored) | BEGIN PGP PRIVATE KEY BLOCK | |
| # secrets.BOT_GPG_KEY_B64 bot gpg private key (binary) converted to base64 | |
| # secrets.BOT_GPG_PASSPHRASE bot gpg private key passphrase | |
| # secrets.DISCORD_WEBHOOK_CHAN_GITHUB_RELEASES discord webhook to report release notifications from github to discord | |
| # secrets.DISCORD_WEBHOOK_CHAN_GITHUB_WORKFLOWS discord webhook to report workflow notifications from github to discord | |
| # secrets.DISCORD_WEBHOOK_CHAN_GITHUB_UPDATES discord webhook to report activity notifications from github to discord | |
| # | |
| # @local these workflows can be tested locally through the use of `act` | |
| # https://github.com/nektos/act | |
| # Extract act to folder | |
| # Add system env var with path to act.exe | |
| # Run the commands: | |
| # git pull https://github.com/username/repo | |
| # act -W .github/workflows/documentation.yml -P ubuntu-latest=catthehacker/ubuntu:full-22.04 | |
| # act -W .github/workflows/documentation.yml -s TOKEN_CL=XXXXXXXXXX --pull=false | |
| # # | |
| name: '📒 Docs › Build' | |
| run-name: '📒 Docs › Build' | |
| # # | |
| # triggers | |
| # # | |
| on: | |
| # # | |
| # Trigger › Release | |
| # | |
| # update documentation every time a release is made | |
| # # | |
| release: | |
| types: | |
| - published | |
| # # | |
| # Trigger › Push | |
| # | |
| # update documentation every time a file in docs/ folder is modified | |
| # # | |
| push: | |
| paths: | |
| - docs/** | |
| # # | |
| # Trigger › Workflow Dispatch | |
| # | |
| # If any values are not provided, will use fallback env variable | |
| # # | |
| workflow_dispatch: | |
| inputs: | |
| # # | |
| # Image Name | |
| # | |
| # used in github image path | |
| # ghcr.io/${{ env.IMAGE_GHCR_AUTHOR }}/${{ env.IMAGE_NAME }} | |
| # # | |
| WORKING_DIR: | |
| description: '📁 Docs Folder' | |
| required: true | |
| default: './docs/site' | |
| type: string | |
| # # | |
| # Discord Bot › Name | |
| # | |
| # The discord bot name | |
| # # | |
| DISCORD_BOT_NAME: | |
| description: '🤖 Bot Name' | |
| required: true | |
| default: 'Europa' | |
| type: string | |
| # # | |
| # Discord Bot › Avatar | |
| # | |
| # The discord bot avatar to show; let's use some weird picture | |
| # # | |
| DISCORD_BOT_AVATAR: | |
| description: '🤖 Avatar URL' | |
| required: true | |
| default: 'https://i.imgur.com/UqwMom1.jpeg' | |
| type: string | |
| # # | |
| # Discord Bot › Author Icon URL | |
| # | |
| # A small picture shown to the top-right of each post | |
| # # | |
| DISCORD_BOT_EMBED_AUTHOR_ICON: | |
| description: '🤖 Embed Author Icon' | |
| required: true | |
| default: 'https://avatars.githubusercontent.com/u/200161462' | |
| type: string | |
| # # | |
| # Discord Bot › Thumbnail URL | |
| # | |
| # A small picture shown to the top-right of each post | |
| # # | |
| DISCORD_BOT_EMBED_THUMBNAIL: | |
| description: '🤖 Embed Thumbnail URL' | |
| required: true | |
| default: 'https://avatars.githubusercontent.com/u/200161462' | |
| type: string | |
| # # | |
| # Trigger › Cron | |
| # | |
| # update documentation every X hours | |
| # # | |
| # schedule: | |
| # - cron: "0 */12 * * *" | |
| # # | |
| # environment variables | |
| # # | |
| env: | |
| WORKING_DIR: ${{ github.event.inputs.WORKING_DIR || './docs/site' }} | |
| DISCORD_BOT_NAME: ${{ github.event.inputs.DISCORD_BOT_NAME || 'Europa' }} | |
| DISCORD_BOT_AVATAR: ${{ github.event.inputs.DISCORD_BOT_AVATAR || 'https://i.imgur.com/UqwMom1.jpeg' }} | |
| DISCORD_BOT_EMBED_AUTHOR_ICON: ${{ github.event.inputs.DISCORD_BOT_EMBED_AUTHOR_ICON || 'https://avatars.githubusercontent.com/u/200161462' }} | |
| DISCORD_BOT_EMBED_THUMBNAIL: ${{ github.event.inputs.DISCORD_BOT_EMBED_THUMBNAIL || 'https://avatars.githubusercontent.com/u/200161462' }} | |
| ASSIGN_USER: Aetherinox | |
| BOT_NAME_1: BinaryServ | |
| BOT_NAME_DEPENDABOT: dependabot[bot] | |
| BOT_NAME_RENOVATE: renovate[bot] | |
| GPG_KEY_BASE64: ${{ secrets.ADMINSERV_GPG_KEY_B64 }} | |
| GPG_KEY_PASSPHRASE: ${{ secrets.ADMINSERV_GPG_PASSPHRASE }} | |
| # # | |
| # jobs | |
| # # | |
| jobs: | |
| build-docs: | |
| runs-on: ubuntu-latest | |
| # runs-on: apollo-x64 | |
| timeout-minutes: 10 | |
| permissions: | |
| contents: write | |
| pages: write | |
| environment: | |
| name: Orion | |
| steps: | |
| # # | |
| # Documentation › Checkout | |
| # # | |
| - name: >- | |
| ☑️ Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| # # | |
| # Documentation › Job Information | |
| # # | |
| - name: >- | |
| 🔄 Load Job | |
| uses: qoomon/actions--context@v4 | |
| id: 'context' | |
| # # | |
| # Documentation › Start | |
| # # | |
| - name: >- | |
| ✅ Start | |
| run: | | |
| echo "" | |
| echo "" | |
| echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――" | |
| echo " Starting Job ${{ steps.context.outputs.job_name }}" | |
| echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――" | |
| YEAR="$(date +'%Y')" | |
| echo "YEAR=${YEAR}" >> $GITHUB_ENV | |
| NOW="$(date +'%m-%d-%Y %H:%M:%S')" # 02-25-2025 12:49:48 | |
| echo "NOW=${NOW}" >> $GITHUB_ENV | |
| NOW_SHORT="$(date +'%m-%d-%Y')" # 02-25-2025 | |
| echo "NOW_SHORT=${NOW_SHORT}" >> $GITHUB_ENV | |
| NOW_LONG="$(date +'%m-%d-%Y %H:%M')" # 02-25-2025 12:49 | |
| echo "NOW_LONG=${NOW_LONG}" >> $GITHUB_ENV | |
| NOW_DOCKER="$(date +'%Y%m%d')" # 20250225 | |
| echo "NOW_DOCKER=${NOW_DOCKER}" >> $GITHUB_ENV | |
| NOW_DOCKER_TS="$(date -u +'%FT%T.%3NZ')" # 2025-02-25T12:50:11.569Z | |
| echo "NOW_DOCKER_TS=${NOW_DOCKER_TS}" >> $GITHUB_ENV | |
| SHA1="$(git rev-parse HEAD)" # 71fad013cfce9116ec62779e4a7e627fe4c33627 | |
| echo "SHA1=${SHA1}" >> $GITHUB_ENV | |
| SHA1_GH="$(echo ${GITHUB_SHA})" # 71fad013cfce9116ec62779e4a7e627fe4c33627 | |
| echo "SHA1_GH=${SHA1_GH}" >> $GITHUB_ENV | |
| PKG_VER_1DIGIT="$(echo ${{ env.IMAGE_VERSION }} | cut -d '.' -f1-1)" # 15.52.35 > 15 | |
| echo "PKG_VER_1DIGIT=${PKG_VER_1DIGIT}" >> $GITHUB_ENV | |
| PKG_VER_2DIGIT="$(echo ${{ env.IMAGE_VERSION }} | cut -d '.' -f1-2)" # 15.52.35 > 15.52 | |
| echo "PKG_VER_2DIGIT=${PKG_VER_2DIGIT}" >> $GITHUB_ENV | |
| echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――" | |
| echo "" | |
| echo "" | |
| sudo apt -qq update | |
| sudo apt -qq install tree | |
| echo "" | |
| echo "" | |
| echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――" | |
| echo "" | |
| echo "" | |
| echo " Runner .............. ${{ runner.name }}" | |
| echo " Workflow ............ ${{ github.workflow }} (#${{ github.workflow_ref }})" | |
| echo " Run Number .......... ${{ github.run_number }}" | |
| echo " Ref ................. ${{ github.ref }}" | |
| echo " Ref Name ............ ${{ github.ref_name }}" | |
| echo " Event Name .......... ${{ github.event_name }}" | |
| echo " Repo ................ ${{ github.repository }}" | |
| echo " Repo Owner .......... ${{ github.repository_owner }}" | |
| echo " Run ID .............. https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
| echo " Triggered By ........ ${{ github.actor }}" | |
| echo " SHA 1 (GITHUB_SHA) .. ${GITHUB_SHA}" | |
| echo " SHA 2 (github.sha) .. ${{ github.sha }}" | |
| echo " SHA 3 (env.SHA1) .... ${SHA1}" | |
| echo " SHA 4 (env.SHA1_GH) . ${SHA1_GH}" | |
| echo " Workspace ........... ${{ github.workspace }}" | |
| echo " PWD ................. ${PWD}" | |
| echo " Job Name ............ ${{ steps.context.outputs.job_name }}" | |
| echo " Job ID .............. ${{ steps.context.outputs.job_id }}" | |
| echo " Job URL ............. ${{ steps.context.outputs.job_url }}" | |
| echo " Run ID .............. ${{ steps.context.outputs.run_id }}" | |
| echo " Run Attempt ......... ${{ steps.context.outputs.run_attempt }}" | |
| echo " Run Number .......... ${{ steps.context.outputs.run_number }}" | |
| echo " Run URL ............. ${{ steps.context.outputs.run_url }}" | |
| echo " Run Env ............. ${{ steps.context.outputs.environment }}" | |
| echo " Run Env URL ......... ${{ steps.context.outputs.environment_url }}" | |
| echo " Run Deployment ...... ${{ steps.context.outputs.deployment_id }}" | |
| echo " Run Deployment URL .. ${{ steps.context.outputs.deployment_url }}" | |
| echo " Run Deployment ...... ${{ steps.context.outputs.deployment_id }}" | |
| echo " Run Runner Name ..... ${{ steps.context.outputs.runner_name }}" | |
| echo " Run Runner ID ....... ${{ steps.context.outputs.runner_id }}" | |
| echo " Year ................ ${YEAR}" | |
| echo " Now ................. ${NOW}" | |
| echo " Now (Short) ......... ${NOW_SHORT}" | |
| echo " Now (Long) .......... ${NOW_LONG}" | |
| echo " Now (Docker) ........ ${NOW_DOCKER}" | |
| echo " Now (Docker TS) ..... ${NOW_DOCKER_TS}" | |
| echo "" | |
| echo "" | |
| echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――" | |
| echo "" | |
| echo "" | |
| tree -I 'node_modules|.git|blocklists' --prune | |
| echo "" | |
| echo "" | |
| echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――" | |
| echo "" | |
| echo "" | |
| # # | |
| # Documentation › Build › Setup Python | |
| # # | |
| - name: >- | |
| 🐍 Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: 3.x | |
| # # | |
| # Build Documentation | |
| # # | |
| - name: >- | |
| 📕 Build Documentation | |
| run: | | |
| export DOCS_NAME=${{ secrets.DOCS_NAME || 'ConfigServer Firewall' }} | |
| export DOCS_SECRET_L1=${{ secrets.DOCS_SECRET_L1 }} | |
| export DOCS_SECRET_L2=${{ secrets.DOCS_SECRET_L2 }} | |
| export GH_TOKEN=${{ secrets.ADMINSERV_TOKEN }} | |
| pip install mkdocs | |
| pip install mkdocs-material | |
| pip install mike | |
| pip install mkdocs-embed-external-markdown | |
| pip install mkdocs-git-committers-plugin-2 | |
| pip install mkdocs-encryptcontent-plugin | |
| pip install mkdocs-redirects mkdocs-glightbox pymdown-extensions mkdocs-git-revision-date-localized-plugin mkdocs-git-authors-plugin mkdocs-link-embeds-plugin | |
| cd docs | |
| mkdocs build | |
| dir | |
| env: | |
| GH_TOKEN: ${{ secrets.ADMINSERV_TOKEN }} | |
| # # | |
| # Documentation › Build › Deploy | |
| # # | |
| - name: >- | |
| 💽 Deploy | |
| uses: peaceiris/actions-gh-pages@v4 | |
| with: | |
| personal_token: ${{ secrets.ADMINSERV_TOKEN_CL }} | |
| publish_dir: "${{ env.WORKING_DIR }}" | |
| # # | |
| # Documentation › Build › Get Weekly Commits | |
| # # | |
| - name: >- | |
| 🕛 Get Weekly Commit List | |
| run: | | |
| echo 'WEEKLY_COMMITS<<EOF' >> $GITHUB_ENV | |
| git log --format="[\`%h\`](${{ github.server_url }}/${{ github.repository }}/commit/%H) %s - %an" --since=7.days >> $GITHUB_ENV | |
| echo 'EOF' >> $GITHUB_ENV | |
| # # | |
| # Documentation › Verbose › List Tree | |
| # # | |
| - name: >- | |
| 🌲 Verbose › Tree Listing | |
| run: | | |
| echo "" | |
| echo "" | |
| echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――" | |
| echo " 🌲 TREE LISTING" | |
| echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――" | |
| echo "" | |
| echo " PWD ......................................... ${PWD}" | |
| echo " GITHUB.WORKSPACE ............................ ${{ github.workspace }}" | |
| echo "" | |
| echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――" | |
| tree -I 'node_modules|.git|blocklists' --prune | |
| echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――" | |
| echo "" | |
| echo "" |