1
0
Fork 0

ci: Use meson introspect to generate artifact path

We currently assume that the `CI_COMMIT_TAG` variable matches the
version component of the generated dist tarball.

That is usually correct, but sometimes errors happen and a wrong
tag is pushed, and the real release uses something like "46.0-real".

Account for that by building the artifact path from `meson introspect`
and exporting it as environment variable.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3775>
This commit is contained in:
Florian Müllner 2024-05-24 00:07:11 +02:00 committed by Marge Bot
parent 42c534a02f
commit bcfbc7fa17
2 changed files with 45 additions and 1 deletions

View file

@ -634,6 +634,27 @@ test-mutter-coverity:
paths:
- coverity
distinfo:
extends:
- .fdo.distribution-image@fedora
- .mutter.fedora@x86_64
- .build-mutter-base
- .test-setup
stage: deploy
needs:
- job: build-fedora-container@x86_64
artifacts: false
script:
- meson setup . build
- .gitlab-ci/export-artifact-path build > dist.env
artifacts:
reports:
dotenv: dist.env
paths:
- dist.env
rules:
- if: '$CI_COMMIT_TAG'
dist-mutter:
extends:
- .fdo.distribution-image@fedora
@ -673,10 +694,12 @@ dist-mutter:
dist-mutter-tarball:
extends: dist-mutter
needs:
- distinfo
artifacts:
expose_as: 'Get tarball here'
paths:
- build/meson-dist/$CI_PROJECT_NAME-$CI_COMMIT_TAG.tar.xz
- $TARBALL_ARTIFACT_PATH
rules:
- if: '$CI_COMMIT_TAG'

21
.gitlab-ci/export-artifact-path Executable file
View file

@ -0,0 +1,21 @@
#!/usr/bin/gjs -m
// SPDX-FileCopyrightText: 2024 Florian Müllner <fmuellner@gnome.org>
//
// SPDX-License-Identifier: GPL-2.0-or-later
import Gio from 'gi://Gio';
import {programArgs, programInvocationName, exit} from 'system';
const [buildDir] = programArgs;
if (!buildDir) {
printerr(`usage: ${programInvocationName} <build-dir>`);
exit(1);
}
const subprocess = Gio.Subprocess.new(
['meson', 'introspect', '--projectinfo', buildDir],
Gio.SubprocessFlags.STDOUT_PIPE);
const [, out] = subprocess.communicate_utf8(null, null);
const {descriptive_name, version} = JSON.parse(out);
print(`TARBALL_ARTIFACT_PATH=${buildDir}/meson-dist/${descriptive_name}-${version}.tar.xz`);