Merge branch 'jk/ci-only-on-selected-branches'
Instead of always building all branches at GitHub via Actions, users can specify which branches to build. * jk/ci-only-on-selected-branches: ci: allow per-branch config for GitHub Actions
This commit is contained in:
commit
dd4a28790f
42
.github/workflows/main.yml
vendored
42
.github/workflows/main.yml
vendored
@ -6,7 +6,39 @@ env:
|
||||
DEVELOPER: 1
|
||||
|
||||
jobs:
|
||||
ci-config:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
enabled: ${{ steps.check-ref.outputs.enabled }}
|
||||
steps:
|
||||
- name: try to clone ci-config branch
|
||||
continue-on-error: true
|
||||
run: |
|
||||
git -c protocol.version=2 clone \
|
||||
--no-tags \
|
||||
--single-branch \
|
||||
-b ci-config \
|
||||
--depth 1 \
|
||||
--no-checkout \
|
||||
--filter=blob:none \
|
||||
https://github.com/${{ github.repository }} \
|
||||
config-repo &&
|
||||
cd config-repo &&
|
||||
git checkout HEAD -- ci/config
|
||||
- id: check-ref
|
||||
name: check whether CI is enabled for ref
|
||||
run: |
|
||||
enabled=yes
|
||||
if test -x config-repo/ci/config/allow-ref &&
|
||||
! config-repo/ci/config/allow-ref '${{ github.ref }}'
|
||||
then
|
||||
enabled=no
|
||||
fi
|
||||
echo "::set-output name=enabled::$enabled"
|
||||
|
||||
windows-build:
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
@ -70,6 +102,8 @@ jobs:
|
||||
name: failed-tests-windows
|
||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||
vs-build:
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
env:
|
||||
MSYSTEM: MINGW64
|
||||
NO_PERL: 1
|
||||
@ -154,6 +188,8 @@ jobs:
|
||||
${{matrix.nr}} 10 t[0-9]*.sh)
|
||||
"@
|
||||
regular:
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
strategy:
|
||||
matrix:
|
||||
vector:
|
||||
@ -189,6 +225,8 @@ jobs:
|
||||
name: failed-tests-${{matrix.vector.jobname}}
|
||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||
dockerized:
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
strategy:
|
||||
matrix:
|
||||
vector:
|
||||
@ -213,6 +251,8 @@ jobs:
|
||||
name: failed-tests-${{matrix.vector.jobname}}
|
||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||
static-analysis:
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
env:
|
||||
jobname: StaticAnalysis
|
||||
runs-on: ubuntu-latest
|
||||
@ -221,6 +261,8 @@ jobs:
|
||||
- run: ci/install-dependencies.sh
|
||||
- run: ci/run-static-analysis.sh
|
||||
documentation:
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
env:
|
||||
jobname: Documentation
|
||||
runs-on: ubuntu-latest
|
||||
|
26
ci/config/allow-refs.sample
Executable file
26
ci/config/allow-refs.sample
Executable file
@ -0,0 +1,26 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Sample script for enabling/disabling GitHub Actions CI runs on
|
||||
# particular refs. By default, CI is run for all branches pushed to
|
||||
# GitHub. You can override this by dropping the ".sample" from the script,
|
||||
# editing it, committing, and pushing the result to the "ci-config" branch of
|
||||
# your repository:
|
||||
#
|
||||
# git checkout -b ci-config
|
||||
# cp allow-refs.sample allow-refs
|
||||
# $EDITOR allow-refs
|
||||
# git commit -am "implement my ci preferences"
|
||||
# git push
|
||||
#
|
||||
# This script will then be run when any refs are pushed to that repository. It
|
||||
# gets the fully qualified refname as the first argument, and should exit with
|
||||
# success only for refs for which you want to run CI.
|
||||
|
||||
case "$1" in
|
||||
# allow one-off tests by pushing to "for-ci" or "for-ci/mybranch"
|
||||
refs/heads/for-ci*) true ;;
|
||||
# always build your integration branch
|
||||
refs/heads/my-integration-branch) true ;;
|
||||
# don't build any other branches or tags
|
||||
*) false ;;
|
||||
esac
|
Loading…
Reference in New Issue
Block a user