diff options
author | Azul <azul@riseup.net> | 2021-01-26 10:09:14 +0100 |
---|---|---|
committer | Azul <azul@riseup.net> | 2021-01-27 09:17:03 +0100 |
commit | 320ce805978d45631c2f2180f453dc1b97198f08 (patch) | |
tree | 2796e0fd308a4ce3c6feaf15ba413ad55e50d802 | |
parent | 3d8bad0e9d9a6c640159ff666b1d99cc0e9c0c36 (diff) |
ci: Leave out last commit in all_commits.
- If there is only one commit do not rebase at all.
An empty rebase with --exec will still run the exec command once.
- Fixes #628.
-rwxr-xr-x | .ci/all_commits.sh | 26 | ||||
-rw-r--r-- | .gitlab-ci.yml | 11 |
2 files changed, 30 insertions, 7 deletions
diff --git a/.ci/all_commits.sh b/.ci/all_commits.sh new file mode 100755 index 00000000..b44f48c5 --- /dev/null +++ b/.ci/all_commits.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# Test all commits on this branch but the last one. +# +# Used in the all_commits ci job to ensure all commits build +# and tests pass at least for the sequoia-openpgp crate. + +# Use dummy identity to make git rebase happy. +git config user.name "C.I. McTestface" +git config user.email "ci.mctestface@example.com" + +# If the previous commit already is on main we're done. +git merge-base --is-ancestor HEAD~ origin/main && + echo "All commits tested already" && + exit 0 + +# Leave out the last commit - it has already been checked. +git checkout HEAD~ +git rebase origin/main \ + --exec 'echo ===; echo ===; echo ===; git log -n 1;' \ + --exec 'cargo test -p sequoia-openpgp' && + echo "All commits passed tests" && + exit 0 + +# The rebase failed - probably because a test failed. +git rebase --abort; exit 1 diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0be763c2..23add0fc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -11,9 +11,9 @@ before_script: - clang --version after_script: - - find $CARGO_TARGET_DIR -type f -atime +7 -delete - - du -sh $CARGO_TARGET_DIR - - du -sh $CARGO_HOME + - if [ -d $CARGO_TARGET_DIR ]; then find $CARGO_TARGET_DIR -type f -atime +7 -delete; fi + - if [ -d $CARGO_TARGET_DIR ]; then du -sh $CARGO_TARGET_DIR; fi + - if [ -d $CARGO_HOME ]; then du -sh $CARGO_HOME; fi bullseye: tags: @@ -55,10 +55,7 @@ all_commits: - clang --version script: - # Use dummy identity to make git rebase happy. - - git config user.name "C.I. McTestface" - - git config user.email "ci.mctestface@example.com" - - if ! git rebase --exec "echo ===; echo ===; echo ===; git log -n 1; cargo test -p sequoia-openpgp" origin/main; then git rebase --abort; false; fi + - .ci/all_commits.sh variables: CARGO_TARGET_DIR: $CI_PROJECT_DIR/../target.$CI_CONCURRENT_ID.all_commits |