diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 000000000..1d3574487 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,34 @@ +--- +name: 'docs' + +# yamllint disable-line rule:truthy +on: + push: + branches: + - master + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: Cloning repo + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Generate documentation + env: + BOT_GITHUB_USERNAME: ${{ secrets.HOMEBREW_GITHUB_USERNAME }} + BOT_GITHUB_API_TOKEN: ${{ secrets.HOMEBREW_GITHUB_API_TOKEN }} + run: | + git config --global user.name 'Dokku Bot' + git config --global user.email no-reply@dokku.com + + curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg + sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null + sudo apt update + sudo apt install gh -y + + gh auth login --with-token <<<"$BOT_GITHUB_API_TOKEN" + contrib/build-docs diff --git a/contrib/build-docs b/contrib/build-docs index 5c03e7992..c98489edb 100755 --- a/contrib/build-docs +++ b/contrib/build-docs @@ -9,7 +9,7 @@ main() { cp -r docs docs-main echo "====> Fetching latest docs" - git clone https://github.com/dokku/docs.git tmp/docs-build + git clone -q https://github.com/dokku/docs.git tmp/docs-build echo "====> Processing version: latest" rm -rf tmp/docs-build/docs @@ -113,9 +113,26 @@ main() { done python contrib/sort-mkdocs-versions + + echo "====> Cleanup main repo" rm -rf docs mv docs-main docs git checkout -- mkdocs.yml docs + + if [[ "$(git -C tmp/docs-build ls-files -dmo)" == "docs/sitemap.xml.gz" ]]; then + echo " ! No doc changes found" + git -C tmp/docs-build checkout -- docs/sitemap.xml.gz + else + echo "====> Pushing docs" + git -C tmp/docs-build add . + git -C tmp/docs-build commit -m "chore: regenerate docs" + + if [[ -n "$BOT_GITHUB_USERNAME" ]] && [[ -n "$BOT_GITHUB_API_TOKEN" ]]; then + git -C tmp/docs-build remote set-url origin "https://$BOT_GITHUB_USERNAME:$BOT_GITHUB_API_TOKEN@github.com/dokku/docs.git" + fi + + git -C tmp/docs-build push origin master + fi } main "$@"