mirror of
https://github.com/transmission/transmission
synced 2025-01-30 19:03:04 +00:00
build: add webapp github actions (#4658)
This commit is contained in:
parent
c81d0b130c
commit
f24368efb7
1 changed files with 143 additions and 0 deletions
143
.github/workflows/webapp.yml
vendored
Normal file
143
.github/workflows/webapp.yml
vendored
Normal file
|
@ -0,0 +1,143 @@
|
|||
name: webapp
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'main'
|
||||
pull_request:
|
||||
branches:
|
||||
- 'main'
|
||||
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 }}
|
||||
|
Loading…
Reference in a new issue