From b02d4b1336b5165fb61a79ebc1934ee6e6390e81 Mon Sep 17 00:00:00 2001 From: Jan Holthuis Date: Thu, 5 Aug 2021 14:26:20 +0200 Subject: [PATCH] CI: Add workflow to update changelog and rebuild on repo dispatch 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 " \ --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. --- .github/workflows/build.yml | 12 +++++---- .github/workflows/changelog.yml | 46 +++++++++++++++++++++++++++++++++ requirements-changelog.txt | 2 ++ requirements.txt | 2 -- 4 files changed, 55 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/changelog.yml create mode 100644 requirements-changelog.txt diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 99deaa13b0..d8be9683c2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -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: @@ -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 }} @@ -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 diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml new file mode 100644 index 0000000000..ca838e566d --- /dev/null +++ b/.github/workflows/changelog.yml @@ -0,0 +1,46 @@ +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" + author_name: mixxxbot + author_email: bot@mixxx.org + 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 }} diff --git a/requirements-changelog.txt b/requirements-changelog.txt new file mode 100644 index 0000000000..ec86c23ff8 --- /dev/null +++ b/requirements-changelog.txt @@ -0,0 +1,2 @@ +m2r2 +requests diff --git a/requirements.txt b/requirements.txt index a840e65813..a129f0c1af 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,9 +1,7 @@ sphinx sphinx-intl graphviz -m2r2 markupsafe -requests transifex-client sphinxcontrib-svg2pdfconverter sphinx-rtd-theme==0.5.2