Skip to content

Commit

Permalink
CI: Add workflow to update changelog and rebuild on repo dispatch
Browse files Browse the repository at this point in the history
This workflow can be triggered using a personal access token (PAT) with
the `public_repo` scope.

    $ curl -H "Accept: application/vnd.github.v3+json" \
           -H "Authorization: token <your-token>" \
           --request POST \
           --data '{"event_type": "update-changelog", "client_payload": {"branch": "2.3"}}' \
           https://api.github.com/repos/mixxxdj/manual/dispatches

It will then run `tools/update_changelog.py` and if any files were
changed, it will commit these changes and then trigger rebuild of the
manual.

For the latter to work, a `MIXXXBOT_CHANGELOG_AUTOUPDATER_PAT`
repository secret needs to be present, because the default
`GITHUB_TOKEN` doesn't suffice.
  • Loading branch information
Holzhaus committed Aug 15, 2021
1 parent 976946a commit 9b6c85c
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 7 deletions.
12 changes: 7 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@ on:
branches:
- "main"
- "[0-9]+.[0-9]+"
repository_dispatch:
types: rebuild

jobs:
build-html:
name: HTML
runs-on: ubuntu-latest
if: github.event_name == 'push'
if: github.event_name == 'push' || github.event_name == 'repository_dispatch'
steps:
- uses: actions/checkout@v2
with:
Expand Down Expand Up @@ -62,7 +64,7 @@ jobs:
- name: Install Python dependencies
run: pip install --upgrade -r requirements.txt
- name: Set up SSH Agent
if: github.event_name == 'push' && env.SSH_PRIVATE_KEY != null
if: (github.event_name == 'push' || github.event_name == 'repository_dispatch') && env.SSH_PRIVATE_KEY != null
env:
SSH_AUTH_SOCK: /tmp/ssh_agent.sock
SSH_PRIVATE_KEY: ${{ secrets.DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY }}
Expand All @@ -74,15 +76,15 @@ jobs:
ssh-keyscan "${SSH_HOST}" >> "${HOME}/.ssh/known_hosts"
echo "SSH_AUTH_SOCK=${SSH_AUTH_SOCK}" >> "${GITHUB_ENV}"
- name: Build PDF manual
if: github.event_name != 'push' || env.SSH_AUTH_SOCK == null
if: (github.event_name != 'push' || github.event_name != 'repository_dispatch') && env.SSH_AUTH_SOCK == null
run: |
sphinx-build -b latex -q -j $(nproc) -Dlatex_engine=xelatex source build
make -C build LATEXMKOPTS="-f -interaction=nonstopmode -pdf -xelatex" all-pdf
- name: Build PDF manual in all languages
if: github.event_name == 'push' && env.SSH_AUTH_SOCK != null
if: (github.event_name == 'push' || github.event_name == 'repository_dispatch') && env.SSH_AUTH_SOCK != null
run: sh build_pdf.sh
- name: Deploy PDF manuals to download server
if: github.event_name == 'push' && env.SSH_AUTH_SOCK != null
if: (github.event_name == 'push' || github.event_name == 'repository_dispatch') && env.SSH_AUTH_SOCK != null
run: rsync --verbose --recursive --checksum --times --delay-updates "build/pdf/" "${SSH_USER}@${SSH_HOST}:${DESTDIR}/"
env:
DESTDIR: public_html/downloads/manual
Expand Down
45 changes: 45 additions & 0 deletions .github/workflows/changelog.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Changelog

on:
repository_dispatch:
types: update-changelog

jobs:
update-changelog:
name: Update Changelog
runs-on: ubuntu-latest
steps:
- name: Event Information
run: echo "Event '${{ github.event.action }}' received from '${{ github.event.client_payload.repository }}'"
- name: Check out repository
uses: actions/checkout@v2
with:
ref: ${{ github.event.client_payload.branch }}
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Install Python dependencies
run: pip install -r requirements-changelog.txt
- name: Update Changelog
run: tools/update_changelog.py -b "${{ github.event.client_payload.branch }}"
- name: Check if changes any changes were made
run: echo "GIT_DIRTY=$(git diff --quiet ; printf "%d" "$?")" >> "${GITHUB_ENV}"
- uses: EndBug/add-and-commit@v7
if: env.GIT_DIRTY != null && env.GIT_DIRTY != '0'
with:
branch: ${{ github.event.client_payload.branch }}
add: "source/chapters/appendix/version_history.rst"
message: "appendix/version_history: Update changelog for ${{ github.event.client_payload.branch }} branch"
default_author: github_actions
push: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Trigger Rebuild
uses: peter-evans/repository-dispatch@v1
if: env.GIT_DIRTY != null && env.GIT_DIRTY != '0' && env.MIXXXBOT_TOKEN != null
with:
token: ${{ env.MIXXXBOT_TOKEN }}
event-type: rebuild
env:
MIXXXBOT_TOKEN: ${{ secrets.MIXXXBOT_CHANGELOG_AUTOUPDATER_PAT }}
2 changes: 2 additions & 0 deletions requirements-changelog.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
m2r2
requests
2 changes: 0 additions & 2 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
sphinx
sphinx-intl
graphviz
m2r2
markupsafe
requests
transifex-client
sphinxcontrib-svg2pdfconverter
sphinx-rtd-theme==0.5.2
Expand Down

0 comments on commit 9b6c85c

Please sign in to comment.