CI: Try to enable integration tests, hardening, and clang.
[tor.git] / .gitlab-ci.yml
blob3959bba02446ea68dd566c8b45340bc03c239a62
1 ####
2 # DO NOT EDIT THIS FILE IN MASTER.  ONLY EDIT IT IN THE OLDEST SUPPORTED
3 # BRANCH, THEN MERGE FORWARD.
4 ####
6 # This file controls how gitlab validates Tor commits and merge requests.
8 # It is primarily based on a set of scripts and configurations by
9 # Hans-Christoph Steiner.  It only copies parts of those scripts and
10 # configurations for now.  If you want a new piece of functionality
11 # (more debians, more fedoras, android support) then you shouldn't
12 # start from scratch: have a look at the original ticket, at
13 # https://gitlab.torproject.org/tpo/core/tor/-/issues/32193 !
15 # The file to copy from is
16 # https://gitlab.torproject.org/tpo/core/tor/-/merge_requests/96/diffs#diff-content-587d266bb27a4dc3022bbed44dfa19849df3044c
18 # Having said that, if there is anything really stupid here, don't
19 # blame it on Hans-Christoph! Tor probably added it on their own.
21 # Copyright 2020, The Tor Project, Inc.
22 # See LICENSE for licence information.
24 # These variables are set everywhere, unconditionally.
25 variables:
26   TERM: "ansi"
27   DEBUG_CI: "yes"
29 # This template is for exporting ephemeral things from the scripts.  By
30 # convention we expect our scripts to copy stuff into artifacts/, rather than
31 # having a big list of files that be treated as artifacts.
32 .artifacts-template: &artifacts-template
33   artifacts:
34     name: "${CI_PROJECT_PATH}_${CI_JOB_STAGE}_${CI_COMMIT_REF_NAME}_${CI_COMMIT_SHA}"
35     expire_in: 1 week
36     when: always
37     paths:
38       - artifacts/
40 .apt-template: &apt-template |
41       export LC_ALL=C.UTF-8
42       echo Etc/UTC > /etc/timezone
43       mkdir -p apt-cache
44       export APT_CACHE_DIR="$(pwd)/apt-cache"
45       echo 'quiet "1";' \
46            'APT::Install-Recommends "0";' \
47            'APT::Install-Suggests "0";' \
48            'APT::Acquire::Retries "20";' \
49            'APT::Get::Assume-Yes "true";' \
50            'Dpkg::Use-Pty "0";' \
51            "Dir::Cache::Archives \"${APT_CACHE_DIR}\"; " \
52         >> /etc/apt/apt.conf.d/99gitlab
53       apt-get update -qq
54       apt-get upgrade -qy
56 .debian-template: &debian-template
57   <<: *artifacts-template
58   variables:
59     DEBIAN_FRONTEND: "noninteractive"
60   cache:
61     key: apt
62     paths:
63       - apt-cache
64   before_script:
65     - *apt-template
66     - apt-get install
67         automake
68         build-essential
69         ca-certificates
70         git
71         libevent-dev
72         liblzma-dev
73         libscrypt-dev
74         libseccomp-dev
75         libssl-dev
76         pkg-config
77         python3
78         zlib1g-dev
79     - if [ "$ASCIIDOC" = yes ]; then apt-get install asciidoc xmlto; fi
80     - if [ "$DOXYGEN" = yes ]; then apt-get install doxygen; fi
81     - if [ "$STEM" = yes ]; then apt-get install timelimit; fi
82     - if [ "$CC" = clang ]; then apt-get install clang; fi
83     - if [ "$STEM" = yes ]; then git clone --depth 1 https://git.torproject.org/stem.git ; export STEM_PATH="$(pwd)/stem"; fi
84     - if [ "$CHUTNEY" = yes ]; then git clone --depth 1 https://git.torproject.org/chutney.git ;  export CHUTNEY_PATH="$(pwd)/chutney"; fi
86 debian-minimal:
87   image: debian:stable
88   <<: *debian-template
89   script:
90     - ./scripts/ci/ci-driver.sh
93 # TODO: This one just takes too long to finish right now!
94 # Maybe we need to divide the call to ./src/test/test into a few segments,
95 # that all end in similar amount of time?
96 debian-hardened:
97   image: debian:testing
98   <<: *debian-template
99   variables:
100     HARDENING: "yes"
101     CC: "clang"
102   script:
103     - ./scripts/ci/ci-driver.sh
105 debian-distcheck:
106   image: debian:stable
107   <<: *debian-template
108   variables:
109     DISTCHECK: "yes"
110     CHECK: "no"
111   script:
112     - ./scripts/ci/ci-driver.sh
114 # TODO: it would be neat to disable the "make all" part of this one.
115 debian-docs:
116   image: debian:stable
117   <<: *debian-template
118   variables:
119     DOXYGEN: "yes"
120     ASCIIDOC: "yes"
121     CHECK: "no"
122   script:
123     - ./scripts/ci/ci-driver.sh
125 debian-integration:
126   image: debian:stable
127   <<: *debian-template
128   variables:
129     CHECK: "no"
130     CHUTNEY: "yes"
131     # STEM: "yes" -- currently failing on <044.
132   script:
133     - ./scripts/ci/ci-driver.sh