2 files changed, 34 insertions, 0 deletions
diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml
index a746ae6de3..23b8d7f909 100644
--- a/.github/workflows/docs.yaml
+++ b/.github/workflows/docs.yaml
@@ -3,7 +3,10 @@ name: Deploy the documentation
on:
push:
branches:
+ # For bleeding-edge documentation
- develop
+ # For documentation specific to a release
+ - 'release-v*'
workflow_dispatch:
@@ -22,6 +25,7 @@ jobs:
- name: Build the documentation
run: mdbook build
+ # Deploy to the latest documentation directories
- name: Deploy latest documentation
uses: peaceiris/actions-gh-pages@068dc23d9710f1ba62e86896f84735d869951305 # v3.8.0
with:
@@ -29,3 +33,32 @@ jobs:
keep_files: true
publish_dir: ./book
destination_dir: ./develop
+
+ - name: Get the current Synapse version
+ id: vars
+ # The $GITHUB_REF value for a branch looks like `refs/heads/release-v1.2`. We do some
+ # shell magic to remove the "refs/heads/release-v" bit from this, to end up with "1.2",
+ # our major/minor version number, and set this to a var called `branch-version`.
+ #
+ # We then use some python to get Synapse's full version string, which may look
+ # like "1.2.3rc4". We set this to a var called `synapse-version`. We use this
+ # to determine if this release is still an RC, and if so block deployment.
+ run: |
+ echo ::set-output name=branch-version::${GITHUB_REF#refs/heads/release-v}
+ echo ::set-output name=synapse-version::`python3 -c 'import synapse; print(synapse.__version__)'`
+
+ # Deploy to the version-specific directory
+ - name: Deploy release-specific documentation
+ # We only carry out this step if we're running on a release branch,
+ # and the current Synapse version does not have "rc" in the name.
+ #
+ # The result is that only full releases are deployed, but can be
+ # updated if the release branch gets retroactive fixes.
+ if: ${{ startsWith( github.ref, 'refs/heads/release-v' ) && !contains( steps.vars.outputs.synapse-version, 'rc') }}
+ uses: peaceiris/actions-gh-pages@v3
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ keep_files: true
+ publish_dir: ./book
+ # The resulting documentation will end up in a directory named `vX.Y`.
+ destination_dir: ./v${{ steps.vars.outputs.branch-version }}
diff --git a/changelog.d/10198.doc b/changelog.d/10198.doc
new file mode 100644
index 0000000000..8d1aeab1a7
--- /dev/null
+++ b/changelog.d/10198.doc
@@ -0,0 +1 @@
+Deploy a snapshot of the documentation website upon each new Synapse release.
|