mirror of
https://gitlab.gnome.org/GNOME/libsecret.git
synced 2025-01-31 08:28:34 +00:00
Merge branch 'nielsdg/use-fdo-ci-template' into 'main'
ci: Use fdo-ci-templates for building Dockers See merge request GNOME/libsecret!155
This commit is contained in:
commit
13636affee
105
.gitlab-ci.yml
105
.gitlab-ci.yml
@ -1,20 +1,90 @@
|
|||||||
include:
|
include:
|
||||||
|
- remote: 'https://gitlab.gnome.org/Infrastructure/freedesktop-ci-templates/-/raw/145b1bc7ef1702d2bd71584010d7113c6786a506/templates/fedora.yml'
|
||||||
- component: gitlab.gnome.org/GNOME/citemplates/release-service@master
|
- component: gitlab.gnome.org/GNOME/citemplates/release-service@master
|
||||||
inputs:
|
inputs:
|
||||||
dist-job-name: "build-release-tarball"
|
dist-job-name: "build-release-tarball"
|
||||||
tarball-artifact-path: "${TARBALL_ARTIFACT_PATH}"
|
tarball-artifact-path: "${TARBALL_ARTIFACT_PATH}"
|
||||||
|
|
||||||
image: registry.gitlab.gnome.org/gnome/libsecret/master:v6
|
|
||||||
|
|
||||||
stages:
|
stages:
|
||||||
|
- prepare
|
||||||
- build
|
- build
|
||||||
- deploy
|
- deploy
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
|
FDO_UPSTREAM_REPO: gnome/libsecret
|
||||||
TARBALL_ARTIFACT_PATH: "_build/meson-dist/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.tar.xz"
|
TARBALL_ARTIFACT_PATH: "_build/meson-dist/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.tar.xz"
|
||||||
CPPCHECK_OPTIONS: "--enable=warning --enable=style --enable=performance --enable=portability --std=c99 --template='{id}:{file}:{line},{severity},{message}'"
|
CPPCHECK_OPTIONS: "--enable=warning --enable=style --enable=performance --enable=portability --std=c99 --template='{id}:{file}:{line},{severity},{message}'"
|
||||||
|
|
||||||
|
.fedora.container.common:
|
||||||
|
variables:
|
||||||
|
# When branching a stable release, change 'main' to the
|
||||||
|
# release branch name to ensure that a new image will
|
||||||
|
# be created, tailored for the stable branch.
|
||||||
|
BRANCH_NAME: 'main'
|
||||||
|
CONTAINER_TAG: '2025-01-15.0'
|
||||||
|
FEDORA_VERSION: latest
|
||||||
|
# Derive FDO variables from this automatically.
|
||||||
|
# DO NOT edit, instead change the variables above
|
||||||
|
FDO_REPO_SUFFIX: '${BRANCH_NAME}'
|
||||||
|
FDO_DISTRIBUTION_TAG: '${CONTAINER_TAG}-fedora-${FEDORA_VERSION}'
|
||||||
|
FDO_DISTRIBUTION_VERSION: '${FEDORA_VERSION}'
|
||||||
|
|
||||||
|
#############################################
|
||||||
|
# Create CI Docker Images #
|
||||||
|
#############################################
|
||||||
|
|
||||||
|
# See also https://gitlab.gnome.org/Infrastructure/freedesktop-ci-templates
|
||||||
|
build.container.fedora@x86_64:
|
||||||
|
extends:
|
||||||
|
- '.fdo.container-build@fedora'
|
||||||
|
- '.fedora.container.common'
|
||||||
|
stage: prepare
|
||||||
|
variables:
|
||||||
|
# no need to pull the whole tree for rebuilding the image
|
||||||
|
GIT_STRATEGY: none
|
||||||
|
# Expiry sets fdo.expires on the image
|
||||||
|
FDO_EXPIRES_AFTER: 8w
|
||||||
|
FDO_DISTRIBUTION_PACKAGES: >-
|
||||||
|
clang-analyzer
|
||||||
|
cppcheck
|
||||||
|
dbus-x11
|
||||||
|
diffutils
|
||||||
|
docbook-style-xsl
|
||||||
|
gettext
|
||||||
|
gi-docgen
|
||||||
|
git
|
||||||
|
gjs
|
||||||
|
glib2-devel
|
||||||
|
gnutls-devel
|
||||||
|
gobject-introspection-devel
|
||||||
|
lcov
|
||||||
|
libasan
|
||||||
|
libgcrypt-devel
|
||||||
|
libpamtest-devel
|
||||||
|
libubsan
|
||||||
|
libxslt
|
||||||
|
meson
|
||||||
|
pam-devel
|
||||||
|
pam_wrapper
|
||||||
|
python3-dbus
|
||||||
|
python3-gobject
|
||||||
|
redhat-rpm-config
|
||||||
|
swtpm
|
||||||
|
swtpm-tools
|
||||||
|
tpm2-abrmd
|
||||||
|
tpm2-tss-devel
|
||||||
|
vala
|
||||||
|
valgrind-devel
|
||||||
|
|
||||||
|
|
||||||
|
#############################################
|
||||||
|
# STAGE: BUILD #
|
||||||
|
#############################################
|
||||||
|
|
||||||
.build:
|
.build:
|
||||||
|
extends:
|
||||||
|
- '.fdo.suffixed-image@fedora'
|
||||||
|
- '.fedora.container.common'
|
||||||
parallel:
|
parallel:
|
||||||
matrix:
|
matrix:
|
||||||
- CRYPTO: libgcrypt
|
- CRYPTO: libgcrypt
|
||||||
@ -127,18 +197,10 @@ fedora:coverage:
|
|||||||
# https://github.com/linux-test-project/lcov/issues/58
|
# https://github.com/linux-test-project/lcov/issues/58
|
||||||
allow_failure: true
|
allow_failure: true
|
||||||
|
|
||||||
build-release-tarball:
|
|
||||||
stage: deploy
|
|
||||||
script:
|
|
||||||
- meson setup _build
|
|
||||||
- meson dist -C _build
|
|
||||||
artifacts:
|
|
||||||
paths:
|
|
||||||
- $TARBALL_ARTIFACT_PATH
|
|
||||||
rules:
|
|
||||||
- if: $CI_COMMIT_REF_PROTECTED
|
|
||||||
|
|
||||||
reference:
|
reference:
|
||||||
|
extends:
|
||||||
|
- '.fdo.suffixed-image@fedora'
|
||||||
|
- '.fedora.container.common'
|
||||||
stage: build
|
stage: build
|
||||||
variables:
|
variables:
|
||||||
MESON_ARGS: >-
|
MESON_ARGS: >-
|
||||||
@ -153,6 +215,23 @@ reference:
|
|||||||
paths:
|
paths:
|
||||||
- _reference
|
- _reference
|
||||||
|
|
||||||
|
|
||||||
|
#############################################
|
||||||
|
# STAGE: DEPLOY #
|
||||||
|
#############################################
|
||||||
|
|
||||||
|
build-release-tarball:
|
||||||
|
extends:
|
||||||
|
- '.fdo.suffixed-image@fedora'
|
||||||
|
- '.fedora.container.common'
|
||||||
|
stage: deploy
|
||||||
|
script:
|
||||||
|
- meson setup _build
|
||||||
|
- meson dist -C _build
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- $TARBALL_ARTIFACT_PATH
|
||||||
|
|
||||||
pages:
|
pages:
|
||||||
stage: deploy
|
stage: deploy
|
||||||
script:
|
script:
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
# 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/$BRANCH.Dockerfile` with the changes you want
|
|
||||||
1. Run `.gitlab-ci/run-docker.sh build --branch=$BRANCH --version=1` to build
|
|
||||||
the new image (bump the version from the latest listed for the main branch)
|
|
||||||
https://gitlab.gnome.org/GNOME/libsecret/container_registry). If `--branch`
|
|
||||||
is not specified, it will use the default branch
|
|
||||||
1. Run `.gitlab-ci/run-docker.sh push --branch=$BRANCH --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][pat] and use that rather than
|
|
||||||
your normal password — the token should have `read_registry` and
|
|
||||||
`write_registry` permissions
|
|
||||||
1. Edit `.gitlab-ci.yml` (in the root of this repository) to use your new
|
|
||||||
image
|
|
||||||
|
|
||||||
[pat]: https://gitlab.gnome.org/-/profile/personal_access_tokens
|
|
||||||
[cs]: https://scan.coverity.com/
|
|
@ -1,42 +0,0 @@
|
|||||||
FROM fedora:39
|
|
||||||
|
|
||||||
RUN dnf update -y \
|
|
||||||
&& dnf install -y \
|
|
||||||
clang-analyzer \
|
|
||||||
cppcheck \
|
|
||||||
dbus-x11 \
|
|
||||||
docbook-style-xsl \
|
|
||||||
gettext \
|
|
||||||
gi-docgen \
|
|
||||||
git \
|
|
||||||
glib2-devel \
|
|
||||||
gnutls-devel \
|
|
||||||
gobject-introspection-devel \
|
|
||||||
lcov \
|
|
||||||
libasan \
|
|
||||||
libubsan \
|
|
||||||
libgcrypt-devel \
|
|
||||||
libxslt \
|
|
||||||
meson \
|
|
||||||
python3-dbus \
|
|
||||||
python3-gobject \
|
|
||||||
redhat-rpm-config \
|
|
||||||
swtpm \
|
|
||||||
swtpm-tools \
|
|
||||||
tpm2-abrmd \
|
|
||||||
tpm2-tss-devel \
|
|
||||||
vala \
|
|
||||||
valgrind-devel \
|
|
||||||
pam-devel \
|
|
||||||
libpamtest-devel \
|
|
||||||
pam_wrapper \
|
|
||||||
&& dnf clean all
|
|
||||||
|
|
||||||
ARG HOST_USER_ID=5555
|
|
||||||
ENV HOST_USER_ID ${HOST_USER_ID}
|
|
||||||
RUN useradd -u $HOST_USER_ID -ms /bin/bash -p password user
|
|
||||||
|
|
||||||
USER user
|
|
||||||
WORKDIR /home/user
|
|
||||||
|
|
||||||
ENV LANG C.UTF-8
|
|
@ -1,135 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
read_arg() {
|
|
||||||
# $1 = arg name
|
|
||||||
# $2 = arg value
|
|
||||||
# $3 = arg parameter
|
|
||||||
local rematch='^[^=]*=(.*)$'
|
|
||||||
if [[ $2 =~ $rematch ]]; then
|
|
||||||
read -r "$1" <<< "${BASH_REMATCH[1]}"
|
|
||||||
else
|
|
||||||
read -r "$1" <<< "$3"
|
|
||||||
# There is no way to shift our callers args, so
|
|
||||||
# return 1 to indicate they should do it instead.
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
if type -p podman &>/dev/null; then
|
|
||||||
# Using podman
|
|
||||||
DOCKER_CMD="podman"
|
|
||||||
# Docker is actually implemented by podman, and its OCI output
|
|
||||||
# is incompatible with some of the dockerd instances on GitLab
|
|
||||||
# CI runners.
|
|
||||||
export BUILDAH_FORMAT=docker
|
|
||||||
elif getent group docker | grep -q "\b${USER}\b"; then
|
|
||||||
DOCKER_CMD="docker"
|
|
||||||
else
|
|
||||||
DOCKER_CMD="sudo docker"
|
|
||||||
fi
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
branch=""
|
|
||||||
version=""
|
|
||||||
build=0
|
|
||||||
run=0
|
|
||||||
push=0
|
|
||||||
list=0
|
|
||||||
print_help=0
|
|
||||||
no_login=0
|
|
||||||
|
|
||||||
while (($# > 0)); do
|
|
||||||
case "${1%%=*}" in
|
|
||||||
build) build=1;;
|
|
||||||
run) run=1;;
|
|
||||||
push) push=1;;
|
|
||||||
list) list=1;;
|
|
||||||
help) print_help=1;;
|
|
||||||
--branch|-b) read_arg branch "$@" || shift;;
|
|
||||||
--version|-v) read_arg version "$@" || shift;;
|
|
||||||
--no-login) no_login=1;;
|
|
||||||
*) echo -e "\\e[1;31mERROR\\e[0m: Unknown option '$1'"; exit 1;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ $print_help == 1 ]; then
|
|
||||||
echo "$0 - Build and run Docker images"
|
|
||||||
echo ""
|
|
||||||
echo "Usage: $0 <command> [options] [basename]"
|
|
||||||
echo ""
|
|
||||||
echo "Available commands"
|
|
||||||
echo ""
|
|
||||||
echo " build - Build Docker image"
|
|
||||||
echo " run - Run Docker image"
|
|
||||||
echo " push - Push Docker image to the registry"
|
|
||||||
echo " list - List available images"
|
|
||||||
echo " help - This help message"
|
|
||||||
echo ""
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
cd "$(dirname "$0")"
|
|
||||||
|
|
||||||
if [ $list == 1 ]; then
|
|
||||||
echo "Available Docker images:"
|
|
||||||
for f in *.Dockerfile; do
|
|
||||||
filename=$( basename -- "$f" )
|
|
||||||
basename="${filename%.*}"
|
|
||||||
|
|
||||||
echo -e " \\e[1;39m$basename\\e[0m"
|
|
||||||
done
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# We really need to know the branch name after this point
|
|
||||||
if [[ -z "${branch}" ]]; then
|
|
||||||
branch=master
|
|
||||||
fi
|
|
||||||
|
|
||||||
DOCKERFILE="${branch}.Dockerfile"
|
|
||||||
if [ ! -f "$DOCKERFILE" ]; then
|
|
||||||
echo -e "\\e[1;31mERROR\\e[0m: '$DOCKERFILE' not found"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "${version}" ]; then
|
|
||||||
version="latest"
|
|
||||||
else
|
|
||||||
version="v$version"
|
|
||||||
fi
|
|
||||||
|
|
||||||
TAG="registry.gitlab.gnome.org/gnome/libsecret/${branch}:${version}"
|
|
||||||
|
|
||||||
if [ $build == 1 ]; then
|
|
||||||
echo -e "\\e[1;32mBUILDING\\e[0m: ${TAG} for branch '${branch}'"
|
|
||||||
$DOCKER_CMD build \
|
|
||||||
--build-arg HOST_USER_ID="$UID" \
|
|
||||||
--tag "${TAG}" \
|
|
||||||
--file "$DOCKERFILE" .
|
|
||||||
exit $?
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $push == 1 ]; then
|
|
||||||
echo -e "\\e[1;32mPUSHING\\e[0m: ${TAG} for branch '${branch}'"
|
|
||||||
|
|
||||||
if [ $no_login == 0 ]; then
|
|
||||||
$DOCKER_CMD login registry.gitlab.gnome.org
|
|
||||||
fi
|
|
||||||
|
|
||||||
$DOCKER_CMD push "${TAG}"
|
|
||||||
exit $?
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $run == 1 ]; then
|
|
||||||
echo -e "\\e[1;32mRUNNING\\e[0m: ${TAG} for branch '${branch}'"
|
|
||||||
$DOCKER_CMD run \
|
|
||||||
--rm \
|
|
||||||
--volume "$(pwd)/..:/home/user/app" \
|
|
||||||
--workdir "/home/user/app" \
|
|
||||||
--tty \
|
|
||||||
--interactive "${TAG}" \
|
|
||||||
bash
|
|
||||||
exit $?
|
|
||||||
fi
|
|
@ -314,11 +314,11 @@ if get_option('introspection')
|
|||||||
valatests = [
|
valatests = [
|
||||||
{
|
{
|
||||||
'name': 'test-vala-lang',
|
'name': 'test-vala-lang',
|
||||||
'cflags': [],
|
'cflags': [ '-Wno-unused-but-set-variable' ],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'name': 'test-vala-unstable',
|
'name': 'test-vala-unstable',
|
||||||
'cflags': [ '-DSECRET_WITH_UNSTABLE' ],
|
'cflags': [ '-DSECRET_WITH_UNSTABLE', '-DSECRET_API_SUBJECT_TO_CHANGE' ],
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user