continuous-intergration/publish-docs #1160
This file contains 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
# The workflow has write access, so it needs to be isolated for security reasons from pull request-based workflows, | |
# which may be triggered from forked repositories. | |
name: continuous-intergration/publish-docs | |
on: | |
workflow_run: | |
workflows: | |
- continuous-integration | |
types: | |
- completed | |
jobs: | |
publish-docs: | |
if: > | |
github.event.workflow_run.event == 'push' && | |
github.event.workflow_run.head_branch == 'master' && | |
github.event.workflow_run.conclusion == 'success' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 100 | |
- name: Download Docs | |
uses: ./.github/download-artifact | |
with: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
ARTIFACT_NAME: docs-data | |
DOWNLOAD_DIR: crate-docs | |
- name: Add key to allow access to repository | |
env: | |
SSH_AUTH_SOCK: /tmp/ssh_agent.sock | |
run: | | |
mkdir -p ~/.ssh | |
ssh-keyscan github.com >> ~/.ssh/known_hosts | |
echo "${{ secrets.GH_PAGES_DEPLOY }}" > ~/.ssh/id_rsa | |
chmod 600 ~/.ssh/id_rsa | |
cat <<EOT >> ~/.ssh/config | |
Host github.com | |
HostName github.com | |
IdentityFile ~/.ssh/id_rsa | |
EOT | |
- name: Push docs | |
run: | | |
# Set git config | |
git config user.email "actions@github.com" | |
git config user.name "actions" | |
git fetch origin gh-pages | |
# saving README and docs | |
cp -r ./crate-docs/ /tmp/doc/ | |
cp ./README.md /tmp/doc/ | |
cp -r ./.images/ /tmp/doc/ | |
git checkout gh-pages | |
mv _config.yml /tmp/doc/ | |
# remove everything and restore generated docs, README and Jekyll config | |
rm -rf ./* | |
rm -rf ./.images | |
mv /tmp/doc/* . | |
mv /tmp/doc/.images . | |
# Upload files | |
git add --all --force | |
git status | |
# `git commit` has an exit code of > 0 if there is nothing to commit. | |
# This unfortunately causes Github to exit immediately and mark this | |
# job as failed subsequently. | |
# We don't want to mark the entire job as failed if there's nothing to | |
# publish though, hence the `|| true`. | |
git commit -m "Updated docs for ${{ github.event.workflow_run.head_branch }}} and pushed to gh-pages" || true | |
git push origin gh-pages --force | |
rm -rf .git/ ./* |