ease the proof of coincidence count
[why3.git] / .gitlab-ci.yml
blob2ca5ebcb774593780923b0ed9d7e7ac3896ae8da
1 stages:
2   - docker
3   - build
4   - test
5   - nightly
6   - deploy
8 variables:
9   BUILD_IMAGE: "$CI_REGISTRY_IMAGE:ci-master-2024-11-08"
10   SPHINX_IMAGE: "$CI_REGISTRY_IMAGE:ci-sphinx"
11   GIT_CLEAN_FLAGS: "-ffdxq"
13 build-image:
14   stage: docker
15   image: docker
16   script:
17     - docker login -u "$CI_REGISTRY_USER" -p "$CI_JOB_TOKEN" "$CI_REGISTRY"
18     - if docker manifest inspect "$BUILD_IMAGE"; then echo "Image already exists!"; exit 0; fi
19     - docker build --force-rm -t "$BUILD_IMAGE" - < misc/Dockerfile.build
20     - docker push "$BUILD_IMAGE"
21     - docker rmi "$BUILD_IMAGE"
22   tags:
23     - large
25 sphinx-image:
26   stage: docker
27   image: docker
28   script:
29     - docker login -u "$CI_REGISTRY_USER" -p "$CI_JOB_TOKEN" "$CI_REGISTRY"
30     - docker build --force-rm -t "$SPHINX_IMAGE" - < misc/Dockerfile.sphinx
31     - docker push "$SPHINX_IMAGE"
32     - docker rmi "$SPHINX_IMAGE"
33   only:
34     variables:
35       - $NEW_SPHINX_IMAGE
36   tags:
37     - medium
39 .docker_template:
40   image: "$BUILD_IMAGE"
41   dependencies: []
42   tags:
43     - medium
45 build-system:
46   stage: build
47   variables:
48     COMPILER: system
49   script:
50     - misc/ci-local.sh
51   extends: .docker_template
53 build-latest:
54   stage: build
55   variables:
56     COMPILER: latest
57   script:
58     - misc/ci-local.sh doc
59   artifacts:
60     paths:
61       - doc/generated
62       - doc/stdlibdoc
63       - doc/apidoc
64     expire_in: 1 day
65   extends: .docker_template
67 bench-system:
68   variables:
69     COMPILER: system
70   stage: test
71   script:
72     - misc/ci-local.sh bench doc
73   extends: .docker_template
75 bench-latest:
76   variables:
77     COMPILER: latest
78   stage: test
79   script:
80     - misc/ci-local.sh ide bench
81   extends: .docker_template
83 full:
84   stage: test
85   variables:
86     COMPILER: full
87   script:
88     - misc/ci-local.sh ide doc trywhy3 bench
89     - tar xzf trywhy3.tar.gz
90   artifacts:
91     paths:
92       - trywhy3
93     expire_in: 1 day
94   extends: .docker_template
96 nightly-bench:
97   stage: nightly
98   variables:
99     COMPILER: bench
100   script:
101     - misc/ci-local.sh nightly-bench-reduced
102   extends: .docker_template
104 ce-bench:
105   stage: nightly
106   variables:
107     COMPILER: bench
108   script:
109     - misc/ci-local.sh ce-bench
110   extends: .docker_template
112 opam:
113   stage: build
114   script:
115     - opam switch bench
116     - misc/ci-opam.sh why3 why3-ide
117   extends: .docker_template
119 opam-latest:
120   stage: test
121   script:
122     - opam switch latest
123     - misc/ci-opam.sh why3 why3-ide
124   extends: .docker_template
126 opam-full:
127   stage: test
128   script:
129     - opam switch full
130     - misc/ci-opam.sh why3 why3-ide why3-coq
131   extends: .docker_template
133 trywhy3-extra:
134   stage: build
135   image: "debian:bullseye-slim"
136   script:
137     - misc/ci-trywhy3.sh
138   only:
139     variables:
140       - $NEW_TRYWHY3_EXTRA
141   artifacts:
142     paths:
143       - trywhy3
144     expire_in: never
145   tags:
146     - large
148 deploy:
149   stage: deploy
150   image: docker
151   script:
152     - BRANCH=$(echo $CI_COMMIT_REF_NAME | tr -cs "[:alnum:].\n" "-")
153     - CACHE=$CI_REGISTRY_IMAGE:cache-$BRANCH
154     - IMAGE=$CI_REGISTRY_IMAGE:$BRANCH
155     - docker login -u "$CI_REGISTRY_USER" -p "$CI_JOB_TOKEN" "$CI_REGISTRY"
156     - docker pull "$CACHE" || true
157     - docker pull "$IMAGE" || true
158     - docker build --force-rm --cache-from="$CACHE" --target=builder -t "$CACHE" -f misc/Dockerfile.deploy .
159     - docker build --force-rm --cache-from="$CACHE" --cache-from="$IMAGE" -t "$IMAGE" -f misc/Dockerfile.deploy .
160     - test -n "$CI_COMMIT_TAG" || docker push "$CACHE"
161     - docker push "$IMAGE"
162     - docker rmi "$CACHE"
163     - docker rmi "$IMAGE"
164     - docker image prune -f
165   only:
166     - master
167     - /^bugfix[/]v[0-9.]*$/
168     - tags
169   tags:
170     - medium
172 doc:
173   stage: test
174   image: "$SPHINX_IMAGE"
175   dependencies:
176     - build-latest
177   script:
178     - sphinx-build -W --keep-going -b html -d doctrees doc public
179     - cp -r doc/apidoc public/api
180     - cp -r doc/stdlibdoc public/stdlib
181   artifacts:
182     paths:
183       - public
184     expire_in: 1 day
185   tags:
186     - medium
188 pages:
189   stage: deploy
190   image: busybox:uclibc
191   dependencies:
192     - doc
193   script:
194     - echo "Already in public/"
195   artifacts:
196     paths:
197       - public
198     expire_in: 1 day
199   only:
200     - master
201   tags:
202     - small