framework/replay: export checksums in json
[piglit.git] / .gitlab-ci.yml
blobc22fe762f7d9be239ee99d716a067493ba25d8c3
1 # This is the tag of the docker image used for the build jobs. If the
2 # image doesn't exist yet, the containers stage generates it.
4 # In order to generate a new image, one should generally change the tag.
5 # While removing the image from the registry would also work, that's not
6 # recommended except for ephemeral images during development: Replacing
7 # an image after a significant amount of time might pull in newer
8 # versions of gcc/clang or other packages, which might break the build
9 # with older commits using the same tag.
10 variables:
11   FDO_UPSTREAM_REPO: mesa/piglit
12   FDO_DISTRIBUTION_TAG: "2022-08-09-add-linting"
13   FDO_DISTRIBUTION_VERSION: bullseye-slim
14   WINDOWS_TAG: "2022-07-27-win2022"
15   WINDOWS_IMAGE: "$CI_REGISTRY_IMAGE/windows/x64_build:$WINDOWS_TAG"
16   WINDOWS_UPSTREAM_IMAGE: "$CI_REGISTRY/$UPSTREAM_REPO/windows/x64_build:$WINDOWS_TAG"
17   GIT_DEPTH: 100
19 include:
20   - project: 'freedesktop/ci-templates'
21     ref: 34f4ade99434043f88e164933f570301fd18b125
22     file: '/templates/debian.yml'
24 stages:
25   - container
26   - check
27   - build
28   - deploy
31 # When & how to run the CI
32 .ci-run-policy:
33   retry:
34     max: 2
35     when:
36       - runner_system_failure
37   # Cancel CI run if a newer commit is pushed to the same branch
38   interruptible: true
40 # CONTAINERS
42 debian:
43   stage: container
44   extends:
45     - .ci-run-policy
46     - .fdo.container-build@debian
47   variables:
48     GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image
49     FDO_DISTRIBUTION_EXEC: 'bash .gitlab-ci/debian-install.sh'
51 .use-debian:
52   extends:
53     - .ci-run-policy
54     - .fdo.distribution-image@debian
55   needs: [debian]
57 windows:
58   stage: container
59   extends:
60     - .ci-run-policy
61   variables:
62     GIT_STRATEGY: fetch # we do actually need the full repository though
63   timeout: 3h
64   tags:
65     - windows
66     - shell
67     - "2022"
68   script:
69     - .\.gitlab-ci\windows\container.ps1 $CI_REGISTRY $CI_REGISTRY_USER $CI_REGISTRY_PASSWORD $WINDOWS_IMAGE $WINDOWS_UPSTREAM_IMAGE
71 .use-windows:
72   extends:
73     - .ci-run-policy
74   tags:
75     - windows
76     - docker
77     - "2022"
78   needs: [windows]
79   image: $WINDOWS_IMAGE
81 # CHECK
82 linting:
83   stage: check
84   extends:
85     - .use-debian
86   script:
87     - codespell -f -S ".mypy_cache" -L "lod,LOD,inout,nd,ND,valu,VALU,tese,ba,te,nin"
88     - export CHECKPATH=framework/replay # restrict Python checks only on framework/replay for now
89     - flake8 --max-line-length=120 --show-source $CHECKPATH
90     - mypy --ignore-missing-imports --disallow-incomplete-defs $CHECKPATH
91     - pylint --fail-under=8.5 $CHECKPATH
94 # BUILD
96 # Use ccache transparently, and print stats before/after
97 .use-ccache:
98   variables:
99     CC: /usr/lib/ccache/gcc
100     CXX: /usr/lib/ccache/g++
101     CCACHE_COMPILERCHECK: content
102     CCACHE_DIR: /cache/piglit/ccache
103   before_script:
104     - export CCACHE_BASEDIR="$PWD"
105     - ccache --show-stats
106   after_script:
107     - ccache --show-stats
109 build-debian:
110   stage: build
111   extends:
112     - .use-debian
113     - .use-ccache
114   script:
115     - .gitlab-ci/build-debian.sh
116   artifacts:
117     when: on_failure
118     paths:
119       - CMakeCache.txt
120       - CMakeFiles/*.log
122 build-debian-mingw:
123   stage: build
124   extends:
125     - .use-debian
126     - .use-ccache
127   parallel:
128     matrix:
129       - TARGET: [mingw32, mingw64]
130   script:
131     - .gitlab-ci/build-mingw.sh ${TARGET}
132   artifacts:
133     paths:
134       - build/*/piglit-*.7z
136 build-windows:
137   stage: build
138   extends:
139     - .use-windows
140   script:
141     - cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=amd64 &&
142       cmake . -D CMAKE_BUILD_TYPE=Debug
143       -D PIGLIT_BUILD_CL_TESTS=off
144       -D GLUT_INCLUDE_DIR=C:\freeglut\include
145       -D GLUT_glut_LIBRARY_RELEASE=C:\freeglut\lib\x64\freeglut.lib
146       -D GLEXT_INCLUDE_DIR=C:\glext\
147       -D PIGLIT_BUILD_DMA_BUF_TESTS=off
148       -D PIGLIT_BUILD_GLES1_TESTS=off
149       -D PIGLIT_BUILD_GLES2_TESTS=off
150       -D PIGLIT_BUILD_GLX_TESTS=off
151       -D PIGLIT_BUILD_GL_TESTS=on
152       -D PIGLIT_BUILD_WGL_TESTS=on
153       -GNinja &&
154       ninja -j4"
156 py.test:
157   stage: build
158   extends:
159     - .use-debian
160   script:
161     - pytest-3 unittests/framework
163 tox:
164   image: python:${PY_MAJVER}.${PY_MINVER}
165   stage: build
166   extends:
167     - .ci-run-policy
168   before_script:
169     - pip install tox
170   script:
171     - tox -e "py${PY_MAJVER}${PY_MINVER}-{generator,noaccel,accel-nix,streams,functional}"
172   parallel:
173     matrix:
174       - PY_MAJVER: 3
175         PY_MINVER: [7, 8, 9, 10]
176   needs: []
178 pages:
179   stage: deploy
180   image: alpine
181   script:
182   - apk --no-cache add py3-pip python3
183   - pip install sphinx
184   - pip install Flask-Sphinx-Themes
185   - cd docs
186   - ./build-html.sh
187   - mv _build/html/ ../public/
188   artifacts:
189     paths:
190     - public
191   only:
192     refs:
193       - main
194     changes:
195       - docs/**