summaryrefslogtreecommitdiffstats
path: root/.gitlab-ci.yml
blob: 54462b0efaad0f55109db4347a760e18d1761708 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
stages:
  - pre-check
  - build
  - test

before_script:
  - 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
  - rustc --version
  - cargo --version
  - clang --version

after_script:
  - find $CARGO_TARGET_DIR -type f -atime +7 -delete
  - du -sh $CARGO_TARGET_DIR
  - du -sh $CARGO_HOME

bullseye:
  tags:
    - linux
  stage: build
  image: registry.gitlab.com/sequoia-pgp/build-docker-image/bullseye:latest
  dependencies:
    - codespell

  script:
    - SEQUOIA_CTEST_VALGRIND=/usr/bin/valgrind cargo test -p sequoia-openpgp-ffi
    - cargo test --all --exclude sequoia-openpgp-ffi
    - make
    - if ! git diff --quiet Cargo.lock ; then echo "Cargo.lock changed.  Please add the change to the corresponding commit." ; false ; fi
    - make -C sq update-usage
    - if ! git diff --quiet sq ; then echo "Please run 'make -C sq update-usage' and commit the result." ; false ; fi
    - make -C sqv update-usage
    - if ! git diff --quiet sqv ; then echo "Please run 'make -C sqv update-usage' and commit the result." ; false ; fi
    - if ! git diff --quiet ; then echo "The build changed the source.  Please investigate." ; git diff ; fi

  variables:
    CARGO_TARGET_DIR: $CI_PROJECT_DIR/../target.$CI_CONCURRENT_ID.bullseye
    RUSTFLAGS: -D warnings -A unused-parens

all_commits:
  # Test each commit up to master, to facilitate bisecting.
  stage: test
  image: rust:1-slim-buster
  needs: ["rust-stable"]
  except:
    # Do not run for pushes to the pep-engine branch.
    - /^pep-engine$/

  before_script:
    - apt update -y -qq
    - apt install --no-install-recommends -y -qq -o=Dpkg::Use-Pty=0 clang libclang-dev llvm pkg-config nettle-dev git
    - 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
    - rustc --version
    - cargo --version
    - 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/master; then git rebase --abort; false; fi

  variables:
    CARGO_TARGET_DIR: $CI_PROJECT_DIR/../target.$CI_CONCURRENT_ID.all_commits
    RUSTFLAGS: -D warnings -A unused-parens
    GIT_STRATEGY: clone

codespell:
  tags:
    - linux
  stage: pre-check
  image: registry.gitlab.com/sequoia-pgp/build-docker-image/bullseye:latest

  before_script:
    - codespell --version
  script:
    - make codespell CODESPELL_FLAGS=--summary
  after_script: []

rust-stable:
  tags:
    - linux
  stage: build
  image: rust:1-slim-buster

  before_script:
    - apt update -y -qq
    - apt install --no-install-recommends -y -qq -o=Dpkg::Use-Pty=0 clang libclang-dev llvm pkg-config nettle-dev
    - 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
    - rustc --version
    - cargo --version
    - clang --version

  script:
    - cargo test -p buffered-reader -p sequoia-openpgp -p sequoia-sqv

  variables:
    CARGO_TARGET_DIR: $CI_PROJECT_DIR/../target.$CI_CONCURRENT_ID.rust-stable
    RUSTFLAGS: -D warnings -A unused-parens

variables:
  DEBIAN_FRONTEND: noninteractive
  CARGO_HOME: $CI_PROJECT_DIR/../cargo
  CARGO_FLAGS: --color always
  CARGO_INCREMENTAL: 0
  RUST_BACKTRACE: full
  RUSTFLAGS: -D warnings
  CFLAGS: -Werror
  QUICKCHECK_GENERATOR_SIZE: 500 # https://github.com/BurntSushi/quickcheck/pull/240