@@ -2,9 +2,6 @@ name: CI
on: [push, pull_request]
-env:
- DEVELOPER: 1
-
jobs:
ci-config:
name: config
@@ -93,8 +90,7 @@ jobs:
shell: bash
env:
HOME: ${{runner.workspace}}
- NO_PERL: 1
- run: . /etc/profile && make artifacts-tar ARTIFACTS_DIRECTORY=artifacts
+ run: . /etc/profile && make artifacts-tar
if: success()
- run: ci/check-unignored-build-artifacts.sh
if: success()
@@ -105,7 +101,7 @@ jobs:
uses: actions/upload-artifact@v2
with:
name: windows-artifacts
- path: artifacts
+ path: ${{env.ARTIFACTS_DIRECTORY}}
windows-test:
name: win test
env:
@@ -126,6 +122,8 @@ jobs:
shell: bash
run: tar xf artifacts.tar.gz && tar xf tracked.tar.gz
- uses: git-for-windows/setup-git-for-windows-sdk@v1
+ - run: ci/lib.sh
+ shell: bash
- name: test
shell: bash
run: . /etc/profile && ci/run-test-slice.sh ${{matrix.nr}} 10
@@ -145,9 +143,6 @@ jobs:
jobname: vs-build
needs: ci-config
if: needs.ci-config.outputs.enabled == 'yes'
- env:
- NO_PERL: 1
- GIT_CONFIG_PARAMETERS: "'user.name=CI' 'user.email=ci@git'"
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
@@ -171,6 +166,8 @@ jobs:
- name: copy dlls to root
shell: cmd
run: compat\vcbuild\vcpkg_copy_dlls.bat release
+ - run: ci/lib.sh
+ shell: bash
- name: generate Visual Studio solution
shell: bash
run: |
@@ -181,21 +178,16 @@ jobs:
- name: bundle artifact tar
shell: bash
env:
- MSVC: 1
VCPKG_ROOT: ${{github.workspace}}\compat\vcbuild\vcpkg
run: |
- mkdir -p artifacts &&
- eval "$(make -n artifacts-tar INCLUDE_DLLS_IN_ARTIFACTS=YesPlease ARTIFACTS_DIRECTORY=artifacts NO_GETTEXT=YesPlease 2>&1 | grep ^tar)"
- - run: ci/check-unignored-build-artifacts.sh
- if: success()
- shell: bash
+ eval "$(make -n artifacts-tar 2>&1 | grep -e ^mkdir -e ^tar)"
- name: zip up tracked files
run: git archive -o artifacts/tracked.tar.gz HEAD
- name: upload tracked files and build artifacts
uses: actions/upload-artifact@v2
with:
name: vs-artifacts
- path: artifacts
+ path: ${{env.ARTIFACTS_DIRECTORY}}
vs-test:
name: win+VS test
env:
@@ -216,10 +208,10 @@ jobs:
- name: extract tracked files and build artifacts
shell: bash
run: tar xf artifacts.tar.gz && tar xf tracked.tar.gz
+ - run: ci/lib.sh
+ shell: bash
- name: test
shell: bash
- env:
- NO_SVN_TESTS: 1
run: . /etc/profile && ci/run-test-slice.sh ${{matrix.nr}} 10
- name: ci/print-test-failures.sh
if: failure()
@@ -354,6 +346,7 @@ jobs:
- uses: actions/checkout@v2
- name: Install other dependencies
run: ci/install-dependencies.sh
+ - run: ci/lib.sh
- run: make sparse
documentation:
name: documentation
@@ -104,6 +104,27 @@ macos-latest)
esac
case "$jobname" in
+windows-build)
+ setenv --build NO_PERL NoThanks
+ setenv --build ARTIFACTS_DIRECTORY artifacts
+ ;;
+vs-build)
+ setenv --build NO_PERL NoThanks
+ setenv --build NO_GETTEXT NoThanks
+ setenv --build ARTIFACTS_DIRECTORY artifacts
+ setenv --build INCLUDE_DLLS_IN_ARTIFACTS YesPlease
+ setenv --build MSVC YesPlease
+
+ setenv --build GIT_CONFIG_COUNT 2
+ setenv --build GIT_CONFIG_KEY_0 user.name
+ setenv --build GIT_CONFIG_VALUE_0 CI
+ setenv --build GIT_CONFIG_KEY_1 user.emailname
+ setenv --build GIT_CONFIG_VALUE_1 ci@git
+ setenv --build GIT_CONFIG_VALUE_1 ci@git
+ ;;
+vs-test)
+ setenv --test NO_SVN_TESTS YesPlease
+ ;;
linux-gcc)
setenv --test GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME main
;;
Have the GitHub CI jobs use the "ci/lib".sh as a source of truth for environment variables that affect their builds and tests. This brings them in line with the rest of the jobs, and make it easier to see the entire CI configuration per jobname at a glance. To do this we need to add a ci/lib.sh "step" to the remaining jobs that didn't have it added in preceding commits. The Makefile parameters are luckily all accepted via the environment, so we can export these instead of adding them to MAKEFLAGS. Let's also use the documented GIT_CONIFG_* mechanism for setting config instead of the internal GIT_CONFIG_PARAMETERS variable. This adjusts code added in 889cacb6897 (ci: configure GitHub Actions for CI/PR, 2020-04-11), we could probably use the GIT_AUTHOR_NAME etc, but let's keep setting this via config, just with the documented mechanism. By setting "ARTIFACTS_DIRECTORY=artifacts" once we don't need to repeat it in various places, let's get it from the environment instead. Finally, the "DEVELOPER: 1" was only needed by the "sparse" job, which wasn't using "ci/lib.sh" (and which sets DEVELOPER=1). Let's instead have the "sparse" job use the "ci/lib.sh" and remove DEVELOPER=1 from ".github/workflows/main.yml". This substantially speeds up the "sparse" job, since it'll now pick up the "--jobs" setting in MAKEFLAGS that we use everywhere else. Before it ran in around 4m30s, now in around 2m30s. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> --- .github/workflows/main.yml | 29 +++++++++++------------------ ci/lib.sh | 21 +++++++++++++++++++++ 2 files changed, 32 insertions(+), 18 deletions(-)