-
Notifications
You must be signed in to change notification settings - Fork 430
74 lines (68 loc) · 2.44 KB
/
publish-docs.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# 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 "[email protected]"
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/ ./*