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
|
DEVELOPER: 1
|
||||||
|
|
||||||
jobs:
|
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:
|
windows-build:
|
||||||
|
needs: ci-config
|
||||||
|
if: needs.ci-config.outputs.enabled == 'yes'
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v1
|
||||||
@ -70,6 +102,8 @@ jobs:
|
|||||||
name: failed-tests-windows
|
name: failed-tests-windows
|
||||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||||
vs-build:
|
vs-build:
|
||||||
|
needs: ci-config
|
||||||
|
if: needs.ci-config.outputs.enabled == 'yes'
|
||||||
env:
|
env:
|
||||||
MSYSTEM: MINGW64
|
MSYSTEM: MINGW64
|
||||||
NO_PERL: 1
|
NO_PERL: 1
|
||||||
@ -154,6 +188,8 @@ jobs:
|
|||||||
${{matrix.nr}} 10 t[0-9]*.sh)
|
${{matrix.nr}} 10 t[0-9]*.sh)
|
||||||
"@
|
"@
|
||||||
regular:
|
regular:
|
||||||
|
needs: ci-config
|
||||||
|
if: needs.ci-config.outputs.enabled == 'yes'
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
vector:
|
vector:
|
||||||
@ -189,6 +225,8 @@ jobs:
|
|||||||
name: failed-tests-${{matrix.vector.jobname}}
|
name: failed-tests-${{matrix.vector.jobname}}
|
||||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||||
dockerized:
|
dockerized:
|
||||||
|
needs: ci-config
|
||||||
|
if: needs.ci-config.outputs.enabled == 'yes'
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
vector:
|
vector:
|
||||||
@ -213,6 +251,8 @@ jobs:
|
|||||||
name: failed-tests-${{matrix.vector.jobname}}
|
name: failed-tests-${{matrix.vector.jobname}}
|
||||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||||
static-analysis:
|
static-analysis:
|
||||||
|
needs: ci-config
|
||||||
|
if: needs.ci-config.outputs.enabled == 'yes'
|
||||||
env:
|
env:
|
||||||
jobname: StaticAnalysis
|
jobname: StaticAnalysis
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@ -221,6 +261,8 @@ jobs:
|
|||||||
- run: ci/install-dependencies.sh
|
- run: ci/install-dependencies.sh
|
||||||
- run: ci/run-static-analysis.sh
|
- run: ci/run-static-analysis.sh
|
||||||
documentation:
|
documentation:
|
||||||
|
needs: ci-config
|
||||||
|
if: needs.ci-config.outputs.enabled == 'yes'
|
||||||
env:
|
env:
|
||||||
jobname: Documentation
|
jobname: Documentation
|
||||||
runs-on: ubuntu-latest
|
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