Skip to content

Commit 020dfc8

Browse files
committed
New CI workflow: document 'master' version and publish
1 parent 5266ce7 commit 020dfc8

File tree

2 files changed

+115
-0
lines changed

2 files changed

+115
-0
lines changed

.github/workflows/doc.yml

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
name: Doc
2+
3+
# To save env-var dynamically: https://github.com/actions/starter-workflows/issues/68#issuecomment-792338408
4+
# Persist env-var across steps: echo "var=value" >> $GITHUB_ENV
5+
6+
# Note: search-index.js is changing every single time, even if source is not changing. This file is around 2 MB.
7+
# Since the doc repo is cloned prior to committing, this might cause increasingly long CI times.defaults:
8+
# If necessary, archive the 'gh-pages' branch from time to time, or overwrite it altogether -- doc history might not be that important.
9+
10+
11+
on:
12+
push:
13+
branches: [master]
14+
15+
16+
env:
17+
GDNATIVE_LIB_RS_PREFIX: |-
18+
//! _**Note:** This documentation refers to the [latest GitHub version](https://github.com/godot-rust/godot-rust) and is subject to change._<br>
19+
//! _For stable releases, visit [docs.rs/gdnative](https://docs.rs/gdnative)._
20+
//! <br><br>
21+
//!
22+
GDNATIVE_DOC_REPO: git@github.com:godot-rust/doc.git
23+
GDNATIVE_DOC_BRANCH: gh-pages
24+
25+
26+
# In the very unlikely cases where two PRs are merged, and the first 'doc' job is still running when the 2nd 'full-ci' starts,
27+
# make sure the first one is awaited. Even though docs are eventually overwritten, this ensures continuitiy in the doc repo history.
28+
concurrency:
29+
group: 'sync-doc'
30+
cancel-in-progress: false
31+
32+
33+
jobs:
34+
sync-doc:
35+
runs-on: ubuntu-latest
36+
steps:
37+
- name: "Checkout"
38+
uses: actions/checkout@v2
39+
40+
- name: "Install Rust"
41+
uses: ./.github/composite/rust
42+
with:
43+
rust: stable
44+
components: rustfmt
45+
46+
- name: "Pre-process input"
47+
run: |
48+
mv ${GITHUB_WORKSPACE}/gdnative/src/lib.rs tmp_lib.rs
49+
(echo "${GDNATIVE_LIB_RS_PREFIX}"; cat tmp_lib.rs) > ${GITHUB_WORKSPACE}/gdnative/src/lib.rs
50+
51+
- name: "Generate documentation"
52+
uses: actions-rs/cargo@v1
53+
with:
54+
command: doc
55+
args: -p gdnative --lib --no-deps --all-features
56+
57+
# For email address, see https://github.community/t/github-actions-bot-email-address/17204
58+
# As search-index.js changes every time, even if source hasn't changed, this will not need 'git commit --allow-empty'
59+
- name: "Prepare upload"
60+
run: |
61+
mkdir ~/.ssh
62+
echo '${{ secrets.DOC_DEPLOY_SSH_KEY }}' > ~/.ssh/id_rsa
63+
chmod 700 ~/.ssh/id_rsa
64+
git config --global user.name "godot-rust/doc[bot]"
65+
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
66+
67+
mkdir doc && cd doc
68+
git clone --single-branch --branch ${GDNATIVE_DOC_BRANCH} --no-checkout ${GDNATIVE_DOC_REPO} . \
69+
|| (git init -b ${GDNATIVE_DOC_BRANCH} && git remote add origin ${GDNATIVE_DOC_REPO})
70+
71+
mv ${GITHUB_WORKSPACE}/target/doc/* .
72+
mv ${GITHUB_WORKSPACE}/.github/workflows/doc/* .
73+
74+
GDNATIVE_VERSION=$(grep -Po '^version = "\K[^"]*' ${GITHUB_WORKSPACE}/gdnative/Cargo.toml)
75+
GDNATIVE_SHORT_SHA=$(git rev-parse --short "${GITHUB_SHA}")
76+
77+
find gdnative -name .html -o -type f -print0 | xargs -0 sed -i 's/'"${GDNATIVE_VERSION}"'/master/g'
78+
79+
git add --all
80+
git commit -m "Sync doc from ${GDNATIVE_SHORT_SHA}
81+
82+
Revision in godot-rust: ${GITHUB_SHA}"
83+
84+
- name: "Upload"
85+
working-directory: doc
86+
run: git push origin ${GDNATIVE_DOC_BRANCH}
87+
88+
- name: "Cleanup"
89+
run: shred -u ~/.ssh/id_rsa
90+
91+
92+
93+
# Possible alternative: dispatching a remote workflow
94+
95+
# - name: 'Dispatch remote workflow'
96+
# run: >
97+
# curl
98+
# -X POST
99+
# -H "Accept: application/vnd.github.v3+json"
100+
# https://api.github.com/repos/godot-rust/doc/actions/workflows/triggered-remotely/dispatches
101+
# -d '{"ref":"master"}'
102+
103+
# - name: Repository Dispatch
104+
# uses: peter-evans/repository-dispatch@v1
105+
# with:
106+
# repository: godot-rust/doc
107+
# token: ${{ secrets.REPO_ACCESS_TOKEN }}
108+
# event-type: my-event

.github/workflows/doc/index.html

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<html>
2+
<head>
3+
<!-- Note: cache control not reliable through meta. The below redirection may remain cached in browsers. -->
4+
<!-- Alternatively, use JS. Also, consider https://github.com/rust-lang/cargo/issues/739 in the future. -->
5+
<meta http-equiv="refresh" content="0; url=/doc/gdnative" />
6+
</head>
7+
</html>

0 commit comments

Comments
 (0)