ci: Add test jobs.
This commit is contained in:
parent
2c8ae1ef1b
commit
de868c20bc
26
.ci/all_commits.sh
Executable file
26
.ci/all_commits.sh
Executable file
@ -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
|
195
.gitlab-ci.yml
Normal file
195
.gitlab-ci.yml
Normal file
@ -0,0 +1,195 @@
|
||||
stages:
|
||||
- pre-check
|
||||
- build
|
||||
- test
|
||||
|
||||
# These stanzas do some common management tasks before and after the
|
||||
# job-specific before_script and after_script stanzas are run.
|
||||
# before_script_start configures any default global state. The
|
||||
# job-specific before_script can override this state, if required.
|
||||
# before_script_end prints out information about the environment to
|
||||
# improve debugging; it does not modify the environment.
|
||||
# after_script_end does some common management tasks after the
|
||||
# job-specific after_script is run. It prints information about the
|
||||
# environment, and does some clean up.
|
||||
#
|
||||
# Add this to your stanza as follows:
|
||||
#
|
||||
# before_script:
|
||||
# - *before_script_start
|
||||
# - *** YOUR CODE HERE ***
|
||||
# - *before_script_end
|
||||
# after_script:
|
||||
# - *** YOUR CODE HERE ***
|
||||
# - *after_script_end
|
||||
|
||||
.before_script_start: &before_script_start
|
||||
- 'if test "x${RUSTFLAGS+SET}" = xSET; then echo "\$RUSTFLAGS is set ($RUSTFLAGS)"; exit 1; fi'
|
||||
|
||||
.before_script_end: &before_script_end
|
||||
- 'if test "x${RUSTFLAGS+SET}" = xSET; then echo "WARNING: before_script set \$RUSTFLAGS ($RUSTFLAGS)"; fi'
|
||||
- rustc --version --verbose
|
||||
- cargo --version
|
||||
- clang -v
|
||||
- if [ -d $CARGO_TARGET_DIR ]; then find $CARGO_TARGET_DIR | wc --lines; du -sh $CARGO_TARGET_DIR; fi
|
||||
- if [ -d $CARGO_HOME ]; then find $CARGO_HOME | wc --lines; du -sh $CARGO_HOME; fi
|
||||
|
||||
.after_script_end: &after_script_end
|
||||
- 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
|
||||
|
||||
before_script:
|
||||
- *before_script_start
|
||||
- *before_script_end
|
||||
|
||||
after_script:
|
||||
- *after_script_end
|
||||
|
||||
bookworm:
|
||||
tags:
|
||||
- linux
|
||||
stage: build
|
||||
interruptible: true
|
||||
image: 192.168.122.1:5000/sequoia-pgp/build-docker-image/bookworm:latest
|
||||
script:
|
||||
- cargo test
|
||||
- if ! git diff --quiet Cargo.lock ; then echo "Cargo.lock changed. Please add the change to the corresponding commit." ; git diff ; false ; fi
|
||||
- if ! git diff --quiet ; then echo "The build changed the source. Please investigate." ; git diff ; fi
|
||||
variables:
|
||||
CARGO_TARGET_DIR: /target
|
||||
CARGO_HOME: /cargo
|
||||
|
||||
sq-features:
|
||||
tags:
|
||||
- linux
|
||||
stage: build
|
||||
interruptible: true
|
||||
image: 192.168.122.1:5000/sequoia-pgp/build-docker-image/bookworm:latest
|
||||
only:
|
||||
refs:
|
||||
- tags
|
||||
- web
|
||||
- schedules
|
||||
parallel:
|
||||
matrix:
|
||||
- FEATURES:
|
||||
- ""
|
||||
- "autocrypt"
|
||||
- "autocrypt,compression-bzip2"
|
||||
- "compression-bzip2"
|
||||
script:
|
||||
- cargo test --no-default-features --features crypto-nettle --features $FEATURES
|
||||
variables:
|
||||
CARGO_TARGET_DIR: /target
|
||||
CARGO_HOME: /cargo
|
||||
|
||||
bookworm-crypto-openssl:
|
||||
tags:
|
||||
- linux
|
||||
stage: build
|
||||
interruptible: true
|
||||
image: 192.168.122.1:5000/sequoia-pgp/build-docker-image/bookworm:latest
|
||||
dependencies:
|
||||
- codespell
|
||||
script:
|
||||
- cargo test --no-default-features --features crypto-openssl,compression-bzip2
|
||||
variables:
|
||||
CARGO_TARGET_DIR: /target
|
||||
CARGO_HOME: /cargo
|
||||
|
||||
all_commits:
|
||||
# Test each commit up to main, to facilitate bisecting.
|
||||
stage: test
|
||||
interruptible: true
|
||||
image: 192.168.122.1:5000/sequoia-pgp/build-docker-image/rust-stable:latest
|
||||
needs: ["rust-stable"]
|
||||
script:
|
||||
- .ci/all_commits.sh
|
||||
variables:
|
||||
CARGO_TARGET_DIR: /target
|
||||
CARGO_HOME: /cargo
|
||||
GIT_STRATEGY: clone
|
||||
|
||||
codespell:
|
||||
tags:
|
||||
- linux
|
||||
stage: pre-check
|
||||
interruptible: true
|
||||
image: 192.168.122.1:5000/sequoia-pgp/build-docker-image/bookworm:latest
|
||||
|
||||
before_script:
|
||||
- *before_script_start
|
||||
- codespell --version
|
||||
- *before_script_end
|
||||
script:
|
||||
- codespell --summary -L "crate,ede,iff,mut,nd,te,uint,KeyServer,keyserver,Keyserver,keyservers,Keyservers,keypair,keypairs,KeyPair,fpr,dedup,deriver" -S "*.bin,*.gpg,*.pgp,./.git,*/target"
|
||||
|
||||
rust-stable:
|
||||
tags:
|
||||
- linux
|
||||
stage: build
|
||||
interruptible: true
|
||||
image: 192.168.122.1:5000/sequoia-pgp/build-docker-image/rust-stable:latest
|
||||
before_script:
|
||||
- *before_script_start
|
||||
- rustup override set stable
|
||||
- *before_script_end
|
||||
script:
|
||||
- cargo test
|
||||
variables:
|
||||
CARGO_TARGET_DIR: /target
|
||||
CARGO_HOME: /cargo
|
||||
|
||||
clippy:
|
||||
tags:
|
||||
- linux
|
||||
stage: build
|
||||
interruptible: true
|
||||
image: 192.168.122.1:5000/sequoia-pgp/build-docker-image/rust-stable:latest
|
||||
before_script:
|
||||
- *before_script_start
|
||||
- apt-get -y install libssl-dev capnproto libsqlite3-dev
|
||||
- rustup default 1.60.0
|
||||
- rustup component add clippy
|
||||
- cargo clippy --version
|
||||
- *before_script_end
|
||||
script:
|
||||
- cargo clippy
|
||||
variables:
|
||||
CARGO_TARGET_DIR: /target
|
||||
CARGO_HOME: /cargo
|
||||
|
||||
windows-msvc-cng:
|
||||
tags:
|
||||
- win
|
||||
- win2019
|
||||
stage: build
|
||||
interruptible: true
|
||||
image: 192.168.122.1:5000/sequoia-pgp/build-docker-image/windows-msvc
|
||||
only:
|
||||
variables:
|
||||
# Forks of this project most likely use gitlab's shared windows runners, which
|
||||
# do not use the docker executor, so disable the windows jobs for forks.
|
||||
- $CI_PROJECT_NAMESPACE == "sequoia-pgp"
|
||||
before_script:
|
||||
# We don't call *before_script_start or *before_script_end as we
|
||||
# don't have bash, clang, etc.
|
||||
- rustup default "1.60.0"
|
||||
- rustc --version --verbose
|
||||
- cargo --version
|
||||
script:
|
||||
- Remove-Item tests\sq-subplot.rs # until https://gitlab.com/subplot/subplot/-/issues/232 is fixed
|
||||
- cargo test --no-default-features --features crypto-cng,compression-bzip2
|
||||
after_script: [] # scriptlet doesn't work on Powershell
|
||||
variables:
|
||||
CFLAGS: "" # Silence some C warnings when compiling with MSVC
|
||||
|
||||
variables:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
CARGO_HOME: $CI_PROJECT_DIR/../cargo
|
||||
CARGO_FLAGS: --color always
|
||||
CARGO_INCREMENTAL: 0
|
||||
RUST_BACKTRACE: full
|
||||
CFLAGS: -Werror
|
||||
QUICKCHECK_GENERATOR_SIZE: 500 # https://github.com/BurntSushi/quickcheck/pull/240
|
Loading…
x
Reference in New Issue
Block a user