Add files via upload #38
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: webapp | |
on: | |
push: | |
branches: | |
- 'main' | |
paths-ignore: | |
- 'docs/**' | |
- '.github/**' | |
pull_request: | |
branches: | |
- 'main' | |
paths-ignore: | |
- 'docs/**' | |
- '.github/**' | |
jobs: | |
decide-what-jobs-to-run: | |
runs-on: ubuntu-22.04 | |
outputs: | |
test-style: ${{ steps.check-diffs.outputs.web-changed == '1' }} | |
test-generated-files: ${{ steps.check-diffs.outputs.web-changed == '1' && steps.check-main-push.outputs.is-main-push == '0'}} | |
update-generated-files: ${{ steps.check-diffs.outputs.web-changed == '1' && steps.check-main-push.outputs.is-main-push == '1'}} | |
steps: | |
- name: Get source | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 2 # >1 needed for merge base | |
- name: Check push-to-main | |
id: check-main-push | |
run: | | |
set -x # echo all executed commands to the terminal | |
if [ "$GITHUB_EVENT_NAME" = 'push' ] && [ "$GITHUB_REF_NAME" = 'main' ]; then | |
echo is-main-push=1 >> "$GITHUB_OUTPUT" | |
else | |
echo is-main-push=0 >> "$GITHUB_OUTPUT" | |
fi | |
- name: Check for diffs | |
id: check-diffs | |
run: | | |
set -x # echo all executed commands to the terminal | |
function get_changes() { # name, paths... | |
local name="$1" | |
shift | |
if [ "$GITHUB_EVENT_NAME" = 'push' ] && [ "$GITHUB_REF_NAME" = 'main' ]; then | |
DIFF_TARGET='--name-only HEAD^' | |
else | |
git fetch --depth=1 origin "$GITHUB_BASE_REF" | |
DIFF_TARGET="--merge-base origin/$GITHUB_BASE_REF" | |
fi | |
set +e # do not abort if git --exit-code returns nonzero | |
git diff --exit-code ${DIFF_TARGET} -- "$@" | |
echo "$name-changed=$?" >> "$GITHUB_OUTPUT" | |
} | |
get_changes web CMakeLists.txt web | |
code-style: | |
runs-on: ubuntu-latest | |
needs: [ decide-what-jobs-to-run ] | |
if: ${{ needs.decide-what-jobs-to-run.outputs.test-style == 'true' }} | |
steps: | |
- name: Get source | |
uses: actions/checkout@v3 | |
- name: Get dependencies | |
run: | | |
set -e # abort if any command fails | |
sudo apt-get install -y npm | |
- name: Check for style diffs | |
id: check-for-diffs | |
run: | | |
set -x # echo all executed commands to the terminal | |
set -e # abort if any command fails | |
npm --prefix web ci | |
npm --prefix web run lint:fix | |
set +e # do not end the script if a cmd returns an exit code | |
git diff --exit-code web > style.diff | |
echo "differs=$?" >> $GITHUB_OUTPUT | |
echo === | |
cat style.diff | |
echo === | |
set -e # undo set +e | |
- name: Upload diffs | |
uses: actions/upload-artifact@v3 | |
if: ${{ steps.check-for-diffs.outputs.differs == '1' }} | |
with: | |
name: code-style.diff | |
path: 'style.diff' | |
- name: Fail if diffs exist | |
if: ${{ steps.check-for-diffs.outputs.differs == '1' }} | |
run: | | |
echo "code style does not match expected." | |
cat style.diff | |
echo "When CI is done, the above patch will be uploaded as 'code-style.diff' to https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}/ ." | |
exit 1 | |
test-generated-files: | |
runs-on: ubuntu-latest | |
needs: [ decide-what-jobs-to-run ] | |
if: ${{ needs.decide-what-jobs-to-run.outputs.test-generated-files == 'true' }} | |
steps: | |
- name: Get source | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 2 # >1 needed for merge base | |
- name: Check for changes to generated files | |
run: | | |
git fetch --quiet --depth=1 origin "$GITHUB_BASE_REF" | |
set -e # abort if diff --exit-code fails | |
echo | |
echo Hello, code contributor! | |
echo For security reasons, ${GITHUB_REPOSITORY} does not accept PRs that change generated files. | |
echo | |
echo Please undo your changes to these files: | |
git diff --exit-code --name-only --merge-base "origin/$GITHUB_BASE_REF" -- \ | |
web/public_html/transmission-app.js \ | |
web/public_html/transmission-app.js.map \ | |
web/public_html/transmission-app.js.LICENSE.txt | |
update-generated-files: | |
runs-on: ubuntu-latest | |
needs: [ decide-what-jobs-to-run ] | |
if: ${{ needs.decide-what-jobs-to-run.outputs.update-generated-files == 'true' }} | |
steps: | |
- name: Show env | |
run: | | |
env | sort | |
- name: Get dependencies | |
run: | | |
set -e # abort if any command fails | |
sudo apt-get install -y npm | |
- name: Get source | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 2 # >1 needed for merge base | |
- name: Generate webapp files | |
run: | | |
set -x # echo all executed commands to the terminal | |
set -e # abort if any command fails | |
npm --prefix web ci | |
npm --prefix web run build | |
git diff --name-only | |
git add --update web | |
- name: Create pull request | |
uses: peter-evans/create-pull-request@v4 | |
with: | |
branch: 'chore/update-webapp-files' | |
commit-message: 'chore: update generated transmission-web files' | |
delete-branch: true | |
title: 'chore: update generated transmission-web files' | |
body: Generated from https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} | |