glib/.gitlab-ci
Simon McVittie d7601f7eed Incorporate some lint checks into meson test
This will make it easier and more obvious for developers to run them
locally: I'm sure I'm not the only developer who had assumed that
`.gitlab-ci/` is private to the CI environment and inappropriate (or
perhaps even destructive) to run on a developer/user system.

The lint checks are automatically skipped (with TAP SKIP syntax) if we
are not in a git checkout, or if git or the lint tool is missing. They
can also be disabled explicitly with `meson test --no-suite=lint`,
which downstream distributions will probably want to do.

By default, most lint checks are reported as an "expected failure"
(with TAP TODO syntax) rather than a hard failure, because they do not
indicate a functional problem with GLib and there is a tendency for
lint tools to introduce additional checks or become more strict over
time. Developers can override this by configuring with `-Dwerror=true`
(which also makes compiler warnings into fatal errors), or by running
the test suite like `LINT_WARNINGS_ARE_ERRORS=1 meson test --suite=lint`.

One exception to this is tests/check-missing-install-tag.py, which is
checking a functionally significant feature of our build system, and
seems like it is unlikely to have false positives: if that one fails,
it is reported as a hard failure.

run-style-check-diff.sh and run-check-todos.sh are not currently given
this treatment, because they require search-common-ancestor.sh, which
uses Gitlab-CI-specific information to find out which commits are in-scope
for checking.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-02-08 00:18:23 +00:00
..
alpine.Dockerfile ci: Re-add explicit Meson version to Alpine CI image 2023-12-12 11:27:03 +00:00
android-ndk.sh ci: Update to latest Android NDK 2022-05-11 10:52:19 +01:00
cache-subprojects.sh build: Move gvdb to a subproject 2022-06-16 10:12:07 +01:00
check-todos.py python: Reformat some files to keep style-check-diff happy 2020-12-12 18:40:57 +00:00
clang-format-diff.py ci: Move clang-format-diff.py into CI directory 2022-05-11 12:43:27 +01:00
coverage-docker.sh ci: Exclude copylibs and fuzz tests from code coverage 2022-11-10 14:56:34 +00:00
coverity-model.c ci: Add model file for Coverity 2020-09-08 10:34:54 +01:00
coverity.Dockerfile Revert "build: Bump Meson dependency to 0.64.0" 2022-11-24 12:10:07 +00:00
cross_file_android_arm64_31.txt ci: Update to latest Android NDK 2022-05-11 10:52:19 +01:00
cross_file_ios_example.txt ci: growing_stack should be true for android and ios 2020-05-29 02:44:44 +05:30
cross_file_mingw64.txt ci: Add -fstack-protector to mingw64 cross file 2021-10-13 10:44:23 +01:00
debian-stable.Dockerfile ci: Build with introspection enabled 2023-12-12 16:58:26 +00:00
fedora.Dockerfile build: Change default for -Dman-pages from disabled to auto 2023-12-21 16:13:03 +00:00
fixup-cov-paths.py CI: Re-enable code coverage reporting for MSYS2 builds 2020-10-01 14:07:14 +02:00
install-gitlab-cobertura-tools.sh ci: Install lcov-cobertura and cobertura-split script in coverage images 2022-09-15 03:12:08 +02:00
mingw.Dockerfile ci: Build with introspection enabled 2023-12-12 16:58:26 +00:00
README.md ci: Update docker image generation README 2022-12-31 05:13:10 +05:30
run-check-todos.sh Move common code for searching common ancestor in a dedicated script 2021-01-11 17:04:01 +01:00
run-docker.sh ci: Fix podman support in run-docker.sh 2022-12-31 05:13:10 +05:30
run-style-check-diff.sh ci: Remove unused variable from run-style-check-diff.sh 2023-11-28 23:45:22 +00:00
run-tests.sh Incorporate some lint checks into meson test 2024-02-08 00:18:23 +00:00
search-common-ancestor.sh ci: Improve style check script 2022-09-09 20:23:44 -04:00
show-execution-environment.sh ci: Include details of machine ID in CI output 2021-03-01 13:54:09 +00:00
test-msvc.bat Incorporate some lint checks into meson test 2024-02-08 00:18:23 +00:00
test-msys2.sh Install the packaging module on Windows 2023-12-05 09:10:33 -06:00
thorough-test-wrapper.sh build: Add thorough test setup 2024-01-18 17:22:09 +00:00

CI support stuff

Docker image

GitLab CI jobs run in a Docker image, defined here. To update that image (perhaps to install some more packages):

  1. Edit .gitlab-ci/*.Dockerfile with the changes you want
  2. Run .gitlab-ci/run-docker.sh build --base=debian-stable --base-version=1 to build the new image (bump the version from the latest listed for that base on https://gitlab.gnome.org/GNOME/glib/container_registry). If rebuilding the coverity.Dockerfile image, youll need to have access to Coverity Scan and will need to specify your project name and access token as the environment variables COVERITY_SCAN_PROJECT_NAME and COVERITY_SCAN_TOKEN.
  3. Run .gitlab-ci/run-docker.sh push --base=debian-stable --base-version=1 to upload the new image to the GNOME GitLab Docker registry
    • If this is the first time you're doing this, you'll need to log into the registry
    • If you use 2-factor authentication on your GNOME GitLab account, you'll need to create a personal access token and use that rather than your normal password — the token should have read_registry and write_registry permissions
  4. Edit .gitlab-ci.yml (in the root of this repository) to use your new image