* [PATCH v2 1/6] CI: remove Travis CI support
2021-11-20 3:28 ` [PATCH v2 0/6] CI: Remove Travis CI, shorten names for GH tooltips, split jobs Ævar Arnfjörð Bjarmason
@ 2021-11-20 3:28 ` Ævar Arnfjörð Bjarmason
2021-11-20 3:28 ` [PATCH v2 2/6] CI: use shorter names that fit in UX tooltips Ævar Arnfjörð Bjarmason
` (6 subsequent siblings)
7 siblings, 0 replies; 38+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2021-11-20 3:28 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Johannes Schindelin, SZEDER Gábor,
Victoria Dye, Ævar Arnfjörð Bjarmason
Remove support for running the CI in travis. The last builds in it are
from 5 months ago[1] (as of 2021-11-19), and our documentation has
referred to GitHub CI instead since f003a91f5c5 (SubmittingPatches:
replace discussion of Travis with GitHub Actions, 2021-07-22).
We'll now run the "t9810 t9816" and tests on OSX. We didn't before, as
we'd carried the Travis exclusion of them forward from
522354d70f4 (Add Travis CI support, 2015-11-27). Let's hope whatever
issue there was with them was either Travis specific, or fixed since
then (I'm not sure).
The "apt-add-repository" invocation (which we were doing in GitHub CI)
isn't needed, it was another Travis-only case that was carried forward
into more general code. See 0f0c51181df (travis-ci: install packages
in 'ci/install-dependencies.sh', 2018-11-01).
1. https://travis-ci.org/github/git/git/builds
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
.travis.yml | 60 --------------------------------------
ci/install-dependencies.sh | 1 -
ci/lib.sh | 37 ++---------------------
ci/print-test-failures.sh | 10 -------
ci/run-docker-build.sh | 9 ------
ci/run-docker.sh | 2 +-
6 files changed, 4 insertions(+), 115 deletions(-)
delete mode 100644 .travis.yml
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 908330a0a3d..00000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-language: c
-
-cache:
- directories:
- - $HOME/travis-cache
-
-os:
- - linux
- - osx
-
-osx_image: xcode10.1
-
-compiler:
- - clang
- - gcc
-
-matrix:
- include:
- - env: jobname=linux-gcc-default
- os: linux
- compiler:
- addons:
- before_install:
- - env: jobname=linux-gcc-4.8
- os: linux
- dist: trusty
- compiler:
- - env: jobname=Linux32
- os: linux
- compiler:
- addons:
- services:
- - docker
- before_install:
- script: ci/run-docker.sh
- - env: jobname=linux-musl
- os: linux
- compiler:
- addons:
- services:
- - docker
- before_install:
- script: ci/run-docker.sh
- - env: jobname=StaticAnalysis
- os: linux
- compiler:
- script: ci/run-static-analysis.sh
- after_failure:
- - env: jobname=Documentation
- os: linux
- compiler:
- script: ci/test-documentation.sh
- after_failure:
-
-before_install: ci/install-dependencies.sh
-script: ci/run-build-and-tests.sh
-after_failure: ci/print-test-failures.sh
-
-notifications:
- email: false
diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
index 1d0e48f4515..92e11c7198e 100755
--- a/ci/install-dependencies.sh
+++ b/ci/install-dependencies.sh
@@ -13,7 +13,6 @@ UBUNTU_COMMON_PKGS="make libssl-dev libcurl4-openssl-dev libexpat-dev
case "$jobname" in
linux-clang|linux-gcc|linux-leaks)
- sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
sudo apt-get -q update
sudo apt-get -q -y install language-pack-is libsvn-perl apache2 \
$UBUNTU_COMMON_PKGS
diff --git a/ci/lib.sh b/ci/lib.sh
index 82cb17f8eea..73d959e87f7 100755
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -34,7 +34,7 @@ save_good_tree () {
# successfully before (e.g. because the branch got rebased, changing only
# the commit messages).
skip_good_tree () {
- if test "$TRAVIS_DEBUG_MODE" = true || test true = "$GITHUB_ACTIONS"
+ if test true = "$GITHUB_ACTIONS"
then
return
fi
@@ -60,7 +60,7 @@ skip_good_tree () {
cat <<-EOF
$(tput setaf 2)Skipping build job for commit $CI_COMMIT.$(tput sgr0)
This commit's tree has already been built and tested successfully in build job $prev_good_job_number for commit $prev_good_commit.
- The log of that build job is available at $(url_for_job_id $prev_good_job_id)
+ The log of that build job is available at $SYSTEM_TASKDEFINITIONSURI$SYSTEM_TEAMPROJECT/_build/results?buildId=$prev_good_job_id
To force a re-build delete the branch's cache and then hit 'Restart job'.
EOF
fi
@@ -91,29 +91,7 @@ export MAKEFLAGS=
# and installing dependencies.
set -ex
-if test true = "$TRAVIS"
-then
- CI_TYPE=travis
- # When building a PR, TRAVIS_BRANCH refers to the *target* branch. Not
- # what we want here. We want the source branch instead.
- CI_BRANCH="${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH}"
- CI_COMMIT="$TRAVIS_COMMIT"
- CI_JOB_ID="$TRAVIS_JOB_ID"
- CI_JOB_NUMBER="$TRAVIS_JOB_NUMBER"
- CI_OS_NAME="$TRAVIS_OS_NAME"
- CI_REPO_SLUG="$TRAVIS_REPO_SLUG"
-
- cache_dir="$HOME/travis-cache"
-
- url_for_job_id () {
- echo "https://travis-ci.org/$CI_REPO_SLUG/jobs/$1"
- }
-
- BREW_INSTALL_PACKAGES="git-lfs gettext"
- export GIT_PROVE_OPTS="--timer --jobs 3 --state=failed,slow,save"
- export GIT_TEST_OPTS="--verbose-log -x --immediate"
- MAKEFLAGS="$MAKEFLAGS --jobs=2"
-elif test -n "$SYSTEM_COLLECTIONURI" || test -n "$SYSTEM_TASKDEFINITIONSURI"
+if test -n "$SYSTEM_COLLECTIONURI" || test -n "$SYSTEM_TASKDEFINITIONSURI"
then
CI_TYPE=azure-pipelines
# We are running in Azure Pipelines
@@ -130,10 +108,6 @@ then
# among *all* phases)
cache_dir="$HOME/test-cache/$SYSTEM_PHASENAME"
- url_for_job_id () {
- echo "$SYSTEM_TASKDEFINITIONSURI$SYSTEM_TEAMPROJECT/_build/results?buildId=$1"
- }
-
export GIT_PROVE_OPTS="--timer --jobs 10 --state=failed,slow,save"
export GIT_TEST_OPTS="--verbose-log -x --write-junit-xml"
MAKEFLAGS="$MAKEFLAGS --jobs=10"
@@ -214,11 +188,6 @@ osx-clang|osx-gcc)
else
MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python2)"
fi
-
- # t9810 occasionally fails on Travis CI OS X
- # t9816 occasionally fails with "TAP out of sequence errors" on
- # Travis CI OS X
- export GIT_SKIP_TESTS="t9810 t9816"
;;
linux-gcc-default)
;;
diff --git a/ci/print-test-failures.sh b/ci/print-test-failures.sh
index c70d6cdbf24..57277eefcd0 100755
--- a/ci/print-test-failures.sh
+++ b/ci/print-test-failures.sh
@@ -39,8 +39,6 @@ do
test_name="${test_name##*/}"
trash_dir="trash directory.$test_name"
case "$CI_TYPE" in
- travis)
- ;;
azure-pipelines)
mkdir -p failed-test-artifacts
mv "$trash_dir" failed-test-artifacts
@@ -88,11 +86,3 @@ do
fi
fi
done
-
-if [ $combined_trash_size -gt 0 ]
-then
- echo "------------------------------------------------------------------------"
- echo "Trash directories embedded in this log can be extracted by running:"
- echo
- echo " curl https://api.travis-ci.org/v3/job/$TRAVIS_JOB_ID/log.txt |./ci/util/extract-trash-dirs.sh"
-fi
diff --git a/ci/run-docker-build.sh b/ci/run-docker-build.sh
index 8d47a5fda3b..5d2764ad3a3 100755
--- a/ci/run-docker-build.sh
+++ b/ci/run-docker-build.sh
@@ -47,15 +47,6 @@ else
else
useradd -u $HOST_UID $CI_USER
fi
-
- # Due to a bug the test suite was run as root in the past, so
- # a prove state file created back then is only accessible by
- # root. Now that bug is fixed, the test suite is run as a
- # regular user, but the prove state file coming from Travis
- # CI's cache might still be owned by root.
- # Make sure that this user has rights to any cached files,
- # including an existing prove state file.
- test -n "$cache_dir" && chown -R $HOST_UID:$HOST_UID "$cache_dir"
fi
# Build and test
diff --git a/ci/run-docker.sh b/ci/run-docker.sh
index 37fa372052d..b610dd4db84 100755
--- a/ci/run-docker.sh
+++ b/ci/run-docker.sh
@@ -25,7 +25,7 @@ docker pull "$CI_CONTAINER"
# root@container:/# export jobname=<jobname>
# root@container:/# /usr/src/git/ci/run-docker-build.sh <host-user-id>
-container_cache_dir=/tmp/travis-cache
+container_cache_dir=/tmp/container-cache
docker run \
--interactive \
--
2.34.0.823.gcc3243ae16c
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 2/6] CI: use shorter names that fit in UX tooltips
2021-11-20 3:28 ` [PATCH v2 0/6] CI: Remove Travis CI, shorten names for GH tooltips, split jobs Ævar Arnfjörð Bjarmason
2021-11-20 3:28 ` [PATCH v2 1/6] CI: remove Travis CI support Ævar Arnfjörð Bjarmason
@ 2021-11-20 3:28 ` Ævar Arnfjörð Bjarmason
2021-11-20 7:01 ` Victoria Dye
2021-11-20 3:28 ` [PATCH v2 3/6] CI: rename the "Linux32" job to lower-case "linux32" Ævar Arnfjörð Bjarmason
` (5 subsequent siblings)
7 siblings, 1 reply; 38+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2021-11-20 3:28 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Johannes Schindelin, SZEDER Gábor,
Victoria Dye, Ævar Arnfjörð Bjarmason
Change the names used for the GitHub CI workflows to be short enough
to (mostly) fit in the pop-up tool-tips that GitHub shows in the
commit view. I.e. when mouse-clicking on the passing or failing
check-mark next to the commit subject.
These names are seemingly truncated to 17-20 characters followed by
three dots ("..."). Since a "CI/PR / " prefix is added to them the job
names looked like this before (windows-test and vs-test jobs omitted):
CI/PR / ci-config (p...
CI/PR / windows-buil...
CI/PR / vs-build (pu...
CI/PR / regular (lin...
CI/PR / regular (lin...
CI/PR / regular (os...
CI/PR / regular (os...
CI/PR / regular (lin...
CI/PR / regular (lin...
CI/PR / dockerized (...
CI/PR / dockerized (...
CI/PR / dockerized (...
CI/PR / static-anal...
CI/PR / sparse (pu...
CI/PR / documenta...
By omitting the "/PR" from the top-level name, and pushing the
$jobname to the front we'll now instead get:
CI / config (push)
CI / win build (push...
CI / win+VS build (...
CI / linux-clang (ub...
CI / linux-gcc (ubun...
CI / osx-clang (osx)...
CI / osx-gcc (osx) (...
CI / linux-gcc-defau...
CI / linux-leaks (ub...
CI / linux-musl (alp...
CI / Linux32 (daald/...
CI / pedantic (fedor...
CI / static-analysis...
CI / sparse (push)...
CI / documentation
We then have no truncation in the expanded view. See [1] for how it
looked before, [2] for a currently visible CI run using this commit,
and [3] for the GitHub workflow syntax involved being changed here.
Let's also add a field for the "os" and use it where appropriate, it's
occasionally useful to know we're running on say ubuntu
v.s. fedora (but the "-latest" suffix isn't very useful, that applies
to almost all the jobs.
1. https://github.com/git/git/tree/master/
2. https://github.com/avar/git/tree/avar/ci-rm-travis-cleanup-ci-names-2
3. https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
.github/workflows/main.yml | 16 +++++++++++++++-
README.md | 2 +-
2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 6ed6a9e8076..612b475fd0b 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -1,4 +1,4 @@
-name: CI/PR
+name: CI
on: [push, pull_request]
@@ -7,6 +7,7 @@ env:
jobs:
ci-config:
+ name: config
runs-on: ubuntu-latest
outputs:
enabled: ${{ steps.check-ref.outputs.enabled }}${{ steps.skip-if-redundant.outputs.enabled }}
@@ -77,6 +78,7 @@ jobs:
}
windows-build:
+ name: win build
needs: ci-config
if: needs.ci-config.outputs.enabled == 'yes'
runs-on: windows-latest
@@ -97,6 +99,7 @@ jobs:
name: windows-artifacts
path: artifacts
windows-test:
+ name: win test
runs-on: windows-latest
needs: [windows-build]
strategy:
@@ -127,6 +130,7 @@ jobs:
name: failed-tests-windows
path: ${{env.FAILED_TEST_ARTIFACTS}}
vs-build:
+ name: win+VS build
needs: ci-config
if: needs.ci-config.outputs.enabled == 'yes'
env:
@@ -178,6 +182,7 @@ jobs:
name: vs-artifacts
path: artifacts
vs-test:
+ name: win+VS test
runs-on: windows-latest
needs: vs-build
strategy:
@@ -210,6 +215,7 @@ jobs:
name: failed-tests-windows
path: ${{env.FAILED_TEST_ARTIFACTS}}
regular:
+ name: ${{matrix.vector.jobname}} (${{matrix.vector.os}})
needs: ci-config
if: needs.ci-config.outputs.enabled == 'yes'
strategy:
@@ -218,21 +224,27 @@ jobs:
vector:
- jobname: linux-clang
cc: clang
+ os: ubuntu
pool: ubuntu-latest
- jobname: linux-gcc
cc: gcc
+ os: ubuntu
pool: ubuntu-latest
- jobname: osx-clang
cc: clang
+ os: osx
pool: macos-latest
- jobname: osx-gcc
cc: gcc
+ os: osx
pool: macos-latest
- jobname: linux-gcc-default
cc: gcc
+ os: ubuntu
pool: ubuntu-latest
- jobname: linux-leaks
cc: gcc
+ os: ubuntu
pool: ubuntu-latest
env:
CC: ${{matrix.vector.cc}}
@@ -251,6 +263,7 @@ jobs:
name: failed-tests-${{matrix.vector.jobname}}
path: ${{env.FAILED_TEST_ARTIFACTS}}
dockerized:
+ name: ${{matrix.vector.jobname}} (${{matrix.vector.image}})
needs: ci-config
if: needs.ci-config.outputs.enabled == 'yes'
strategy:
@@ -310,6 +323,7 @@ jobs:
run: ci/install-dependencies.sh
- run: make sparse
documentation:
+ name: documentation
needs: ci-config
if: needs.ci-config.outputs.enabled == 'yes'
env:
diff --git a/README.md b/README.md
index eb8115e6b04..f6f43e78deb 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-[![Build status](https://github.com/git/git/workflows/CI/PR/badge.svg)](https://github.com/git/git/actions?query=branch%3Amaster+event%3Apush)
+[![Build status](https://github.com/git/git/workflows/CI/badge.svg)](https://github.com/git/git/actions?query=branch%3Amaster+event%3Apush)
Git - fast, scalable, distributed revision control system
=========================================================
--
2.34.0.823.gcc3243ae16c
^ permalink raw reply related [flat|nested] 38+ messages in thread
* Re: [PATCH v2 2/6] CI: use shorter names that fit in UX tooltips
2021-11-20 3:28 ` [PATCH v2 2/6] CI: use shorter names that fit in UX tooltips Ævar Arnfjörð Bjarmason
@ 2021-11-20 7:01 ` Victoria Dye
0 siblings, 0 replies; 38+ messages in thread
From: Victoria Dye @ 2021-11-20 7:01 UTC (permalink / raw)
To: Ævar Arnfjörð Bjarmason, git
Cc: Junio C Hamano, Johannes Schindelin, SZEDER Gábor
Ævar Arnfjörð Bjarmason wrote:
> Change the names used for the GitHub CI workflows to be short enough
> to (mostly) fit in the pop-up tool-tips that GitHub shows in the
> commit view. I.e. when mouse-clicking on the passing or failing
> check-mark next to the commit subject.
>
> These names are seemingly truncated to 17-20 characters followed by
> three dots ("..."). Since a "CI/PR / " prefix is added to them the job
> names looked like this before (windows-test and vs-test jobs omitted):
>
> CI/PR / ci-config (p...
> CI/PR / windows-buil...
> CI/PR / vs-build (pu...
> CI/PR / regular (lin...
> CI/PR / regular (lin...
> CI/PR / regular (os...
> CI/PR / regular (os...
> CI/PR / regular (lin...
> CI/PR / regular (lin...
> CI/PR / dockerized (...
> CI/PR / dockerized (...
> CI/PR / dockerized (...
> CI/PR / static-anal...
> CI/PR / sparse (pu...
> CI/PR / documenta...
>
> By omitting the "/PR" from the top-level name, and pushing the
> $jobname to the front we'll now instead get:
>
> CI / config (push)
> CI / win build (push...
> CI / win+VS build (...
> CI / linux-clang (ub...
> CI / linux-gcc (ubun...
> CI / osx-clang (osx)...
> CI / osx-gcc (osx) (...
> CI / linux-gcc-defau...
> CI / linux-leaks (ub...
> CI / linux-musl (alp...
> CI / Linux32 (daald/...
> CI / pedantic (fedor...
> CI / static-analysis...
> CI / sparse (push)...
> CI / documentation
>
> We then have no truncation in the expanded view. See [1] for how it
> looked before, [2] for a currently visible CI run using this commit,
> and [3] for the GitHub workflow syntax involved being changed here.
>
> Let's also add a field for the "os" and use it where appropriate, it's
> occasionally useful to know we're running on say ubuntu
> v.s. fedora (but the "-latest" suffix isn't very useful, that applies
> to almost all the jobs.
>
> 1. https://github.com/git/git/tree/master/
> 2. https://github.com/avar/git/tree/avar/ci-rm-travis-cleanup-ci-names-2
> 3. https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions
>
> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
> ---
> .github/workflows/main.yml | 16 +++++++++++++++-
> README.md | 2 +-
> 2 files changed, 16 insertions(+), 2 deletions(-)
>
> diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
> index 6ed6a9e8076..612b475fd0b 100644
> --- a/.github/workflows/main.yml
> +++ b/.github/workflows/main.yml
> @@ -1,4 +1,4 @@
> -name: CI/PR
> +name: CI
>
> on: [push, pull_request]
>
> @@ -7,6 +7,7 @@ env:
>
> jobs:
> ci-config:
> + name: config
> runs-on: ubuntu-latest
> outputs:
> enabled: ${{ steps.check-ref.outputs.enabled }}${{ steps.skip-if-redundant.outputs.enabled }}
> @@ -77,6 +78,7 @@ jobs:
> }
>
> windows-build:
> + name: win build
> needs: ci-config
> if: needs.ci-config.outputs.enabled == 'yes'
> runs-on: windows-latest
> @@ -97,6 +99,7 @@ jobs:
> name: windows-artifacts
> path: artifacts
> windows-test:
> + name: win test
> runs-on: windows-latest
> needs: [windows-build]
> strategy:
> @@ -127,6 +130,7 @@ jobs:
> name: failed-tests-windows
> path: ${{env.FAILED_TEST_ARTIFACTS}}
> vs-build:
> + name: win+VS build
> needs: ci-config
> if: needs.ci-config.outputs.enabled == 'yes'
> env:
> @@ -178,6 +182,7 @@ jobs:
> name: vs-artifacts
> path: artifacts
> vs-test:
> + name: win+VS test
> runs-on: windows-latest
> needs: vs-build
> strategy:
> @@ -210,6 +215,7 @@ jobs:
> name: failed-tests-windows
> path: ${{env.FAILED_TEST_ARTIFACTS}}
> regular:
> + name: ${{matrix.vector.jobname}} (${{matrix.vector.os}})
The consequence of explicitly removing `-latest` (as you mentioned in the
commit message) is the addition of the new `os` field just to remove that
suffix (+renaming 'macos' to 'osx' to - I assume - save a bit more space).
Keeping the `-latest` doesn't really seem to hurt your goal of improving the
tooltips, though; worst case, the `-latest` would be what's cut off in the
tooltip. The main reason I bring this up is because I'd generally prefer
reusing existing fields wherever possible - e.g. something like this:
name: ${{matrix.vector.jobname}} (${{matrix.vector.pool}})
...which has the added benefits of 1) fully reflecting the agents used
(potentially beneficial e.g., if we switched from `macos-latest` to
`macos-10.15`) and 2) better matching the way you've set up the docker
image-based jobs later on.
> needs: ci-config
> if: needs.ci-config.outputs.enabled == 'yes'
> strategy:
> @@ -218,21 +224,27 @@ jobs:
> vector:
> - jobname: linux-clang
> cc: clang
> + os: ubuntu
> pool: ubuntu-latest
> - jobname: linux-gcc
> cc: gcc
> + os: ubuntu
> pool: ubuntu-latest
> - jobname: osx-clang
> cc: clang
> + os: osx
> pool: macos-latest
> - jobname: osx-gcc
> cc: gcc
> + os: osx
> pool: macos-latest
> - jobname: linux-gcc-default
> cc: gcc
> + os: ubuntu
> pool: ubuntu-latest
> - jobname: linux-leaks
> cc: gcc
> + os: ubuntu
> pool: ubuntu-latest
> env:
> CC: ${{matrix.vector.cc}}
> @@ -251,6 +263,7 @@ jobs:
> name: failed-tests-${{matrix.vector.jobname}}
> path: ${{env.FAILED_TEST_ARTIFACTS}}
> dockerized:
> + name: ${{matrix.vector.jobname}} (${{matrix.vector.image}})
> needs: ci-config
> if: needs.ci-config.outputs.enabled == 'yes'
> strategy:
> @@ -310,6 +323,7 @@ jobs:
> run: ci/install-dependencies.sh
> - run: make sparse
> documentation:
> + name: documentation
> needs: ci-config
> if: needs.ci-config.outputs.enabled == 'yes'
> env:
> diff --git a/README.md b/README.md
> index eb8115e6b04..f6f43e78deb 100644
> --- a/README.md
> +++ b/README.md
> @@ -1,4 +1,4 @@
> -[![Build status](https://github.com/git/git/workflows/CI/PR/badge.svg)](https://github.com/git/git/actions?query=branch%3Amaster+event%3Apush)
> +[![Build status](https://github.com/git/git/workflows/CI/badge.svg)](https://github.com/git/git/actions?query=branch%3Amaster+event%3Apush)
>
> Git - fast, scalable, distributed revision control system
> =========================================================
>
Overall, I like the fact that platform info is retained in this version
(while also managing to shorten names and/or make the non-truncated parts
more helpful). Thank you for the update!
^ permalink raw reply [flat|nested] 38+ messages in thread
* [PATCH v2 3/6] CI: rename the "Linux32" job to lower-case "linux32"
2021-11-20 3:28 ` [PATCH v2 0/6] CI: Remove Travis CI, shorten names for GH tooltips, split jobs Ævar Arnfjörð Bjarmason
2021-11-20 3:28 ` [PATCH v2 1/6] CI: remove Travis CI support Ævar Arnfjörð Bjarmason
2021-11-20 3:28 ` [PATCH v2 2/6] CI: use shorter names that fit in UX tooltips Ævar Arnfjörð Bjarmason
@ 2021-11-20 3:28 ` Ævar Arnfjörð Bjarmason
2021-11-20 3:28 ` [PATCH v2 4/6] CI: use "$runs_on_pool", not "$jobname" to select packages & config Ævar Arnfjörð Bjarmason
` (4 subsequent siblings)
7 siblings, 0 replies; 38+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2021-11-20 3:28 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Johannes Schindelin, SZEDER Gábor,
Victoria Dye, Ævar Arnfjörð Bjarmason
As a follow-up to the preceding commit's shortening of CI job names,
rename the only job that starts with an upper-case letter to be
consistent with the rest. It was added in 88dedd5e72c (Travis: also
test on 32-bit Linux, 2017-03-05).
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
.github/workflows/main.yml | 3 ++-
ci/install-docker-dependencies.sh | 2 +-
ci/lib.sh | 2 +-
ci/run-docker-build.sh | 2 +-
ci/run-docker.sh | 2 +-
5 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 612b475fd0b..a91edec46d8 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -272,7 +272,8 @@ jobs:
vector:
- jobname: linux-musl
image: alpine
- - jobname: Linux32
+ - jobname: linux32
+ os: ubuntu32
image: daald/ubuntu32:xenial
- jobname: pedantic
image: fedora
diff --git a/ci/install-docker-dependencies.sh b/ci/install-docker-dependencies.sh
index 07a8c6b199d..78b7e326da6 100755
--- a/ci/install-docker-dependencies.sh
+++ b/ci/install-docker-dependencies.sh
@@ -4,7 +4,7 @@
#
case "$jobname" in
-Linux32)
+linux32)
linux32 --32bit i386 sh -c '
apt update >/dev/null &&
apt install -y build-essential libcurl4-openssl-dev \
diff --git a/ci/lib.sh b/ci/lib.sh
index 73d959e87f7..0b3b0144882 100755
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -191,7 +191,7 @@ osx-clang|osx-gcc)
;;
linux-gcc-default)
;;
-Linux32)
+linux32)
CC=gcc
;;
linux-musl)
diff --git a/ci/run-docker-build.sh b/ci/run-docker-build.sh
index 5d2764ad3a3..6cd832efb9c 100755
--- a/ci/run-docker-build.sh
+++ b/ci/run-docker-build.sh
@@ -15,7 +15,7 @@ then
fi
case "$jobname" in
-Linux32)
+linux32)
switch_cmd="linux32 --32bit i386"
;;
linux-musl)
diff --git a/ci/run-docker.sh b/ci/run-docker.sh
index b610dd4db84..af89d1624a4 100755
--- a/ci/run-docker.sh
+++ b/ci/run-docker.sh
@@ -6,7 +6,7 @@
. ${0%/*}/lib.sh
case "$jobname" in
-Linux32)
+linux32)
CI_CONTAINER="daald/ubuntu32:xenial"
;;
linux-musl)
--
2.34.0.823.gcc3243ae16c
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 4/6] CI: use "$runs_on_pool", not "$jobname" to select packages & config
2021-11-20 3:28 ` [PATCH v2 0/6] CI: Remove Travis CI, shorten names for GH tooltips, split jobs Ævar Arnfjörð Bjarmason
` (2 preceding siblings ...)
2021-11-20 3:28 ` [PATCH v2 3/6] CI: rename the "Linux32" job to lower-case "linux32" Ævar Arnfjörð Bjarmason
@ 2021-11-20 3:28 ` Ævar Arnfjörð Bjarmason
2021-11-20 3:28 ` [PATCH v2 5/6] CI: don't run "make test" twice in one job Ævar Arnfjörð Bjarmason
` (3 subsequent siblings)
7 siblings, 0 replies; 38+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2021-11-20 3:28 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Johannes Schindelin, SZEDER Gábor,
Victoria Dye, Ævar Arnfjörð Bjarmason
Change the setup hooks for the CI to use "$runs_on_pool" for the
"$regular" job. Now we won't need as much boilerplate when adding new
jobs to the "regular" matrix, see 956d2e4639b (tests: add a test mode
for SANITIZE=leak, run it in CI, 2021-09-23) for the last such commit.
I.e. now instead of needing to enumerate each jobname when we select
packages we can install things depending on the pool we're running
in.
That we didn't do this dates back to the now gone dependency on Travis
CI, but even if we add a new CI target in the future this'll be easier
to port over, since we can probably treat "ubuntu-latest" as a
stand-in for some recent Linux that can run "apt" commands.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
.github/workflows/main.yml | 4 ++++
ci/install-dependencies.sh | 32 ++++++++++++++------------------
ci/lib.sh | 21 +++++++++++----------
3 files changed, 29 insertions(+), 28 deletions(-)
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index a91edec46d8..097be4c4405 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -229,6 +229,7 @@ jobs:
- jobname: linux-gcc
cc: gcc
os: ubuntu
+ cc_package: gcc-8
pool: ubuntu-latest
- jobname: osx-clang
cc: clang
@@ -237,6 +238,7 @@ jobs:
- jobname: osx-gcc
cc: gcc
os: osx
+ cc_package: gcc-9
pool: macos-latest
- jobname: linux-gcc-default
cc: gcc
@@ -248,7 +250,9 @@ jobs:
pool: ubuntu-latest
env:
CC: ${{matrix.vector.cc}}
+ CC_PACKAGE: ${{matrix.vector.cc_package}}
jobname: ${{matrix.vector.jobname}}
+ runs_on_pool: ${{matrix.vector.pool}}
runs-on: ${{matrix.vector.pool}}
steps:
- uses: actions/checkout@v2
diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
index 92e11c7198e..ca1eaa49c14 100755
--- a/ci/install-dependencies.sh
+++ b/ci/install-dependencies.sh
@@ -11,17 +11,11 @@ UBUNTU_COMMON_PKGS="make libssl-dev libcurl4-openssl-dev libexpat-dev
tcl tk gettext zlib1g-dev perl-modules liberror-perl libauthen-sasl-perl
libemail-valid-perl libio-socket-ssl-perl libnet-smtp-ssl-perl"
-case "$jobname" in
-linux-clang|linux-gcc|linux-leaks)
+case "$runs_on_pool" in
+ubuntu-latest)
sudo apt-get -q update
sudo apt-get -q -y install language-pack-is libsvn-perl apache2 \
- $UBUNTU_COMMON_PKGS
- case "$jobname" in
- linux-gcc)
- sudo apt-get -q -y install gcc-8
- ;;
- esac
-
+ $UBUNTU_COMMON_PKGS $CC_PACKAGE
mkdir --parents "$P4_PATH"
pushd "$P4_PATH"
wget --quiet "$P4WHENCE/bin.linux26x86_64/p4d"
@@ -36,7 +30,7 @@ linux-clang|linux-gcc|linux-leaks)
cp git-lfs-$LINUX_GIT_LFS_VERSION/git-lfs .
popd
;;
-osx-clang|osx-gcc)
+macos-latest)
export HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1
# Uncomment this if you want to run perf tests:
# brew install gnu-time
@@ -50,15 +44,17 @@ osx-clang|osx-gcc)
brew install --cask --no-quarantine perforce
} ||
brew install homebrew/cask/perforce
- case "$jobname" in
- osx-gcc)
- brew install gcc@9
- # Just in case the image is updated to contain gcc@9
- # pre-installed but not linked.
- brew link gcc@9
- ;;
- esac
+
+ if test -n "$CC_PACKAGE"
+ then
+ BREW_PACKAGE=${CC_PACKAGE/-/@}
+ brew install "$BREW_PACKAGE"
+ brew link "$BREW_PACKAGE"
+ fi
;;
+esac
+
+case "$jobname" in
StaticAnalysis)
sudo apt-get -q update
sudo apt-get -q -y install coccinelle libcurl4-openssl-dev libssl-dev \
diff --git a/ci/lib.sh b/ci/lib.sh
index 0b3b0144882..cbc2f8f1caa 100755
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -156,11 +156,15 @@ export DEFAULT_TEST_TARGET=prove
export GIT_TEST_CLONE_2GB=true
export SKIP_DASHED_BUILT_INS=YesPlease
-case "$jobname" in
-linux-clang|linux-gcc|linux-leaks)
+case "$runs_on_pool" in
+ubuntu-latest)
+ if test "$jobname" = "linux-gcc-default"
+ then
+ break
+ fi
+
if [ "$jobname" = linux-gcc ]
then
- export CC=gcc-8
MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/python3"
else
MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/python2"
@@ -180,17 +184,17 @@ linux-clang|linux-gcc|linux-leaks)
GIT_LFS_PATH="$HOME/custom/git-lfs"
export PATH="$GIT_LFS_PATH:$P4_PATH:$PATH"
;;
-osx-clang|osx-gcc)
+macos-latest)
if [ "$jobname" = osx-gcc ]
then
- export CC=gcc-9
MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python3)"
else
MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python2)"
fi
;;
-linux-gcc-default)
- ;;
+esac
+
+case "$jobname" in
linux32)
CC=gcc
;;
@@ -200,9 +204,6 @@ linux-musl)
MAKEFLAGS="$MAKEFLAGS NO_REGEX=Yes ICONV_OMITS_BOM=Yes"
MAKEFLAGS="$MAKEFLAGS GIT_TEST_UTF8_LOCALE=C.UTF-8"
;;
-esac
-
-case "$jobname" in
linux-leaks)
export SANITIZE=leak
export GIT_TEST_PASSING_SANITIZE_LEAK=true
--
2.34.0.823.gcc3243ae16c
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 5/6] CI: don't run "make test" twice in one job
2021-11-20 3:28 ` [PATCH v2 0/6] CI: Remove Travis CI, shorten names for GH tooltips, split jobs Ævar Arnfjörð Bjarmason
` (3 preceding siblings ...)
2021-11-20 3:28 ` [PATCH v2 4/6] CI: use "$runs_on_pool", not "$jobname" to select packages & config Ævar Arnfjörð Bjarmason
@ 2021-11-20 3:28 ` Ævar Arnfjörð Bjarmason
2021-11-20 3:28 ` [PATCH v2 6/6] CI: run "documentation" via run-build-and-test.sh Ævar Arnfjörð Bjarmason
` (2 subsequent siblings)
7 siblings, 0 replies; 38+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2021-11-20 3:28 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Johannes Schindelin, SZEDER Gábor,
Victoria Dye, Ævar Arnfjörð Bjarmason
The "linux-clang" and "linux-gcc" jobs both run "make test" twice, but
with different environment variables. Running these in sequence seems
to have been done to work around some constraint on Travis, see
ae59a4e44f3 (travis: run tests with GIT_TEST_SPLIT_INDEX, 2018-01-07).
By having these run in parallel we'll get jobs that finish much sooner
than they otherwise would have.
We can also simplify the control flow in "ci/run-build-and-tests.sh"
as a result, since we won't run "make test" twice we don't need to run
"make" twice at all, let's default to "make all test" after setting
the variables, and then override it to just "all" for the compile-only
tests.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
.github/workflows/main.yml | 9 +++++++++
ci/run-build-and-tests.sh | 26 ++++++++++++--------------
2 files changed, 21 insertions(+), 14 deletions(-)
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 097be4c4405..63fff2744ad 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -226,11 +226,20 @@ jobs:
cc: clang
os: ubuntu
pool: ubuntu-latest
+ - jobname: linux-sha256
+ cc: clang
+ os: ubuntu
+ pool: ubuntu-latest
- jobname: linux-gcc
cc: gcc
os: ubuntu
cc_package: gcc-8
pool: ubuntu-latest
+ - jobname: linux-TEST-vars
+ cc: gcc
+ os: ubuntu
+ cc_package: gcc-8
+ pool: ubuntu-latest
- jobname: osx-clang
cc: clang
os: osx
diff --git a/ci/run-build-and-tests.sh b/ci/run-build-and-tests.sh
index cc62616d806..16840b2065d 100755
--- a/ci/run-build-and-tests.sh
+++ b/ci/run-build-and-tests.sh
@@ -10,16 +10,13 @@ windows*) cmd //c mklink //j t\\.prove "$(cygpath -aw "$cache_dir/.prove")";;
*) ln -s "$cache_dir/.prove" t/.prove;;
esac
-if test "$jobname" = "pedantic"
-then
- export DEVOPTS=pedantic
-fi
+export MAKE_TARGETS="all test"
-make
case "$jobname" in
linux-gcc)
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
- make test
+ ;;
+linux-TEST-vars)
export GIT_TEST_SPLIT_INDEX=yes
export GIT_TEST_MERGE_ALGORITHM=recursive
export GIT_TEST_FULL_IN_PACK_ARRAY=true
@@ -33,23 +30,24 @@ linux-gcc)
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master
export GIT_TEST_WRITE_REV_INDEX=1
export GIT_TEST_CHECKOUT_WORKERS=2
- make test
;;
linux-clang)
export GIT_TEST_DEFAULT_HASH=sha1
- make test
+ ;;
+linux-sha256)
export GIT_TEST_DEFAULT_HASH=sha256
- make test
;;
-linux-gcc-4.8|pedantic)
- # Don't run the tests; we only care about whether Git can be
- # built with GCC 4.8 or with pedantic
+pedantic)
+ export DEVOPTS=pedantic
+ export MAKE_TARGETS=all
;;
-*)
- make test
+linux-gcc-4.8)
+ export MAKE_TARGETS=all
;;
esac
+make $MAKE_TARGETS
+
check_unignored_build_artifacts
save_good_tree
--
2.34.0.823.gcc3243ae16c
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 6/6] CI: run "documentation" via run-build-and-test.sh
2021-11-20 3:28 ` [PATCH v2 0/6] CI: Remove Travis CI, shorten names for GH tooltips, split jobs Ævar Arnfjörð Bjarmason
` (4 preceding siblings ...)
2021-11-20 3:28 ` [PATCH v2 5/6] CI: don't run "make test" twice in one job Ævar Arnfjörð Bjarmason
@ 2021-11-20 3:28 ` Ævar Arnfjörð Bjarmason
2021-11-20 8:05 ` [PATCH v2 0/6] CI: Remove Travis CI, shorten names for GH tooltips, split jobs Johannes Schindelin
2021-11-20 12:10 ` [PATCH v3 0/5] " Ævar Arnfjörð Bjarmason
7 siblings, 0 replies; 38+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2021-11-20 3:28 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Johannes Schindelin, SZEDER Gábor,
Victoria Dye, Ævar Arnfjörð Bjarmason
Now that we've taught the build and test script to accept arbitrary
"make" targets it becomes easy to split up the "asciidoc" and
"asciidoctor" jobs, and to have the "ci/run-build-and-tests.sh" do the
"make" test of building the documentation. I.e. we'll run both of:
make check-builtins check-docs
make check-builtins check-docs USE_ASCIIDOCTOR=Y
As noted in 505ad91304e (travis-ci: check AsciiDoc/AsciiDoctor stderr
output, 2017-04-26) we need to keep checking the stderr that's emitted
by these, so let's add that special-case to
"ci/run-build-and-tests.sh".
The other doc-specific tests added in b98712b9aa9 (travis-ci: build
documentation, 2016-05-04) and 159e6010c2d (travis-ci: build
documentation with AsciiDoc and Asciidoctor, 2017-04-11) should live
in "ci/test-documentation.sh".
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
.github/workflows/main.yml | 14 +++++++++++---
ci/install-dependencies.sh | 2 +-
ci/lib.sh | 2 +-
ci/run-build-and-tests.sh | 29 ++++++++++++++++++++++------
ci/test-documentation.sh | 39 ++++++++++++++++----------------------
5 files changed, 52 insertions(+), 34 deletions(-)
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 63fff2744ad..c6aed3d2758 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -337,13 +337,21 @@ jobs:
run: ci/install-dependencies.sh
- run: make sparse
documentation:
- name: documentation
+ name: ${{matrix.vector.jobname}}
needs: ci-config
if: needs.ci-config.outputs.enabled == 'yes'
+ strategy:
+ fail-fast: false
+ matrix:
+ vector:
+ - jobname: doc-asciidoc
+ - jobname: doc-asciidoctor
+ makeflags: USE_ASCIIDOCTOR=Y
env:
- jobname: Documentation
+ jobname: ${{matrix.vector.jobname}}
+ MAKE_TARGETS: check-builtins check-docs doc ${{matrix.vector.makeflags}}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: ci/install-dependencies.sh
- - run: ci/test-documentation.sh
+ - run: ci/run-build-and-tests.sh
diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
index ca1eaa49c14..4a30713645a 100755
--- a/ci/install-dependencies.sh
+++ b/ci/install-dependencies.sh
@@ -65,7 +65,7 @@ sparse)
sudo apt-get -q -y install libssl-dev libcurl4-openssl-dev \
libexpat-dev gettext zlib1g-dev
;;
-Documentation)
+doc-*)
sudo apt-get -q update
sudo apt-get -q -y install asciidoc xmlto docbook-xsl-ns make
diff --git a/ci/lib.sh b/ci/lib.sh
index cbc2f8f1caa..3afa95333ed 100755
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -83,7 +83,7 @@ check_unignored_build_artifacts ()
export TERM=${TERM:-dumb}
# Clear MAKEFLAGS that may come from the outside world.
-export MAKEFLAGS=
+export MAKEFLAGS="${MAKEFLAGS:+$MAKEFLAGS }$EXTRA_MAKEFLAGS"
# Set 'exit on error' for all CI scripts to let the caller know that
# something went wrong.
diff --git a/ci/run-build-and-tests.sh b/ci/run-build-and-tests.sh
index 16840b2065d..a5f782db1f7 100755
--- a/ci/run-build-and-tests.sh
+++ b/ci/run-build-and-tests.sh
@@ -5,12 +5,10 @@
. ${0%/*}/lib.sh
-case "$CI_OS_NAME" in
-windows*) cmd //c mklink //j t\\.prove "$(cygpath -aw "$cache_dir/.prove")";;
-*) ln -s "$cache_dir/.prove" t/.prove;;
-esac
-
-export MAKE_TARGETS="all test"
+if test -z "$MAKE_TARGETS"
+then
+ export MAKE_TARGETS="all test"
+fi
case "$jobname" in
linux-gcc)
@@ -46,6 +44,25 @@ linux-gcc-4.8)
;;
esac
+case "$MAKE_TARGETS" in
+*test*)
+ case "$CI_OS_NAME" in
+ windows*) cmd //c mklink //j t\\.prove "$(cygpath -aw "$cache_dir/.prove")";;
+ *) ln -s "$cache_dir/.prove" t/.prove;;
+ esac
+ ;;
+esac
+
+case "$jobname" in
+doc-*)
+ # This "make" command requireds bash-specific redirection
+ ${0%/*}/test-documentation.sh
+ ;;
+*)
+ make $MAKE_TARGETS
+ ;;
+esac
+
make $MAKE_TARGETS
check_unignored_build_artifacts
diff --git a/ci/test-documentation.sh b/ci/test-documentation.sh
index de41888430a..898c33e74ba 100755
--- a/ci/test-documentation.sh
+++ b/ci/test-documentation.sh
@@ -14,32 +14,25 @@ filter_log () {
"$1"
}
-make check-builtins
-make check-docs
-
-# Build docs with AsciiDoc
-make doc > >(tee stdout.log) 2> >(tee stderr.raw >&2)
-cat stderr.raw
-filter_log stderr.raw >stderr.log
-test ! -s stderr.log
-test -s Documentation/git.html
-test -s Documentation/git.xml
-test -s Documentation/git.1
-grep '<meta name="generator" content="AsciiDoc ' Documentation/git.html
-
-rm -f stdout.log stderr.log stderr.raw
-check_unignored_build_artifacts
-
-# Build docs with AsciiDoctor
-make clean
-make USE_ASCIIDOCTOR=1 doc > >(tee stdout.log) 2> >(tee stderr.raw >&2)
+make $MAKE_TARGETS > >(tee stdout.log) 2> >(tee stderr.raw >&2)
cat stderr.raw
filter_log stderr.raw >stderr.log
test ! -s stderr.log
-test -s Documentation/git.html
-grep '<meta name="generator" content="Asciidoctor ' Documentation/git.html
rm -f stdout.log stderr.log stderr.raw
-check_unignored_build_artifacts
-save_good_tree
+case $jobname in
+doc-asciidoc)
+ test -s Documentation/git.html
+ test -s Documentation/git.xml
+ test -s Documentation/git.1
+ grep '<meta name="generator" content="AsciiDoc ' Documentation/git.html
+ ;;
+doc-asciidoctor)
+ test -s Documentation/git.html
+ grep '<meta name="generator" content="Asciidoctor ' Documentation/git.html
+ ;;
+*)
+ exit 1
+ ;;
+esac
--
2.34.0.823.gcc3243ae16c
^ permalink raw reply related [flat|nested] 38+ messages in thread
* Re: [PATCH v2 0/6] CI: Remove Travis CI, shorten names for GH tooltips, split jobs
2021-11-20 3:28 ` [PATCH v2 0/6] CI: Remove Travis CI, shorten names for GH tooltips, split jobs Ævar Arnfjörð Bjarmason
` (5 preceding siblings ...)
2021-11-20 3:28 ` [PATCH v2 6/6] CI: run "documentation" via run-build-and-test.sh Ævar Arnfjörð Bjarmason
@ 2021-11-20 8:05 ` Johannes Schindelin
2021-11-20 12:14 ` Ævar Arnfjörð Bjarmason
2021-11-20 12:10 ` [PATCH v3 0/5] " Ævar Arnfjörð Bjarmason
7 siblings, 1 reply; 38+ messages in thread
From: Johannes Schindelin @ 2021-11-20 8:05 UTC (permalink / raw)
To: Ævar Arnfjörð Bjarmason, git
Cc: Junio C Hamano, SZEDER Gábor, Victoria Dye
On November 20, 2021 4:28:30 AM GMT+01:00, "Ævar Arnfjörð Bjarmason" <avarab@gmail.com> wrote:
>
> CI: remove Travis CI support
This is a patch I am in favor of, and would prefer in its own patch "series": separation of concern, and consideration in avoiding reviewer fatigue, are two aspects I would like to see you optimize for a bit more.
> CI: use shorter names that fit in UX tooltips
> CI: rename the "Linux32" job to lower-case "linux32"
> CI: use "$runs_on_pool", not "$jobname" to select packages & config
These strike me as simply shuffling things around and ramping up commit count in git/git, without actually addressing any of the problems our GitHub workflow _definitely_ has.
One quite obvious problem is that any failing run is very cumbersome to diagnose, and you kind of have to know where you're looking. A troublesome and off-putting experience for newcomers (and even some oldtimers). You have to expand the print-failures step logs and search for "not ok" to get even close to the relevant part of the failing test case's details.
Yes, addressing this would be much harder and take more effort than just going ahead and renaming things. It would also be much more useful.
> CI: don't run "make test" twice in one job
I am in favor of the idea. As is obvious from the fact that I already proposed this years ago.
The commit message, however, is mum about that. And about the reasons why my proposal was shot down. And why those reasons should somehow no longer apply (and I would strongly suggest to aim for providing convincing evidence over mere opinions, to back up the patch).
As has been mentioned before, this lack of diligence is disappointing. Reviewers should not be forced to look up previous related discussions on the Git mailing list. I would do that for a first-time contributor, but you are a long-term contributor who clearly has the ability, the knowledge, and the time, to accompany patches with such vital information.
> CI: run "documentation" via run-build-and-test.sh
This patch has a commit message that explains what the patch does, and describes a little bit of related commit history.
It does not talk about any convincing reasons why the change should be desirable.
This is troubling, in particular since it counteracts the major benefit of the preceding patch: to reduce the jobs' runtime.
Also, while the preceding patch makes each job's focus more obvious, so that it no longer requires careful study of the entire test log merely to find out which `GIT_TEST_*` settings are set, _this_ patch crams the check-docs into the same job as the pretty unrelated test suite run. In other words, it combines even _more unrelated_ things into the same job.
So what does this patch series try to accomplish? To shorten the jobs' runtime? Or to extend it? To have a clearer separation of concerns of the individual jobs? Or to muddy the waters by once again doing several things in the same job?
It is quite confusing and strikes me as a patch series that could have used quite a bit more time and polishing and mailing list research and rearranging and splitting up and patch-dropping before unleashing it to the reviewers on the Git mailing list. It does not help that v2 seems to have been rushed out, and tripled in size, no less. If I had the task of wearing out reviewers, that is exactly the type of thing I would do. If I would accept the task.
To end on a positive note: I suggest to split off the Travis CI patch. It should be relatively uncontroversial. Further, I suggest to find the previous patch that split `linux-gcc` on the mailing list, summarize what the conclusion was, and either adjust the equivalent patch in this series accordingly in order to contribute it stand-alone, or drop it. Then, you could use the considerable time you seem to have at your disposal on working towards teaching our workflow to present diagnosable information about build/test failures in a much more immediately consumable manner than it does right now.
Ciao,
Johannes
Hi,
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH v2 0/6] CI: Remove Travis CI, shorten names for GH tooltips, split jobs
2021-11-20 8:05 ` [PATCH v2 0/6] CI: Remove Travis CI, shorten names for GH tooltips, split jobs Johannes Schindelin
@ 2021-11-20 12:14 ` Ævar Arnfjörð Bjarmason
0 siblings, 0 replies; 38+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2021-11-20 12:14 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: git, Junio C Hamano, SZEDER Gábor, Victoria Dye
On Sat, Nov 20 2021, Johannes Schindelin wrote:
> On November 20, 2021 4:28:30 AM GMT+01:00, "Ævar Arnfjörð Bjarmason" <avarab@gmail.com> wrote:
>>
>> CI: remove Travis CI support
>
> This is a patch I am in favor of, and would prefer in its own patch
> "series": separation of concern, and consideration in avoiding
> reviewer fatigue, are two aspects I would like to see you optimize for
> a bit more.
It's included due to a comment on the v1 from Jeff King. I could have
gone either way, but I'm not going to change it around now.
I think it's fair enough to keep up the quality of series's, but I also
don't think it would help to go back & forth with including or not
including this travis removal.
If I don't include it I've got to patch "dead" code for the rest of the
series, if I re-roll and have two sets of patches depending on each
other that's its own reviewer fatigue etc.
For some counter-advice it would be nice to see you optimize for
responding to reviews, cf.:
https://lore.kernel.org/git/211118.86zgq14jp1.gmgdl@evledraar.gmail.com/
:)
>> CI: use shorter names that fit in UX tooltips
>> CI: rename the "Linux32" job to lower-case "linux32"
>> CI: use "$runs_on_pool", not "$jobname" to select packages & config
>
> These strike me as simply shuffling things around and ramping up commit count in git/git, without actually addressing any of the problems our GitHub workflow _definitely_ has.
>
> One quite obvious problem is that any failing run is very cumbersome
> to diagnose, and you kind of have to know where you're looking. A
> troublesome and off-putting experience for newcomers (and even some
> oldtimers). You have to expand the print-failures step logs and search
> for "not ok" to get even close to the relevant part of the failing
> test case's details.
>
> Yes, addressing this would be much harder and take more effort than just going ahead and renaming things. It would also be much more useful.
FWIW I do have patches for that, but getting anything in takes time etc.
To do that properly needed to parse TAP, which I've got patches for in
pure-C (not Perl or whatever) locally.
One of the reasons I didn't submit that UX improvement yet is because I
know it'll run afoul of one of your hobby horses.
I.e. I'll either need to fix in-tree dead code relating to the test
suite's XML generation blindly (it's not used, so how am I going to test
it?), or argue with you about it being worth to remove it to move the
test suite UX forward without having to spending time on it.
Another is that someone (I think SZEDER, hopefully I'm not
misattributing there) pointed out that they liked to have the current
print-failure firehose of "set -x" output for both failures and
successes, and would object to e.g. something that just peeled out the
specific failure output.
I don't think that opinion is wrong (if I even understood it
correctl). I disagree, but I see how it's clearly a matter of
preference. Some would like that, some don't.
But whatever anyone's preference on that I think it clearly shows that
what you're suggesting here isn't as easy as you make it
out.
I.e. something to the effect of "instead of renaming things work on
<thing I consider a clear UX improvement>".
Even if I agree that it would be an improvement in this case others
won't, and getting that past review is a matter of arguing about that,
addressing feedback on that topic etc.
The reason I submitted this is because I thought "I'd like to rename
this thing, not because of bikeshedding, but because I literally cannot
see the relevant information" wouldn't be in any way contentious, but
here we are :)
If you'd like to test some of that referenced UX work out it's
avar/support-test-verbose-under-prove-2 in my git.git clone (the CI
changes aren't there yet, but they're made easy by the changes).
>> CI: don't run "make test" twice in one job
>
> I am in favor of the idea. As is obvious from the fact that I already proposed this years ago.
>
> The commit message, however, is mum about that. And about the reasons
> why my proposal was shot down. And why those reasons should somehow no
> longer apply (and I would strongly suggest to aim for providing
> convincing evidence over mere opinions, to back up the patch).
>
> As has been mentioned before, this lack of diligence is
> disappointing. Reviewers should not be forced to look up previous
> related discussions on the Git mailing list. I would do that for a
> first-time contributor, but you are a long-term contributor who
> clearly has the ability, the knowledge, and the time, to accompany
> patches with such vital information.
I think in terms of over-explaining something in commit messages &
including references to past commit I'm doing better than most in terms
of commit messages to this project.
But you've got to stop somewhere, exhaustive explanations of past
caveats etc. are also its own fatigue.
In this case I think the explanations I've provided as they stand
suffice. Curious archaeologists can always dig in the archives for more.
>> CI: run "documentation" via run-build-and-test.sh
>
> This patch has a commit message that explains what the patch does, and describes a little bit of related commit history.
>
> It does not talk about any convincing reasons why the change should be desirable.
I just ejected this in v3, yeah it's a bit of a mixed bag with the
runtime of the installation.
The benefit, which I thought was a bit too obvious to even point out, is
that you can plainly see which half of asciidoc/asciidoctor fails, or
both. So it's clear if it's a compatibility issue or doc ource issue.
> This is troubling, in particular since it counteracts the major benefit of the preceding patch: to reduce the jobs' runtime.
>
> Also, while the preceding patch makes each job's focus more obvious,
> so that it no longer requires careful study of the entire test log
> merely to find out which `GIT_TEST_*` settings are set, _this_ patch
> crams the check-docs into the same job as the pretty unrelated test
> suite run. In other words, it combines even _more unrelated_ things
> into the same job.
The "check-docs" run was already there in the pre-image, so nothing
changed there.
I agree that it would be beneficial to e.g. split out all this ci/
script wrapping into "make" targets at the top-level, but that's a
separate future improvement.
> [...]
^ permalink raw reply [flat|nested] 38+ messages in thread
* [PATCH v3 0/5] CI: Remove Travis CI, shorten names for GH tooltips, split jobs
2021-11-20 3:28 ` [PATCH v2 0/6] CI: Remove Travis CI, shorten names for GH tooltips, split jobs Ævar Arnfjörð Bjarmason
` (6 preceding siblings ...)
2021-11-20 8:05 ` [PATCH v2 0/6] CI: Remove Travis CI, shorten names for GH tooltips, split jobs Johannes Schindelin
@ 2021-11-20 12:10 ` Ævar Arnfjörð Bjarmason
2021-11-20 12:10 ` [PATCH v3 1/5] CI: remove Travis CI support Ævar Arnfjörð Bjarmason
` (5 more replies)
7 siblings, 6 replies; 38+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2021-11-20 12:10 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Johannes Schindelin, SZEDER Gábor,
Victoria Dye, Ævar Arnfjörð Bjarmason
An update to v3, now using the "pool" names instead of a new "os"
field for the job names. Before (on master):
https://github.com/git/git/runs/4214600139
After:
https://github.com/avar/git/actions/runs/1484426823
I peeled of the last "doc" patch based on Johannes's feedback. As with
the split-up TEST job we'll take more CPU time, but if we can run in
parallel take less wallclock time, but it's not really worth it for
the asciidoc/asciidoctor job with how long the install v.s. build/test
step takes (b.t.w. there was no change to "check-docs" running in
those jobs in v2).
1. https://lore.kernel.org/git/cover-v2-0.6-00000000000-20211120T030848Z-avarab@gmail.com/
Ævar Arnfjörð Bjarmason (5):
CI: remove Travis CI support
CI: use shorter names that fit in UX tooltips
CI: rename the "Linux32" job to lower-case "linux32"
CI: use "$runs_on_pool", not "$jobname" to select packages & config
CI: don't run "make test" twice in one job
.github/workflows/main.yml | 26 ++++++++++++--
.travis.yml | 60 -------------------------------
README.md | 2 +-
ci/install-dependencies.sh | 33 ++++++++---------
ci/install-docker-dependencies.sh | 2 +-
ci/lib.sh | 60 ++++++++-----------------------
ci/print-test-failures.sh | 10 ------
ci/run-build-and-tests.sh | 26 +++++++-------
ci/run-docker-build.sh | 11 +-----
ci/run-docker.sh | 4 +--
10 files changed, 70 insertions(+), 164 deletions(-)
delete mode 100644 .travis.yml
Range-diff against v2:
1: cc94a353ccb = 1: 96433bcc02f CI: remove Travis CI support
2: 73981cedee8 ! 2: b09cd076aeb CI: use shorter names that fit in UX tooltips
@@ Commit message
looked before, [2] for a currently visible CI run using this commit,
and [3] for the GitHub workflow syntax involved being changed here.
- Let's also add a field for the "os" and use it where appropriate, it's
- occasionally useful to know we're running on say ubuntu
- v.s. fedora (but the "-latest" suffix isn't very useful, that applies
- to almost all the jobs.
+ Let's also use the existing "pool" field as before. It's occasionally
+ useful to know we're running on say ubuntu v.s. fedora. The "-latest"
+ suffix is useful to some[4], and since it's now at the end it doesn't
+ hurt readability in the short view compared to saying "ubuntu" or
+ "macos".
1. https://github.com/git/git/tree/master/
- 2. https://github.com/avar/git/tree/avar/ci-rm-travis-cleanup-ci-names-2
+ 2. https://github.com/avar/git/tree/avar/ci-rm-travis-cleanup-ci-names-3
3. https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions
+ 3. https://lore.kernel.org/git/d9b07ca5-b58d-a535-d25b-85d7f12e6295@github.com/
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
@@ .github/workflows/main.yml: jobs:
name: failed-tests-windows
path: ${{env.FAILED_TEST_ARTIFACTS}}
regular:
-+ name: ${{matrix.vector.jobname}} (${{matrix.vector.os}})
++ name: ${{matrix.vector.jobname}} (${{matrix.vector.pool}})
needs: ci-config
if: needs.ci-config.outputs.enabled == 'yes'
strategy:
-@@ .github/workflows/main.yml: jobs:
- vector:
- - jobname: linux-clang
- cc: clang
-+ os: ubuntu
- pool: ubuntu-latest
- - jobname: linux-gcc
- cc: gcc
-+ os: ubuntu
- pool: ubuntu-latest
- - jobname: osx-clang
- cc: clang
-+ os: osx
- pool: macos-latest
- - jobname: osx-gcc
- cc: gcc
-+ os: osx
- pool: macos-latest
- - jobname: linux-gcc-default
- cc: gcc
-+ os: ubuntu
- pool: ubuntu-latest
- - jobname: linux-leaks
- cc: gcc
-+ os: ubuntu
- pool: ubuntu-latest
- env:
- CC: ${{matrix.vector.cc}}
@@ .github/workflows/main.yml: jobs:
name: failed-tests-${{matrix.vector.jobname}}
path: ${{env.FAILED_TEST_ARTIFACTS}}
3: 002c183fff4 = 3: fb1b0ecbadd CI: rename the "Linux32" job to lower-case "linux32"
4: eca0ad08d4b ! 4: 54913e775c1 CI: use "$runs_on_pool", not "$jobname" to select packages & config
@@ Commit message
## .github/workflows/main.yml ##
@@ .github/workflows/main.yml: jobs:
+ pool: ubuntu-latest
- jobname: linux-gcc
cc: gcc
- os: ubuntu
+ cc_package: gcc-8
pool: ubuntu-latest
- jobname: osx-clang
cc: clang
-@@ .github/workflows/main.yml: jobs:
+ pool: macos-latest
- jobname: osx-gcc
cc: gcc
- os: osx
+ cc_package: gcc-9
pool: macos-latest
- jobname: linux-gcc-default
5: a113b8404ed ! 5: 877f27d847c CI: don't run "make test" twice in one job
@@ Commit message
## .github/workflows/main.yml ##
@@ .github/workflows/main.yml: jobs:
+ - jobname: linux-clang
cc: clang
- os: ubuntu
pool: ubuntu-latest
+ - jobname: linux-sha256
+ cc: clang
@@ .github/workflows/main.yml: jobs:
+ pool: ubuntu-latest
- jobname: linux-gcc
cc: gcc
- os: ubuntu
cc_package: gcc-8
pool: ubuntu-latest
+ - jobname: linux-TEST-vars
@@ .github/workflows/main.yml: jobs:
+ pool: ubuntu-latest
- jobname: osx-clang
cc: clang
- os: osx
+ pool: macos-latest
## ci/run-build-and-tests.sh ##
@@ ci/run-build-and-tests.sh: windows*) cmd //c mklink //j t\\.prove "$(cygpath -aw "$cache_dir/.prove")";;
6: 7c423c8283d < -: ----------- CI: run "documentation" via run-build-and-test.sh
--
2.34.0.818.g0f23a581583
^ permalink raw reply [flat|nested] 38+ messages in thread
* [PATCH v3 1/5] CI: remove Travis CI support
2021-11-20 12:10 ` [PATCH v3 0/5] " Ævar Arnfjörð Bjarmason
@ 2021-11-20 12:10 ` Ævar Arnfjörð Bjarmason
2021-11-20 12:10 ` [PATCH v3 2/5] CI: use shorter names that fit in UX tooltips Ævar Arnfjörð Bjarmason
` (4 subsequent siblings)
5 siblings, 0 replies; 38+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2021-11-20 12:10 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Johannes Schindelin, SZEDER Gábor,
Victoria Dye, Ævar Arnfjörð Bjarmason
Remove support for running the CI in travis. The last builds in it are
from 5 months ago[1] (as of 2021-11-19), and our documentation has
referred to GitHub CI instead since f003a91f5c5 (SubmittingPatches:
replace discussion of Travis with GitHub Actions, 2021-07-22).
We'll now run the "t9810 t9816" and tests on OSX. We didn't before, as
we'd carried the Travis exclusion of them forward from
522354d70f4 (Add Travis CI support, 2015-11-27). Let's hope whatever
issue there was with them was either Travis specific, or fixed since
then (I'm not sure).
The "apt-add-repository" invocation (which we were doing in GitHub CI)
isn't needed, it was another Travis-only case that was carried forward
into more general code. See 0f0c51181df (travis-ci: install packages
in 'ci/install-dependencies.sh', 2018-11-01).
1. https://travis-ci.org/github/git/git/builds
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
.travis.yml | 60 --------------------------------------
ci/install-dependencies.sh | 1 -
ci/lib.sh | 37 ++---------------------
ci/print-test-failures.sh | 10 -------
ci/run-docker-build.sh | 9 ------
ci/run-docker.sh | 2 +-
6 files changed, 4 insertions(+), 115 deletions(-)
delete mode 100644 .travis.yml
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 908330a0a3d..00000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-language: c
-
-cache:
- directories:
- - $HOME/travis-cache
-
-os:
- - linux
- - osx
-
-osx_image: xcode10.1
-
-compiler:
- - clang
- - gcc
-
-matrix:
- include:
- - env: jobname=linux-gcc-default
- os: linux
- compiler:
- addons:
- before_install:
- - env: jobname=linux-gcc-4.8
- os: linux
- dist: trusty
- compiler:
- - env: jobname=Linux32
- os: linux
- compiler:
- addons:
- services:
- - docker
- before_install:
- script: ci/run-docker.sh
- - env: jobname=linux-musl
- os: linux
- compiler:
- addons:
- services:
- - docker
- before_install:
- script: ci/run-docker.sh
- - env: jobname=StaticAnalysis
- os: linux
- compiler:
- script: ci/run-static-analysis.sh
- after_failure:
- - env: jobname=Documentation
- os: linux
- compiler:
- script: ci/test-documentation.sh
- after_failure:
-
-before_install: ci/install-dependencies.sh
-script: ci/run-build-and-tests.sh
-after_failure: ci/print-test-failures.sh
-
-notifications:
- email: false
diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
index 1d0e48f4515..92e11c7198e 100755
--- a/ci/install-dependencies.sh
+++ b/ci/install-dependencies.sh
@@ -13,7 +13,6 @@ UBUNTU_COMMON_PKGS="make libssl-dev libcurl4-openssl-dev libexpat-dev
case "$jobname" in
linux-clang|linux-gcc|linux-leaks)
- sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
sudo apt-get -q update
sudo apt-get -q -y install language-pack-is libsvn-perl apache2 \
$UBUNTU_COMMON_PKGS
diff --git a/ci/lib.sh b/ci/lib.sh
index 82cb17f8eea..73d959e87f7 100755
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -34,7 +34,7 @@ save_good_tree () {
# successfully before (e.g. because the branch got rebased, changing only
# the commit messages).
skip_good_tree () {
- if test "$TRAVIS_DEBUG_MODE" = true || test true = "$GITHUB_ACTIONS"
+ if test true = "$GITHUB_ACTIONS"
then
return
fi
@@ -60,7 +60,7 @@ skip_good_tree () {
cat <<-EOF
$(tput setaf 2)Skipping build job for commit $CI_COMMIT.$(tput sgr0)
This commit's tree has already been built and tested successfully in build job $prev_good_job_number for commit $prev_good_commit.
- The log of that build job is available at $(url_for_job_id $prev_good_job_id)
+ The log of that build job is available at $SYSTEM_TASKDEFINITIONSURI$SYSTEM_TEAMPROJECT/_build/results?buildId=$prev_good_job_id
To force a re-build delete the branch's cache and then hit 'Restart job'.
EOF
fi
@@ -91,29 +91,7 @@ export MAKEFLAGS=
# and installing dependencies.
set -ex
-if test true = "$TRAVIS"
-then
- CI_TYPE=travis
- # When building a PR, TRAVIS_BRANCH refers to the *target* branch. Not
- # what we want here. We want the source branch instead.
- CI_BRANCH="${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH}"
- CI_COMMIT="$TRAVIS_COMMIT"
- CI_JOB_ID="$TRAVIS_JOB_ID"
- CI_JOB_NUMBER="$TRAVIS_JOB_NUMBER"
- CI_OS_NAME="$TRAVIS_OS_NAME"
- CI_REPO_SLUG="$TRAVIS_REPO_SLUG"
-
- cache_dir="$HOME/travis-cache"
-
- url_for_job_id () {
- echo "https://travis-ci.org/$CI_REPO_SLUG/jobs/$1"
- }
-
- BREW_INSTALL_PACKAGES="git-lfs gettext"
- export GIT_PROVE_OPTS="--timer --jobs 3 --state=failed,slow,save"
- export GIT_TEST_OPTS="--verbose-log -x --immediate"
- MAKEFLAGS="$MAKEFLAGS --jobs=2"
-elif test -n "$SYSTEM_COLLECTIONURI" || test -n "$SYSTEM_TASKDEFINITIONSURI"
+if test -n "$SYSTEM_COLLECTIONURI" || test -n "$SYSTEM_TASKDEFINITIONSURI"
then
CI_TYPE=azure-pipelines
# We are running in Azure Pipelines
@@ -130,10 +108,6 @@ then
# among *all* phases)
cache_dir="$HOME/test-cache/$SYSTEM_PHASENAME"
- url_for_job_id () {
- echo "$SYSTEM_TASKDEFINITIONSURI$SYSTEM_TEAMPROJECT/_build/results?buildId=$1"
- }
-
export GIT_PROVE_OPTS="--timer --jobs 10 --state=failed,slow,save"
export GIT_TEST_OPTS="--verbose-log -x --write-junit-xml"
MAKEFLAGS="$MAKEFLAGS --jobs=10"
@@ -214,11 +188,6 @@ osx-clang|osx-gcc)
else
MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python2)"
fi
-
- # t9810 occasionally fails on Travis CI OS X
- # t9816 occasionally fails with "TAP out of sequence errors" on
- # Travis CI OS X
- export GIT_SKIP_TESTS="t9810 t9816"
;;
linux-gcc-default)
;;
diff --git a/ci/print-test-failures.sh b/ci/print-test-failures.sh
index c70d6cdbf24..57277eefcd0 100755
--- a/ci/print-test-failures.sh
+++ b/ci/print-test-failures.sh
@@ -39,8 +39,6 @@ do
test_name="${test_name##*/}"
trash_dir="trash directory.$test_name"
case "$CI_TYPE" in
- travis)
- ;;
azure-pipelines)
mkdir -p failed-test-artifacts
mv "$trash_dir" failed-test-artifacts
@@ -88,11 +86,3 @@ do
fi
fi
done
-
-if [ $combined_trash_size -gt 0 ]
-then
- echo "------------------------------------------------------------------------"
- echo "Trash directories embedded in this log can be extracted by running:"
- echo
- echo " curl https://api.travis-ci.org/v3/job/$TRAVIS_JOB_ID/log.txt |./ci/util/extract-trash-dirs.sh"
-fi
diff --git a/ci/run-docker-build.sh b/ci/run-docker-build.sh
index 8d47a5fda3b..5d2764ad3a3 100755
--- a/ci/run-docker-build.sh
+++ b/ci/run-docker-build.sh
@@ -47,15 +47,6 @@ else
else
useradd -u $HOST_UID $CI_USER
fi
-
- # Due to a bug the test suite was run as root in the past, so
- # a prove state file created back then is only accessible by
- # root. Now that bug is fixed, the test suite is run as a
- # regular user, but the prove state file coming from Travis
- # CI's cache might still be owned by root.
- # Make sure that this user has rights to any cached files,
- # including an existing prove state file.
- test -n "$cache_dir" && chown -R $HOST_UID:$HOST_UID "$cache_dir"
fi
# Build and test
diff --git a/ci/run-docker.sh b/ci/run-docker.sh
index 37fa372052d..b610dd4db84 100755
--- a/ci/run-docker.sh
+++ b/ci/run-docker.sh
@@ -25,7 +25,7 @@ docker pull "$CI_CONTAINER"
# root@container:/# export jobname=<jobname>
# root@container:/# /usr/src/git/ci/run-docker-build.sh <host-user-id>
-container_cache_dir=/tmp/travis-cache
+container_cache_dir=/tmp/container-cache
docker run \
--interactive \
--
2.34.0.818.g0f23a581583
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v3 2/5] CI: use shorter names that fit in UX tooltips
2021-11-20 12:10 ` [PATCH v3 0/5] " Ævar Arnfjörð Bjarmason
2021-11-20 12:10 ` [PATCH v3 1/5] CI: remove Travis CI support Ævar Arnfjörð Bjarmason
@ 2021-11-20 12:10 ` Ævar Arnfjörð Bjarmason
2021-11-20 19:06 ` Victoria Dye
2021-11-20 12:10 ` [PATCH v3 3/5] CI: rename the "Linux32" job to lower-case "linux32" Ævar Arnfjörð Bjarmason
` (3 subsequent siblings)
5 siblings, 1 reply; 38+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2021-11-20 12:10 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Johannes Schindelin, SZEDER Gábor,
Victoria Dye, Ævar Arnfjörð Bjarmason
Change the names used for the GitHub CI workflows to be short enough
to (mostly) fit in the pop-up tool-tips that GitHub shows in the
commit view. I.e. when mouse-clicking on the passing or failing
check-mark next to the commit subject.
These names are seemingly truncated to 17-20 characters followed by
three dots ("..."). Since a "CI/PR / " prefix is added to them the job
names looked like this before (windows-test and vs-test jobs omitted):
CI/PR / ci-config (p...
CI/PR / windows-buil...
CI/PR / vs-build (pu...
CI/PR / regular (lin...
CI/PR / regular (lin...
CI/PR / regular (os...
CI/PR / regular (os...
CI/PR / regular (lin...
CI/PR / regular (lin...
CI/PR / dockerized (...
CI/PR / dockerized (...
CI/PR / dockerized (...
CI/PR / static-anal...
CI/PR / sparse (pu...
CI/PR / documenta...
By omitting the "/PR" from the top-level name, and pushing the
$jobname to the front we'll now instead get:
CI / config (push)
CI / win build (push...
CI / win+VS build (...
CI / linux-clang (ub...
CI / linux-gcc (ubun...
CI / osx-clang (osx)...
CI / osx-gcc (osx) (...
CI / linux-gcc-defau...
CI / linux-leaks (ub...
CI / linux-musl (alp...
CI / Linux32 (daald/...
CI / pedantic (fedor...
CI / static-analysis...
CI / sparse (push)...
CI / documentation
We then have no truncation in the expanded view. See [1] for how it
looked before, [2] for a currently visible CI run using this commit,
and [3] for the GitHub workflow syntax involved being changed here.
Let's also use the existing "pool" field as before. It's occasionally
useful to know we're running on say ubuntu v.s. fedora. The "-latest"
suffix is useful to some[4], and since it's now at the end it doesn't
hurt readability in the short view compared to saying "ubuntu" or
"macos".
1. https://github.com/git/git/tree/master/
2. https://github.com/avar/git/tree/avar/ci-rm-travis-cleanup-ci-names-3
3. https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions
3. https://lore.kernel.org/git/d9b07ca5-b58d-a535-d25b-85d7f12e6295@github.com/
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
.github/workflows/main.yml | 10 +++++++++-
README.md | 2 +-
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 6ed6a9e8076..c7c10456572 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -1,4 +1,4 @@
-name: CI/PR
+name: CI
on: [push, pull_request]
@@ -7,6 +7,7 @@ env:
jobs:
ci-config:
+ name: config
runs-on: ubuntu-latest
outputs:
enabled: ${{ steps.check-ref.outputs.enabled }}${{ steps.skip-if-redundant.outputs.enabled }}
@@ -77,6 +78,7 @@ jobs:
}
windows-build:
+ name: win build
needs: ci-config
if: needs.ci-config.outputs.enabled == 'yes'
runs-on: windows-latest
@@ -97,6 +99,7 @@ jobs:
name: windows-artifacts
path: artifacts
windows-test:
+ name: win test
runs-on: windows-latest
needs: [windows-build]
strategy:
@@ -127,6 +130,7 @@ jobs:
name: failed-tests-windows
path: ${{env.FAILED_TEST_ARTIFACTS}}
vs-build:
+ name: win+VS build
needs: ci-config
if: needs.ci-config.outputs.enabled == 'yes'
env:
@@ -178,6 +182,7 @@ jobs:
name: vs-artifacts
path: artifacts
vs-test:
+ name: win+VS test
runs-on: windows-latest
needs: vs-build
strategy:
@@ -210,6 +215,7 @@ jobs:
name: failed-tests-windows
path: ${{env.FAILED_TEST_ARTIFACTS}}
regular:
+ name: ${{matrix.vector.jobname}} (${{matrix.vector.pool}})
needs: ci-config
if: needs.ci-config.outputs.enabled == 'yes'
strategy:
@@ -251,6 +257,7 @@ jobs:
name: failed-tests-${{matrix.vector.jobname}}
path: ${{env.FAILED_TEST_ARTIFACTS}}
dockerized:
+ name: ${{matrix.vector.jobname}} (${{matrix.vector.image}})
needs: ci-config
if: needs.ci-config.outputs.enabled == 'yes'
strategy:
@@ -310,6 +317,7 @@ jobs:
run: ci/install-dependencies.sh
- run: make sparse
documentation:
+ name: documentation
needs: ci-config
if: needs.ci-config.outputs.enabled == 'yes'
env:
diff --git a/README.md b/README.md
index eb8115e6b04..f6f43e78deb 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-[![Build status](https://github.com/git/git/workflows/CI/PR/badge.svg)](https://github.com/git/git/actions?query=branch%3Amaster+event%3Apush)
+[![Build status](https://github.com/git/git/workflows/CI/badge.svg)](https://github.com/git/git/actions?query=branch%3Amaster+event%3Apush)
Git - fast, scalable, distributed revision control system
=========================================================
--
2.34.0.818.g0f23a581583
^ permalink raw reply related [flat|nested] 38+ messages in thread
* Re: [PATCH v3 2/5] CI: use shorter names that fit in UX tooltips
2021-11-20 12:10 ` [PATCH v3 2/5] CI: use shorter names that fit in UX tooltips Ævar Arnfjörð Bjarmason
@ 2021-11-20 19:06 ` Victoria Dye
0 siblings, 0 replies; 38+ messages in thread
From: Victoria Dye @ 2021-11-20 19:06 UTC (permalink / raw)
To: Ævar Arnfjörð Bjarmason, git
Cc: Junio C Hamano, Johannes Schindelin, SZEDER Gábor
Ævar Arnfjörð Bjarmason wrote:
> Change the names used for the GitHub CI workflows to be short enough
> to (mostly) fit in the pop-up tool-tips that GitHub shows in the
> commit view. I.e. when mouse-clicking on the passing or failing
> check-mark next to the commit subject.
>
> These names are seemingly truncated to 17-20 characters followed by
> three dots ("..."). Since a "CI/PR / " prefix is added to them the job
> names looked like this before (windows-test and vs-test jobs omitted):
>
> CI/PR / ci-config (p...
> CI/PR / windows-buil...
> CI/PR / vs-build (pu...
> CI/PR / regular (lin...
> CI/PR / regular (lin...
> CI/PR / regular (os...
> CI/PR / regular (os...
> CI/PR / regular (lin...
> CI/PR / regular (lin...
> CI/PR / dockerized (...
> CI/PR / dockerized (...
> CI/PR / dockerized (...
> CI/PR / static-anal...
> CI/PR / sparse (pu...
> CI/PR / documenta...
>
> By omitting the "/PR" from the top-level name, and pushing the
> $jobname to the front we'll now instead get:
>
> CI / config (push)
> CI / win build (push...
> CI / win+VS build (...
> CI / linux-clang (ub...
> CI / linux-gcc (ubun...
> CI / osx-clang (osx)...
> CI / osx-gcc (osx) (...
> CI / linux-gcc-defau...
> CI / linux-leaks (ub...
> CI / linux-musl (alp...
> CI / Linux32 (daald/...
> CI / pedantic (fedor...
> CI / static-analysis...
> CI / sparse (push)...
> CI / documentation
>
> We then have no truncation in the expanded view. See [1] for how it
> looked before, [2] for a currently visible CI run using this commit,
> and [3] for the GitHub workflow syntax involved being changed here.
>
> Let's also use the existing "pool" field as before. It's occasionally
> useful to know we're running on say ubuntu v.s. fedora. The "-latest"
> suffix is useful to some[4], and since it's now at the end it doesn't
> hurt readability in the short view compared to saying "ubuntu" or
> "macos".
>
> 1. https://github.com/git/git/tree/master/
> 2. https://github.com/avar/git/tree/avar/ci-rm-travis-cleanup-ci-names-3
> 3. https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions
> 3. https://lore.kernel.org/git/d9b07ca5-b58d-a535-d25b-85d7f12e6295@github.com/
>
> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
> ---
> .github/workflows/main.yml | 10 +++++++++-
> README.md | 2 +-
> 2 files changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
> index 6ed6a9e8076..c7c10456572 100644
> --- a/.github/workflows/main.yml
> +++ b/.github/workflows/main.yml
> @@ -1,4 +1,4 @@
> -name: CI/PR
> +name: CI
>
> on: [push, pull_request]
>
> @@ -7,6 +7,7 @@ env:
>
> jobs:
> ci-config:
> + name: config
> runs-on: ubuntu-latest
> outputs:
> enabled: ${{ steps.check-ref.outputs.enabled }}${{ steps.skip-if-redundant.outputs.enabled }}
> @@ -77,6 +78,7 @@ jobs:
> }
>
> windows-build:
> + name: win build
> needs: ci-config
> if: needs.ci-config.outputs.enabled == 'yes'
> runs-on: windows-latest
> @@ -97,6 +99,7 @@ jobs:
> name: windows-artifacts
> path: artifacts
> windows-test:
> + name: win test
> runs-on: windows-latest
> needs: [windows-build]
> strategy:
> @@ -127,6 +130,7 @@ jobs:
> name: failed-tests-windows
> path: ${{env.FAILED_TEST_ARTIFACTS}}
> vs-build:
> + name: win+VS build
> needs: ci-config
> if: needs.ci-config.outputs.enabled == 'yes'
> env:
> @@ -178,6 +182,7 @@ jobs:
> name: vs-artifacts
> path: artifacts
> vs-test:
> + name: win+VS test
> runs-on: windows-latest
> needs: vs-build
> strategy:
> @@ -210,6 +215,7 @@ jobs:
> name: failed-tests-windows
> path: ${{env.FAILED_TEST_ARTIFACTS}}
> regular:
> + name: ${{matrix.vector.jobname}} (${{matrix.vector.pool}})
> needs: ci-config
> if: needs.ci-config.outputs.enabled == 'yes'
> strategy:
> @@ -251,6 +257,7 @@ jobs:
> name: failed-tests-${{matrix.vector.jobname}}
> path: ${{env.FAILED_TEST_ARTIFACTS}}
> dockerized:
> + name: ${{matrix.vector.jobname}} (${{matrix.vector.image}})
> needs: ci-config
> if: needs.ci-config.outputs.enabled == 'yes'
> strategy:
> @@ -310,6 +317,7 @@ jobs:
> run: ci/install-dependencies.sh
> - run: make sparse
> documentation:
> + name: documentation
> needs: ci-config
> if: needs.ci-config.outputs.enabled == 'yes'
> env:
> diff --git a/README.md b/README.md
> index eb8115e6b04..f6f43e78deb 100644
> --- a/README.md
> +++ b/README.md
> @@ -1,4 +1,4 @@
> -[![Build status](https://github.com/git/git/workflows/CI/PR/badge.svg)](https://github.com/git/git/actions?query=branch%3Amaster+event%3Apush)
> +[![Build status](https://github.com/git/git/workflows/CI/badge.svg)](https://github.com/git/git/actions?query=branch%3Amaster+event%3Apush)
>
> Git - fast, scalable, distributed revision control system
> =========================================================
>
This addresses all of my earlier comments - looks good to me!
^ permalink raw reply [flat|nested] 38+ messages in thread
* [PATCH v3 3/5] CI: rename the "Linux32" job to lower-case "linux32"
2021-11-20 12:10 ` [PATCH v3 0/5] " Ævar Arnfjörð Bjarmason
2021-11-20 12:10 ` [PATCH v3 1/5] CI: remove Travis CI support Ævar Arnfjörð Bjarmason
2021-11-20 12:10 ` [PATCH v3 2/5] CI: use shorter names that fit in UX tooltips Ævar Arnfjörð Bjarmason
@ 2021-11-20 12:10 ` Ævar Arnfjörð Bjarmason
2021-11-20 12:10 ` [PATCH v3 4/5] CI: use "$runs_on_pool", not "$jobname" to select packages & config Ævar Arnfjörð Bjarmason
` (2 subsequent siblings)
5 siblings, 0 replies; 38+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2021-11-20 12:10 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Johannes Schindelin, SZEDER Gábor,
Victoria Dye, Ævar Arnfjörð Bjarmason
As a follow-up to the preceding commit's shortening of CI job names,
rename the only job that starts with an upper-case letter to be
consistent with the rest. It was added in 88dedd5e72c (Travis: also
test on 32-bit Linux, 2017-03-05).
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
.github/workflows/main.yml | 3 ++-
ci/install-docker-dependencies.sh | 2 +-
ci/lib.sh | 2 +-
ci/run-docker-build.sh | 2 +-
ci/run-docker.sh | 2 +-
5 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index c7c10456572..91b565f75bb 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -266,7 +266,8 @@ jobs:
vector:
- jobname: linux-musl
image: alpine
- - jobname: Linux32
+ - jobname: linux32
+ os: ubuntu32
image: daald/ubuntu32:xenial
- jobname: pedantic
image: fedora
diff --git a/ci/install-docker-dependencies.sh b/ci/install-docker-dependencies.sh
index 07a8c6b199d..78b7e326da6 100755
--- a/ci/install-docker-dependencies.sh
+++ b/ci/install-docker-dependencies.sh
@@ -4,7 +4,7 @@
#
case "$jobname" in
-Linux32)
+linux32)
linux32 --32bit i386 sh -c '
apt update >/dev/null &&
apt install -y build-essential libcurl4-openssl-dev \
diff --git a/ci/lib.sh b/ci/lib.sh
index 73d959e87f7..0b3b0144882 100755
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -191,7 +191,7 @@ osx-clang|osx-gcc)
;;
linux-gcc-default)
;;
-Linux32)
+linux32)
CC=gcc
;;
linux-musl)
diff --git a/ci/run-docker-build.sh b/ci/run-docker-build.sh
index 5d2764ad3a3..6cd832efb9c 100755
--- a/ci/run-docker-build.sh
+++ b/ci/run-docker-build.sh
@@ -15,7 +15,7 @@ then
fi
case "$jobname" in
-Linux32)
+linux32)
switch_cmd="linux32 --32bit i386"
;;
linux-musl)
diff --git a/ci/run-docker.sh b/ci/run-docker.sh
index b610dd4db84..af89d1624a4 100755
--- a/ci/run-docker.sh
+++ b/ci/run-docker.sh
@@ -6,7 +6,7 @@
. ${0%/*}/lib.sh
case "$jobname" in
-Linux32)
+linux32)
CI_CONTAINER="daald/ubuntu32:xenial"
;;
linux-musl)
--
2.34.0.818.g0f23a581583
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v3 4/5] CI: use "$runs_on_pool", not "$jobname" to select packages & config
2021-11-20 12:10 ` [PATCH v3 0/5] " Ævar Arnfjörð Bjarmason
` (2 preceding siblings ...)
2021-11-20 12:10 ` [PATCH v3 3/5] CI: rename the "Linux32" job to lower-case "linux32" Ævar Arnfjörð Bjarmason
@ 2021-11-20 12:10 ` Ævar Arnfjörð Bjarmason
2021-11-21 7:21 ` Junio C Hamano
2021-11-20 12:10 ` [PATCH v3 5/5] CI: don't run "make test" twice in one job Ævar Arnfjörð Bjarmason
2021-11-23 16:29 ` [PATCH v4 0/5] CI: Remove Travis CI, shorten names for GH tooltips, split jobs Ævar Arnfjörð Bjarmason
5 siblings, 1 reply; 38+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2021-11-20 12:10 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Johannes Schindelin, SZEDER Gábor,
Victoria Dye, Ævar Arnfjörð Bjarmason
Change the setup hooks for the CI to use "$runs_on_pool" for the
"$regular" job. Now we won't need as much boilerplate when adding new
jobs to the "regular" matrix, see 956d2e4639b (tests: add a test mode
for SANITIZE=leak, run it in CI, 2021-09-23) for the last such commit.
I.e. now instead of needing to enumerate each jobname when we select
packages we can install things depending on the pool we're running
in.
That we didn't do this dates back to the now gone dependency on Travis
CI, but even if we add a new CI target in the future this'll be easier
to port over, since we can probably treat "ubuntu-latest" as a
stand-in for some recent Linux that can run "apt" commands.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
.github/workflows/main.yml | 4 ++++
ci/install-dependencies.sh | 32 ++++++++++++++------------------
ci/lib.sh | 21 +++++++++++----------
3 files changed, 29 insertions(+), 28 deletions(-)
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 91b565f75bb..d402402a18b 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -227,12 +227,14 @@ jobs:
pool: ubuntu-latest
- jobname: linux-gcc
cc: gcc
+ cc_package: gcc-8
pool: ubuntu-latest
- jobname: osx-clang
cc: clang
pool: macos-latest
- jobname: osx-gcc
cc: gcc
+ cc_package: gcc-9
pool: macos-latest
- jobname: linux-gcc-default
cc: gcc
@@ -242,7 +244,9 @@ jobs:
pool: ubuntu-latest
env:
CC: ${{matrix.vector.cc}}
+ CC_PACKAGE: ${{matrix.vector.cc_package}}
jobname: ${{matrix.vector.jobname}}
+ runs_on_pool: ${{matrix.vector.pool}}
runs-on: ${{matrix.vector.pool}}
steps:
- uses: actions/checkout@v2
diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
index 92e11c7198e..ca1eaa49c14 100755
--- a/ci/install-dependencies.sh
+++ b/ci/install-dependencies.sh
@@ -11,17 +11,11 @@ UBUNTU_COMMON_PKGS="make libssl-dev libcurl4-openssl-dev libexpat-dev
tcl tk gettext zlib1g-dev perl-modules liberror-perl libauthen-sasl-perl
libemail-valid-perl libio-socket-ssl-perl libnet-smtp-ssl-perl"
-case "$jobname" in
-linux-clang|linux-gcc|linux-leaks)
+case "$runs_on_pool" in
+ubuntu-latest)
sudo apt-get -q update
sudo apt-get -q -y install language-pack-is libsvn-perl apache2 \
- $UBUNTU_COMMON_PKGS
- case "$jobname" in
- linux-gcc)
- sudo apt-get -q -y install gcc-8
- ;;
- esac
-
+ $UBUNTU_COMMON_PKGS $CC_PACKAGE
mkdir --parents "$P4_PATH"
pushd "$P4_PATH"
wget --quiet "$P4WHENCE/bin.linux26x86_64/p4d"
@@ -36,7 +30,7 @@ linux-clang|linux-gcc|linux-leaks)
cp git-lfs-$LINUX_GIT_LFS_VERSION/git-lfs .
popd
;;
-osx-clang|osx-gcc)
+macos-latest)
export HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1
# Uncomment this if you want to run perf tests:
# brew install gnu-time
@@ -50,15 +44,17 @@ osx-clang|osx-gcc)
brew install --cask --no-quarantine perforce
} ||
brew install homebrew/cask/perforce
- case "$jobname" in
- osx-gcc)
- brew install gcc@9
- # Just in case the image is updated to contain gcc@9
- # pre-installed but not linked.
- brew link gcc@9
- ;;
- esac
+
+ if test -n "$CC_PACKAGE"
+ then
+ BREW_PACKAGE=${CC_PACKAGE/-/@}
+ brew install "$BREW_PACKAGE"
+ brew link "$BREW_PACKAGE"
+ fi
;;
+esac
+
+case "$jobname" in
StaticAnalysis)
sudo apt-get -q update
sudo apt-get -q -y install coccinelle libcurl4-openssl-dev libssl-dev \
diff --git a/ci/lib.sh b/ci/lib.sh
index 0b3b0144882..cbc2f8f1caa 100755
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -156,11 +156,15 @@ export DEFAULT_TEST_TARGET=prove
export GIT_TEST_CLONE_2GB=true
export SKIP_DASHED_BUILT_INS=YesPlease
-case "$jobname" in
-linux-clang|linux-gcc|linux-leaks)
+case "$runs_on_pool" in
+ubuntu-latest)
+ if test "$jobname" = "linux-gcc-default"
+ then
+ break
+ fi
+
if [ "$jobname" = linux-gcc ]
then
- export CC=gcc-8
MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/python3"
else
MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/python2"
@@ -180,17 +184,17 @@ linux-clang|linux-gcc|linux-leaks)
GIT_LFS_PATH="$HOME/custom/git-lfs"
export PATH="$GIT_LFS_PATH:$P4_PATH:$PATH"
;;
-osx-clang|osx-gcc)
+macos-latest)
if [ "$jobname" = osx-gcc ]
then
- export CC=gcc-9
MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python3)"
else
MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python2)"
fi
;;
-linux-gcc-default)
- ;;
+esac
+
+case "$jobname" in
linux32)
CC=gcc
;;
@@ -200,9 +204,6 @@ linux-musl)
MAKEFLAGS="$MAKEFLAGS NO_REGEX=Yes ICONV_OMITS_BOM=Yes"
MAKEFLAGS="$MAKEFLAGS GIT_TEST_UTF8_LOCALE=C.UTF-8"
;;
-esac
-
-case "$jobname" in
linux-leaks)
export SANITIZE=leak
export GIT_TEST_PASSING_SANITIZE_LEAK=true
--
2.34.0.818.g0f23a581583
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v3 5/5] CI: don't run "make test" twice in one job
2021-11-20 12:10 ` [PATCH v3 0/5] " Ævar Arnfjörð Bjarmason
` (3 preceding siblings ...)
2021-11-20 12:10 ` [PATCH v3 4/5] CI: use "$runs_on_pool", not "$jobname" to select packages & config Ævar Arnfjörð Bjarmason
@ 2021-11-20 12:10 ` Ævar Arnfjörð Bjarmason
2021-11-23 16:29 ` [PATCH v4 0/5] CI: Remove Travis CI, shorten names for GH tooltips, split jobs Ævar Arnfjörð Bjarmason
5 siblings, 0 replies; 38+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2021-11-20 12:10 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Johannes Schindelin, SZEDER Gábor,
Victoria Dye, Ævar Arnfjörð Bjarmason
The "linux-clang" and "linux-gcc" jobs both run "make test" twice, but
with different environment variables. Running these in sequence seems
to have been done to work around some constraint on Travis, see
ae59a4e44f3 (travis: run tests with GIT_TEST_SPLIT_INDEX, 2018-01-07).
By having these run in parallel we'll get jobs that finish much sooner
than they otherwise would have.
We can also simplify the control flow in "ci/run-build-and-tests.sh"
as a result, since we won't run "make test" twice we don't need to run
"make" twice at all, let's default to "make all test" after setting
the variables, and then override it to just "all" for the compile-only
tests.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
.github/workflows/main.yml | 9 +++++++++
ci/run-build-and-tests.sh | 26 ++++++++++++--------------
2 files changed, 21 insertions(+), 14 deletions(-)
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index d402402a18b..628bcbf495e 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -225,10 +225,19 @@ jobs:
- jobname: linux-clang
cc: clang
pool: ubuntu-latest
+ - jobname: linux-sha256
+ cc: clang
+ os: ubuntu
+ pool: ubuntu-latest
- jobname: linux-gcc
cc: gcc
cc_package: gcc-8
pool: ubuntu-latest
+ - jobname: linux-TEST-vars
+ cc: gcc
+ os: ubuntu
+ cc_package: gcc-8
+ pool: ubuntu-latest
- jobname: osx-clang
cc: clang
pool: macos-latest
diff --git a/ci/run-build-and-tests.sh b/ci/run-build-and-tests.sh
index cc62616d806..16840b2065d 100755
--- a/ci/run-build-and-tests.sh
+++ b/ci/run-build-and-tests.sh
@@ -10,16 +10,13 @@ windows*) cmd //c mklink //j t\\.prove "$(cygpath -aw "$cache_dir/.prove")";;
*) ln -s "$cache_dir/.prove" t/.prove;;
esac
-if test "$jobname" = "pedantic"
-then
- export DEVOPTS=pedantic
-fi
+export MAKE_TARGETS="all test"
-make
case "$jobname" in
linux-gcc)
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
- make test
+ ;;
+linux-TEST-vars)
export GIT_TEST_SPLIT_INDEX=yes
export GIT_TEST_MERGE_ALGORITHM=recursive
export GIT_TEST_FULL_IN_PACK_ARRAY=true
@@ -33,23 +30,24 @@ linux-gcc)
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master
export GIT_TEST_WRITE_REV_INDEX=1
export GIT_TEST_CHECKOUT_WORKERS=2
- make test
;;
linux-clang)
export GIT_TEST_DEFAULT_HASH=sha1
- make test
+ ;;
+linux-sha256)
export GIT_TEST_DEFAULT_HASH=sha256
- make test
;;
-linux-gcc-4.8|pedantic)
- # Don't run the tests; we only care about whether Git can be
- # built with GCC 4.8 or with pedantic
+pedantic)
+ export DEVOPTS=pedantic
+ export MAKE_TARGETS=all
;;
-*)
- make test
+linux-gcc-4.8)
+ export MAKE_TARGETS=all
;;
esac
+make $MAKE_TARGETS
+
check_unignored_build_artifacts
save_good_tree
--
2.34.0.818.g0f23a581583
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v4 0/5] CI: Remove Travis CI, shorten names for GH tooltips, split jobs
2021-11-20 12:10 ` [PATCH v3 0/5] " Ævar Arnfjörð Bjarmason
` (4 preceding siblings ...)
2021-11-20 12:10 ` [PATCH v3 5/5] CI: don't run "make test" twice in one job Ævar Arnfjörð Bjarmason
@ 2021-11-23 16:29 ` Ævar Arnfjörð Bjarmason
2021-11-23 16:29 ` [PATCH v4 1/5] CI: remove Travis CI support Ævar Arnfjörð Bjarmason
` (4 more replies)
5 siblings, 5 replies; 38+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2021-11-23 16:29 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Johannes Schindelin, SZEDER Gábor,
Victoria Dye, Ævar Arnfjörð Bjarmason
A small update to the v3[1] of this series of CI UX improvements. A CI
run can be seen at:
https://github.com/avar/git/runs/4299892497
And the improvement to tooltips by shortening them at (click on the CI
status symbol next to the commit subject):
https://github.com/avar/git/tree/avar/ci-rm-travis-cleanup-ci-names-4
For comparison, the same for "master":
https://github.com/git/git/runs/4289544907
https://github.com/git/git/tree/master
Changes:
* In removing Travis support I omitted the removal of now-dead
linux-gcc-4.8 supporting code. Remove it too.
* Clarify with a comment where new test targets in
ci/run-build-and-tests.sh need to be added, to avoid a repeat of
running new tests in the compilation-only "pedantic" job.
1. https://lore.kernel.org/git/cover-v3-0.5-00000000000-20211120T115414Z-avarab@gmail.com/
Ævar Arnfjörð Bjarmason (5):
CI: remove Travis CI support
CI: use shorter names that fit in UX tooltips
CI: rename the "Linux32" job to lower-case "linux32"
CI: use "$runs_on_pool", not "$jobname" to select packages & config
CI: don't run "make test" twice in one job
.github/workflows/main.yml | 26 ++++++++++++--
.travis.yml | 60 -------------------------------
README.md | 2 +-
ci/install-dependencies.sh | 35 ++++++++----------
ci/install-docker-dependencies.sh | 2 +-
ci/lib.sh | 60 ++++++++-----------------------
ci/print-test-failures.sh | 10 ------
ci/run-build-and-tests.sh | 27 +++++++-------
ci/run-docker-build.sh | 11 +-----
ci/run-docker.sh | 4 +--
10 files changed, 72 insertions(+), 165 deletions(-)
delete mode 100644 .travis.yml
Range-diff against v3:
1: 96433bcc02f ! 1: 6a4f1961cd2 CI: remove Travis CI support
@@ Commit message
into more general code. See 0f0c51181df (travis-ci: install packages
in 'ci/install-dependencies.sh', 2018-11-01).
+ Remove the "linux-gcc-4.8" job added in fb9d7431cf4 (travis-ci: build
+ with GCC 4.8 as well, 2019-07-18), it only ran in Travis CI.
+
1. https://travis-ci.org/github/git/git/builds
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
@@ ci/install-dependencies.sh: UBUNTU_COMMON_PKGS="make libssl-dev libcurl4-openssl
sudo apt-get -q update
sudo apt-get -q -y install language-pack-is libsvn-perl apache2 \
$UBUNTU_COMMON_PKGS
+@@ ci/install-dependencies.sh: Documentation)
+ test -n "$ALREADY_HAVE_ASCIIDOCTOR" ||
+ sudo gem install --version 1.5.8 asciidoctor
+ ;;
+-linux-gcc-default|linux-gcc-4.8)
++linux-gcc-default)
+ sudo apt-get -q update
+ sudo apt-get -q -y install $UBUNTU_COMMON_PKGS
+ ;;
## ci/lib.sh ##
@@ ci/lib.sh: save_good_tree () {
@@ ci/print-test-failures.sh: do
- echo " curl https://api.travis-ci.org/v3/job/$TRAVIS_JOB_ID/log.txt |./ci/util/extract-trash-dirs.sh"
-fi
+ ## ci/run-build-and-tests.sh ##
+@@ ci/run-build-and-tests.sh: linux-clang)
+ export GIT_TEST_DEFAULT_HASH=sha256
+ make test
+ ;;
+-linux-gcc-4.8|pedantic)
++pedantic)
+ # Don't run the tests; we only care about whether Git can be
+- # built with GCC 4.8 or with pedantic
++ # built.
+ ;;
+ *)
+ make test
+
## ci/run-docker-build.sh ##
@@ ci/run-docker-build.sh: else
else
2: b09cd076aeb = 2: 5d53b79347f CI: use shorter names that fit in UX tooltips
3: fb1b0ecbadd = 3: 37b97fc6c3a CI: rename the "Linux32" job to lower-case "linux32"
4: 54913e775c1 = 4: 614a99f7b64 CI: use "$runs_on_pool", not "$jobname" to select packages & config
5: 877f27d847c ! 5: ee2f9254fc7 CI: don't run "make test" twice in one job
@@ Commit message
the variables, and then override it to just "all" for the compile-only
tests.
+ Add a comment to clarify that new "test" targets should adjust
+ $MAKE_TARGETS rather than being added after the "case/esac". This
+ should avoid future confusion where e.g. the compilation-only
+ "pedantic" target will unexpectedly start running tests. See [1] and
+ [2].
+
+ 1. https://lore.kernel.org/git/211122.86ee78yxts.gmgdl@evledraar.gmail.com/
+ 2. https://lore.kernel.org/git/211123.86ilwjujmd.gmgdl@evledraar.gmail.com/
+
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
## .github/workflows/main.yml ##
@@ ci/run-build-and-tests.sh: linux-gcc)
export GIT_TEST_DEFAULT_HASH=sha256
- make test
;;
--linux-gcc-4.8|pedantic)
-- # Don't run the tests; we only care about whether Git can be
-- # built with GCC 4.8 or with pedantic
-+pedantic)
-+ export DEVOPTS=pedantic
-+ export MAKE_TARGETS=all
- ;;
+ pedantic)
+ # Don't run the tests; we only care about whether Git can be
+ # built.
+- ;;
-*)
- make test
-+linux-gcc-4.8)
++ export DEVOPTS=pedantic
+ export MAKE_TARGETS=all
;;
esac
++# Any new "test" targets should not go after this "make", but should
++# adjust $MAKE_TARGETS. Otherwise compilation-only targets above will
++# start running tests.
+make $MAKE_TARGETS
-+
check_unignored_build_artifacts
save_good_tree
--
2.34.0.830.gb9cdc59c8af
^ permalink raw reply [flat|nested] 38+ messages in thread
* [PATCH v4 1/5] CI: remove Travis CI support
2021-11-23 16:29 ` [PATCH v4 0/5] CI: Remove Travis CI, shorten names for GH tooltips, split jobs Ævar Arnfjörð Bjarmason
@ 2021-11-23 16:29 ` Ævar Arnfjörð Bjarmason
2021-11-23 16:29 ` [PATCH v4 2/5] CI: use shorter names that fit in UX tooltips Ævar Arnfjörð Bjarmason
` (3 subsequent siblings)
4 siblings, 0 replies; 38+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2021-11-23 16:29 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Johannes Schindelin, SZEDER Gábor,
Victoria Dye, Ævar Arnfjörð Bjarmason
Remove support for running the CI in travis. The last builds in it are
from 5 months ago[1] (as of 2021-11-19), and our documentation has
referred to GitHub CI instead since f003a91f5c5 (SubmittingPatches:
replace discussion of Travis with GitHub Actions, 2021-07-22).
We'll now run the "t9810 t9816" and tests on OSX. We didn't before, as
we'd carried the Travis exclusion of them forward from
522354d70f4 (Add Travis CI support, 2015-11-27). Let's hope whatever
issue there was with them was either Travis specific, or fixed since
then (I'm not sure).
The "apt-add-repository" invocation (which we were doing in GitHub CI)
isn't needed, it was another Travis-only case that was carried forward
into more general code. See 0f0c51181df (travis-ci: install packages
in 'ci/install-dependencies.sh', 2018-11-01).
Remove the "linux-gcc-4.8" job added in fb9d7431cf4 (travis-ci: build
with GCC 4.8 as well, 2019-07-18), it only ran in Travis CI.
1. https://travis-ci.org/github/git/git/builds
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
.travis.yml | 60 --------------------------------------
ci/install-dependencies.sh | 3 +-
ci/lib.sh | 37 ++---------------------
ci/print-test-failures.sh | 10 -------
ci/run-build-and-tests.sh | 4 +--
ci/run-docker-build.sh | 9 ------
ci/run-docker.sh | 2 +-
7 files changed, 7 insertions(+), 118 deletions(-)
delete mode 100644 .travis.yml
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 908330a0a3d..00000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-language: c
-
-cache:
- directories:
- - $HOME/travis-cache
-
-os:
- - linux
- - osx
-
-osx_image: xcode10.1
-
-compiler:
- - clang
- - gcc
-
-matrix:
- include:
- - env: jobname=linux-gcc-default
- os: linux
- compiler:
- addons:
- before_install:
- - env: jobname=linux-gcc-4.8
- os: linux
- dist: trusty
- compiler:
- - env: jobname=Linux32
- os: linux
- compiler:
- addons:
- services:
- - docker
- before_install:
- script: ci/run-docker.sh
- - env: jobname=linux-musl
- os: linux
- compiler:
- addons:
- services:
- - docker
- before_install:
- script: ci/run-docker.sh
- - env: jobname=StaticAnalysis
- os: linux
- compiler:
- script: ci/run-static-analysis.sh
- after_failure:
- - env: jobname=Documentation
- os: linux
- compiler:
- script: ci/test-documentation.sh
- after_failure:
-
-before_install: ci/install-dependencies.sh
-script: ci/run-build-and-tests.sh
-after_failure: ci/print-test-failures.sh
-
-notifications:
- email: false
diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
index 1d0e48f4515..49a4ae7a988 100755
--- a/ci/install-dependencies.sh
+++ b/ci/install-dependencies.sh
@@ -13,7 +13,6 @@ UBUNTU_COMMON_PKGS="make libssl-dev libcurl4-openssl-dev libexpat-dev
case "$jobname" in
linux-clang|linux-gcc|linux-leaks)
- sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
sudo apt-get -q update
sudo apt-get -q -y install language-pack-is libsvn-perl apache2 \
$UBUNTU_COMMON_PKGS
@@ -77,7 +76,7 @@ Documentation)
test -n "$ALREADY_HAVE_ASCIIDOCTOR" ||
sudo gem install --version 1.5.8 asciidoctor
;;
-linux-gcc-default|linux-gcc-4.8)
+linux-gcc-default)
sudo apt-get -q update
sudo apt-get -q -y install $UBUNTU_COMMON_PKGS
;;
diff --git a/ci/lib.sh b/ci/lib.sh
index 82cb17f8eea..73d959e87f7 100755
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -34,7 +34,7 @@ save_good_tree () {
# successfully before (e.g. because the branch got rebased, changing only
# the commit messages).
skip_good_tree () {
- if test "$TRAVIS_DEBUG_MODE" = true || test true = "$GITHUB_ACTIONS"
+ if test true = "$GITHUB_ACTIONS"
then
return
fi
@@ -60,7 +60,7 @@ skip_good_tree () {
cat <<-EOF
$(tput setaf 2)Skipping build job for commit $CI_COMMIT.$(tput sgr0)
This commit's tree has already been built and tested successfully in build job $prev_good_job_number for commit $prev_good_commit.
- The log of that build job is available at $(url_for_job_id $prev_good_job_id)
+ The log of that build job is available at $SYSTEM_TASKDEFINITIONSURI$SYSTEM_TEAMPROJECT/_build/results?buildId=$prev_good_job_id
To force a re-build delete the branch's cache and then hit 'Restart job'.
EOF
fi
@@ -91,29 +91,7 @@ export MAKEFLAGS=
# and installing dependencies.
set -ex
-if test true = "$TRAVIS"
-then
- CI_TYPE=travis
- # When building a PR, TRAVIS_BRANCH refers to the *target* branch. Not
- # what we want here. We want the source branch instead.
- CI_BRANCH="${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH}"
- CI_COMMIT="$TRAVIS_COMMIT"
- CI_JOB_ID="$TRAVIS_JOB_ID"
- CI_JOB_NUMBER="$TRAVIS_JOB_NUMBER"
- CI_OS_NAME="$TRAVIS_OS_NAME"
- CI_REPO_SLUG="$TRAVIS_REPO_SLUG"
-
- cache_dir="$HOME/travis-cache"
-
- url_for_job_id () {
- echo "https://travis-ci.org/$CI_REPO_SLUG/jobs/$1"
- }
-
- BREW_INSTALL_PACKAGES="git-lfs gettext"
- export GIT_PROVE_OPTS="--timer --jobs 3 --state=failed,slow,save"
- export GIT_TEST_OPTS="--verbose-log -x --immediate"
- MAKEFLAGS="$MAKEFLAGS --jobs=2"
-elif test -n "$SYSTEM_COLLECTIONURI" || test -n "$SYSTEM_TASKDEFINITIONSURI"
+if test -n "$SYSTEM_COLLECTIONURI" || test -n "$SYSTEM_TASKDEFINITIONSURI"
then
CI_TYPE=azure-pipelines
# We are running in Azure Pipelines
@@ -130,10 +108,6 @@ then
# among *all* phases)
cache_dir="$HOME/test-cache/$SYSTEM_PHASENAME"
- url_for_job_id () {
- echo "$SYSTEM_TASKDEFINITIONSURI$SYSTEM_TEAMPROJECT/_build/results?buildId=$1"
- }
-
export GIT_PROVE_OPTS="--timer --jobs 10 --state=failed,slow,save"
export GIT_TEST_OPTS="--verbose-log -x --write-junit-xml"
MAKEFLAGS="$MAKEFLAGS --jobs=10"
@@ -214,11 +188,6 @@ osx-clang|osx-gcc)
else
MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python2)"
fi
-
- # t9810 occasionally fails on Travis CI OS X
- # t9816 occasionally fails with "TAP out of sequence errors" on
- # Travis CI OS X
- export GIT_SKIP_TESTS="t9810 t9816"
;;
linux-gcc-default)
;;
diff --git a/ci/print-test-failures.sh b/ci/print-test-failures.sh
index c70d6cdbf24..57277eefcd0 100755
--- a/ci/print-test-failures.sh
+++ b/ci/print-test-failures.sh
@@ -39,8 +39,6 @@ do
test_name="${test_name##*/}"
trash_dir="trash directory.$test_name"
case "$CI_TYPE" in
- travis)
- ;;
azure-pipelines)
mkdir -p failed-test-artifacts
mv "$trash_dir" failed-test-artifacts
@@ -88,11 +86,3 @@ do
fi
fi
done
-
-if [ $combined_trash_size -gt 0 ]
-then
- echo "------------------------------------------------------------------------"
- echo "Trash directories embedded in this log can be extracted by running:"
- echo
- echo " curl https://api.travis-ci.org/v3/job/$TRAVIS_JOB_ID/log.txt |./ci/util/extract-trash-dirs.sh"
-fi
diff --git a/ci/run-build-and-tests.sh b/ci/run-build-and-tests.sh
index cc62616d806..18056501ec2 100755
--- a/ci/run-build-and-tests.sh
+++ b/ci/run-build-and-tests.sh
@@ -41,9 +41,9 @@ linux-clang)
export GIT_TEST_DEFAULT_HASH=sha256
make test
;;
-linux-gcc-4.8|pedantic)
+pedantic)
# Don't run the tests; we only care about whether Git can be
- # built with GCC 4.8 or with pedantic
+ # built.
;;
*)
make test
diff --git a/ci/run-docker-build.sh b/ci/run-docker-build.sh
index 8d47a5fda3b..5d2764ad3a3 100755
--- a/ci/run-docker-build.sh
+++ b/ci/run-docker-build.sh
@@ -47,15 +47,6 @@ else
else
useradd -u $HOST_UID $CI_USER
fi
-
- # Due to a bug the test suite was run as root in the past, so
- # a prove state file created back then is only accessible by
- # root. Now that bug is fixed, the test suite is run as a
- # regular user, but the prove state file coming from Travis
- # CI's cache might still be owned by root.
- # Make sure that this user has rights to any cached files,
- # including an existing prove state file.
- test -n "$cache_dir" && chown -R $HOST_UID:$HOST_UID "$cache_dir"
fi
# Build and test
diff --git a/ci/run-docker.sh b/ci/run-docker.sh
index 37fa372052d..b610dd4db84 100755
--- a/ci/run-docker.sh
+++ b/ci/run-docker.sh
@@ -25,7 +25,7 @@ docker pull "$CI_CONTAINER"
# root@container:/# export jobname=<jobname>
# root@container:/# /usr/src/git/ci/run-docker-build.sh <host-user-id>
-container_cache_dir=/tmp/travis-cache
+container_cache_dir=/tmp/container-cache
docker run \
--interactive \
--
2.34.0.830.gb9cdc59c8af
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v4 2/5] CI: use shorter names that fit in UX tooltips
2021-11-23 16:29 ` [PATCH v4 0/5] CI: Remove Travis CI, shorten names for GH tooltips, split jobs Ævar Arnfjörð Bjarmason
2021-11-23 16:29 ` [PATCH v4 1/5] CI: remove Travis CI support Ævar Arnfjörð Bjarmason
@ 2021-11-23 16:29 ` Ævar Arnfjörð Bjarmason
2021-11-23 16:29 ` [PATCH v4 3/5] CI: rename the "Linux32" job to lower-case "linux32" Ævar Arnfjörð Bjarmason
` (2 subsequent siblings)
4 siblings, 0 replies; 38+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2021-11-23 16:29 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Johannes Schindelin, SZEDER Gábor,
Victoria Dye, Ævar Arnfjörð Bjarmason
Change the names used for the GitHub CI workflows to be short enough
to (mostly) fit in the pop-up tool-tips that GitHub shows in the
commit view. I.e. when mouse-clicking on the passing or failing
check-mark next to the commit subject.
These names are seemingly truncated to 17-20 characters followed by
three dots ("..."). Since a "CI/PR / " prefix is added to them the job
names looked like this before (windows-test and vs-test jobs omitted):
CI/PR / ci-config (p...
CI/PR / windows-buil...
CI/PR / vs-build (pu...
CI/PR / regular (lin...
CI/PR / regular (lin...
CI/PR / regular (os...
CI/PR / regular (os...
CI/PR / regular (lin...
CI/PR / regular (lin...
CI/PR / dockerized (...
CI/PR / dockerized (...
CI/PR / dockerized (...
CI/PR / static-anal...
CI/PR / sparse (pu...
CI/PR / documenta...
By omitting the "/PR" from the top-level name, and pushing the
$jobname to the front we'll now instead get:
CI / config (push)
CI / win build (push...
CI / win+VS build (...
CI / linux-clang (ub...
CI / linux-gcc (ubun...
CI / osx-clang (osx)...
CI / osx-gcc (osx) (...
CI / linux-gcc-defau...
CI / linux-leaks (ub...
CI / linux-musl (alp...
CI / Linux32 (daald/...
CI / pedantic (fedor...
CI / static-analysis...
CI / sparse (push)...
CI / documentation
We then have no truncation in the expanded view. See [1] for how it
looked before, [2] for a currently visible CI run using this commit,
and [3] for the GitHub workflow syntax involved being changed here.
Let's also use the existing "pool" field as before. It's occasionally
useful to know we're running on say ubuntu v.s. fedora. The "-latest"
suffix is useful to some[4], and since it's now at the end it doesn't
hurt readability in the short view compared to saying "ubuntu" or
"macos".
1. https://github.com/git/git/tree/master/
2. https://github.com/avar/git/tree/avar/ci-rm-travis-cleanup-ci-names-3
3. https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions
3. https://lore.kernel.org/git/d9b07ca5-b58d-a535-d25b-85d7f12e6295@github.com/
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
.github/workflows/main.yml | 10 +++++++++-
README.md | 2 +-
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 6ed6a9e8076..c7c10456572 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -1,4 +1,4 @@
-name: CI/PR
+name: CI
on: [push, pull_request]
@@ -7,6 +7,7 @@ env:
jobs:
ci-config:
+ name: config
runs-on: ubuntu-latest
outputs:
enabled: ${{ steps.check-ref.outputs.enabled }}${{ steps.skip-if-redundant.outputs.enabled }}
@@ -77,6 +78,7 @@ jobs:
}
windows-build:
+ name: win build
needs: ci-config
if: needs.ci-config.outputs.enabled == 'yes'
runs-on: windows-latest
@@ -97,6 +99,7 @@ jobs:
name: windows-artifacts
path: artifacts
windows-test:
+ name: win test
runs-on: windows-latest
needs: [windows-build]
strategy:
@@ -127,6 +130,7 @@ jobs:
name: failed-tests-windows
path: ${{env.FAILED_TEST_ARTIFACTS}}
vs-build:
+ name: win+VS build
needs: ci-config
if: needs.ci-config.outputs.enabled == 'yes'
env:
@@ -178,6 +182,7 @@ jobs:
name: vs-artifacts
path: artifacts
vs-test:
+ name: win+VS test
runs-on: windows-latest
needs: vs-build
strategy:
@@ -210,6 +215,7 @@ jobs:
name: failed-tests-windows
path: ${{env.FAILED_TEST_ARTIFACTS}}
regular:
+ name: ${{matrix.vector.jobname}} (${{matrix.vector.pool}})
needs: ci-config
if: needs.ci-config.outputs.enabled == 'yes'
strategy:
@@ -251,6 +257,7 @@ jobs:
name: failed-tests-${{matrix.vector.jobname}}
path: ${{env.FAILED_TEST_ARTIFACTS}}
dockerized:
+ name: ${{matrix.vector.jobname}} (${{matrix.vector.image}})
needs: ci-config
if: needs.ci-config.outputs.enabled == 'yes'
strategy:
@@ -310,6 +317,7 @@ jobs:
run: ci/install-dependencies.sh
- run: make sparse
documentation:
+ name: documentation
needs: ci-config
if: needs.ci-config.outputs.enabled == 'yes'
env:
diff --git a/README.md b/README.md
index eb8115e6b04..f6f43e78deb 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-[![Build status](https://github.com/git/git/workflows/CI/PR/badge.svg)](https://github.com/git/git/actions?query=branch%3Amaster+event%3Apush)
+[![Build status](https://github.com/git/git/workflows/CI/badge.svg)](https://github.com/git/git/actions?query=branch%3Amaster+event%3Apush)
Git - fast, scalable, distributed revision control system
=========================================================
--
2.34.0.830.gb9cdc59c8af
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v4 3/5] CI: rename the "Linux32" job to lower-case "linux32"
2021-11-23 16:29 ` [PATCH v4 0/5] CI: Remove Travis CI, shorten names for GH tooltips, split jobs Ævar Arnfjörð Bjarmason
2021-11-23 16:29 ` [PATCH v4 1/5] CI: remove Travis CI support Ævar Arnfjörð Bjarmason
2021-11-23 16:29 ` [PATCH v4 2/5] CI: use shorter names that fit in UX tooltips Ævar Arnfjörð Bjarmason
@ 2021-11-23 16:29 ` Ævar Arnfjörð Bjarmason
2021-11-23 16:29 ` [PATCH v4 4/5] CI: use "$runs_on_pool", not "$jobname" to select packages & config Ævar Arnfjörð Bjarmason
2021-11-23 16:29 ` [PATCH v4 5/5] CI: don't run "make test" twice in one job Ævar Arnfjörð Bjarmason
4 siblings, 0 replies; 38+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2021-11-23 16:29 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Johannes Schindelin, SZEDER Gábor,
Victoria Dye, Ævar Arnfjörð Bjarmason
As a follow-up to the preceding commit's shortening of CI job names,
rename the only job that starts with an upper-case letter to be
consistent with the rest. It was added in 88dedd5e72c (Travis: also
test on 32-bit Linux, 2017-03-05).
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
.github/workflows/main.yml | 3 ++-
ci/install-docker-dependencies.sh | 2 +-
ci/lib.sh | 2 +-
ci/run-docker-build.sh | 2 +-
ci/run-docker.sh | 2 +-
5 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index c7c10456572..91b565f75bb 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -266,7 +266,8 @@ jobs:
vector:
- jobname: linux-musl
image: alpine
- - jobname: Linux32
+ - jobname: linux32
+ os: ubuntu32
image: daald/ubuntu32:xenial
- jobname: pedantic
image: fedora
diff --git a/ci/install-docker-dependencies.sh b/ci/install-docker-dependencies.sh
index 07a8c6b199d..78b7e326da6 100755
--- a/ci/install-docker-dependencies.sh
+++ b/ci/install-docker-dependencies.sh
@@ -4,7 +4,7 @@
#
case "$jobname" in
-Linux32)
+linux32)
linux32 --32bit i386 sh -c '
apt update >/dev/null &&
apt install -y build-essential libcurl4-openssl-dev \
diff --git a/ci/lib.sh b/ci/lib.sh
index 73d959e87f7..0b3b0144882 100755
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -191,7 +191,7 @@ osx-clang|osx-gcc)
;;
linux-gcc-default)
;;
-Linux32)
+linux32)
CC=gcc
;;
linux-musl)
diff --git a/ci/run-docker-build.sh b/ci/run-docker-build.sh
index 5d2764ad3a3..6cd832efb9c 100755
--- a/ci/run-docker-build.sh
+++ b/ci/run-docker-build.sh
@@ -15,7 +15,7 @@ then
fi
case "$jobname" in
-Linux32)
+linux32)
switch_cmd="linux32 --32bit i386"
;;
linux-musl)
diff --git a/ci/run-docker.sh b/ci/run-docker.sh
index b610dd4db84..af89d1624a4 100755
--- a/ci/run-docker.sh
+++ b/ci/run-docker.sh
@@ -6,7 +6,7 @@
. ${0%/*}/lib.sh
case "$jobname" in
-Linux32)
+linux32)
CI_CONTAINER="daald/ubuntu32:xenial"
;;
linux-musl)
--
2.34.0.830.gb9cdc59c8af
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v4 4/5] CI: use "$runs_on_pool", not "$jobname" to select packages & config
2021-11-23 16:29 ` [PATCH v4 0/5] CI: Remove Travis CI, shorten names for GH tooltips, split jobs Ævar Arnfjörð Bjarmason
` (2 preceding siblings ...)
2021-11-23 16:29 ` [PATCH v4 3/5] CI: rename the "Linux32" job to lower-case "linux32" Ævar Arnfjörð Bjarmason
@ 2021-11-23 16:29 ` Ævar Arnfjörð Bjarmason
2021-11-23 16:29 ` [PATCH v4 5/5] CI: don't run "make test" twice in one job Ævar Arnfjörð Bjarmason
4 siblings, 0 replies; 38+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2021-11-23 16:29 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Johannes Schindelin, SZEDER Gábor,
Victoria Dye, Ævar Arnfjörð Bjarmason
Change the setup hooks for the CI to use "$runs_on_pool" for the
"$regular" job. Now we won't need as much boilerplate when adding new
jobs to the "regular" matrix, see 956d2e4639b (tests: add a test mode
for SANITIZE=leak, run it in CI, 2021-09-23) for the last such commit.
I.e. now instead of needing to enumerate each jobname when we select
packages we can install things depending on the pool we're running
in.
That we didn't do this dates back to the now gone dependency on Travis
CI, but even if we add a new CI target in the future this'll be easier
to port over, since we can probably treat "ubuntu-latest" as a
stand-in for some recent Linux that can run "apt" commands.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
.github/workflows/main.yml | 4 ++++
ci/install-dependencies.sh | 32 ++++++++++++++------------------
ci/lib.sh | 21 +++++++++++----------
3 files changed, 29 insertions(+), 28 deletions(-)
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 91b565f75bb..d402402a18b 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -227,12 +227,14 @@ jobs:
pool: ubuntu-latest
- jobname: linux-gcc
cc: gcc
+ cc_package: gcc-8
pool: ubuntu-latest
- jobname: osx-clang
cc: clang
pool: macos-latest
- jobname: osx-gcc
cc: gcc
+ cc_package: gcc-9
pool: macos-latest
- jobname: linux-gcc-default
cc: gcc
@@ -242,7 +244,9 @@ jobs:
pool: ubuntu-latest
env:
CC: ${{matrix.vector.cc}}
+ CC_PACKAGE: ${{matrix.vector.cc_package}}
jobname: ${{matrix.vector.jobname}}
+ runs_on_pool: ${{matrix.vector.pool}}
runs-on: ${{matrix.vector.pool}}
steps:
- uses: actions/checkout@v2
diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
index 49a4ae7a988..dbcebad2fb2 100755
--- a/ci/install-dependencies.sh
+++ b/ci/install-dependencies.sh
@@ -11,17 +11,11 @@ UBUNTU_COMMON_PKGS="make libssl-dev libcurl4-openssl-dev libexpat-dev
tcl tk gettext zlib1g-dev perl-modules liberror-perl libauthen-sasl-perl
libemail-valid-perl libio-socket-ssl-perl libnet-smtp-ssl-perl"
-case "$jobname" in
-linux-clang|linux-gcc|linux-leaks)
+case "$runs_on_pool" in
+ubuntu-latest)
sudo apt-get -q update
sudo apt-get -q -y install language-pack-is libsvn-perl apache2 \
- $UBUNTU_COMMON_PKGS
- case "$jobname" in
- linux-gcc)
- sudo apt-get -q -y install gcc-8
- ;;
- esac
-
+ $UBUNTU_COMMON_PKGS $CC_PACKAGE
mkdir --parents "$P4_PATH"
pushd "$P4_PATH"
wget --quiet "$P4WHENCE/bin.linux26x86_64/p4d"
@@ -36,7 +30,7 @@ linux-clang|linux-gcc|linux-leaks)
cp git-lfs-$LINUX_GIT_LFS_VERSION/git-lfs .
popd
;;
-osx-clang|osx-gcc)
+macos-latest)
export HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1
# Uncomment this if you want to run perf tests:
# brew install gnu-time
@@ -50,15 +44,17 @@ osx-clang|osx-gcc)
brew install --cask --no-quarantine perforce
} ||
brew install homebrew/cask/perforce
- case "$jobname" in
- osx-gcc)
- brew install gcc@9
- # Just in case the image is updated to contain gcc@9
- # pre-installed but not linked.
- brew link gcc@9
- ;;
- esac
+
+ if test -n "$CC_PACKAGE"
+ then
+ BREW_PACKAGE=${CC_PACKAGE/-/@}
+ brew install "$BREW_PACKAGE"
+ brew link "$BREW_PACKAGE"
+ fi
;;
+esac
+
+case "$jobname" in
StaticAnalysis)
sudo apt-get -q update
sudo apt-get -q -y install coccinelle libcurl4-openssl-dev libssl-dev \
diff --git a/ci/lib.sh b/ci/lib.sh
index 0b3b0144882..cbc2f8f1caa 100755
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -156,11 +156,15 @@ export DEFAULT_TEST_TARGET=prove
export GIT_TEST_CLONE_2GB=true
export SKIP_DASHED_BUILT_INS=YesPlease
-case "$jobname" in
-linux-clang|linux-gcc|linux-leaks)
+case "$runs_on_pool" in
+ubuntu-latest)
+ if test "$jobname" = "linux-gcc-default"
+ then
+ break
+ fi
+
if [ "$jobname" = linux-gcc ]
then
- export CC=gcc-8
MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/python3"
else
MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/python2"
@@ -180,17 +184,17 @@ linux-clang|linux-gcc|linux-leaks)
GIT_LFS_PATH="$HOME/custom/git-lfs"
export PATH="$GIT_LFS_PATH:$P4_PATH:$PATH"
;;
-osx-clang|osx-gcc)
+macos-latest)
if [ "$jobname" = osx-gcc ]
then
- export CC=gcc-9
MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python3)"
else
MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python2)"
fi
;;
-linux-gcc-default)
- ;;
+esac
+
+case "$jobname" in
linux32)
CC=gcc
;;
@@ -200,9 +204,6 @@ linux-musl)
MAKEFLAGS="$MAKEFLAGS NO_REGEX=Yes ICONV_OMITS_BOM=Yes"
MAKEFLAGS="$MAKEFLAGS GIT_TEST_UTF8_LOCALE=C.UTF-8"
;;
-esac
-
-case "$jobname" in
linux-leaks)
export SANITIZE=leak
export GIT_TEST_PASSING_SANITIZE_LEAK=true
--
2.34.0.830.gb9cdc59c8af
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v4 5/5] CI: don't run "make test" twice in one job
2021-11-23 16:29 ` [PATCH v4 0/5] CI: Remove Travis CI, shorten names for GH tooltips, split jobs Ævar Arnfjörð Bjarmason
` (3 preceding siblings ...)
2021-11-23 16:29 ` [PATCH v4 4/5] CI: use "$runs_on_pool", not "$jobname" to select packages & config Ævar Arnfjörð Bjarmason
@ 2021-11-23 16:29 ` Ævar Arnfjörð Bjarmason
4 siblings, 0 replies; 38+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2021-11-23 16:29 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Johannes Schindelin, SZEDER Gábor,
Victoria Dye, Ævar Arnfjörð Bjarmason
The "linux-clang" and "linux-gcc" jobs both run "make test" twice, but
with different environment variables. Running these in sequence seems
to have been done to work around some constraint on Travis, see
ae59a4e44f3 (travis: run tests with GIT_TEST_SPLIT_INDEX, 2018-01-07).
By having these run in parallel we'll get jobs that finish much sooner
than they otherwise would have.
We can also simplify the control flow in "ci/run-build-and-tests.sh"
as a result, since we won't run "make test" twice we don't need to run
"make" twice at all, let's default to "make all test" after setting
the variables, and then override it to just "all" for the compile-only
tests.
Add a comment to clarify that new "test" targets should adjust
$MAKE_TARGETS rather than being added after the "case/esac". This
should avoid future confusion where e.g. the compilation-only
"pedantic" target will unexpectedly start running tests. See [1] and
[2].
1. https://lore.kernel.org/git/211122.86ee78yxts.gmgdl@evledraar.gmail.com/
2. https://lore.kernel.org/git/211123.86ilwjujmd.gmgdl@evledraar.gmail.com/
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
.github/workflows/main.yml | 9 +++++++++
ci/run-build-and-tests.sh | 23 +++++++++++------------
2 files changed, 20 insertions(+), 12 deletions(-)
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index d402402a18b..628bcbf495e 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -225,10 +225,19 @@ jobs:
- jobname: linux-clang
cc: clang
pool: ubuntu-latest
+ - jobname: linux-sha256
+ cc: clang
+ os: ubuntu
+ pool: ubuntu-latest
- jobname: linux-gcc
cc: gcc
cc_package: gcc-8
pool: ubuntu-latest
+ - jobname: linux-TEST-vars
+ cc: gcc
+ os: ubuntu
+ cc_package: gcc-8
+ pool: ubuntu-latest
- jobname: osx-clang
cc: clang
pool: macos-latest
diff --git a/ci/run-build-and-tests.sh b/ci/run-build-and-tests.sh
index 18056501ec2..280dda7d285 100755
--- a/ci/run-build-and-tests.sh
+++ b/ci/run-build-and-tests.sh
@@ -10,16 +10,13 @@ windows*) cmd //c mklink //j t\\.prove "$(cygpath -aw "$cache_dir/.prove")";;
*) ln -s "$cache_dir/.prove" t/.prove;;
esac
-if test "$jobname" = "pedantic"
-then
- export DEVOPTS=pedantic
-fi
+export MAKE_TARGETS="all test"
-make
case "$jobname" in
linux-gcc)
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
- make test
+ ;;
+linux-TEST-vars)
export GIT_TEST_SPLIT_INDEX=yes
export GIT_TEST_MERGE_ALGORITHM=recursive
export GIT_TEST_FULL_IN_PACK_ARRAY=true
@@ -33,23 +30,25 @@ linux-gcc)
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master
export GIT_TEST_WRITE_REV_INDEX=1
export GIT_TEST_CHECKOUT_WORKERS=2
- make test
;;
linux-clang)
export GIT_TEST_DEFAULT_HASH=sha1
- make test
+ ;;
+linux-sha256)
export GIT_TEST_DEFAULT_HASH=sha256
- make test
;;
pedantic)
# Don't run the tests; we only care about whether Git can be
# built.
- ;;
-*)
- make test
+ export DEVOPTS=pedantic
+ export MAKE_TARGETS=all
;;
esac
+# Any new "test" targets should not go after this "make", but should
+# adjust $MAKE_TARGETS. Otherwise compilation-only targets above will
+# start running tests.
+make $MAKE_TARGETS
check_unignored_build_artifacts
save_good_tree
--
2.34.0.830.gb9cdc59c8af
^ permalink raw reply related [flat|nested] 38+ messages in thread