mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-03-03 05:30:40 +01:00
ci-templates only supported alpine:latest, but support for any other version has been introduced. Use it so our Alpine pipelines stop failing. (cherry picked from commit9354fabaa8) (cherry picked from commit2035048449) (cherry picked from commitfe5a09b1ad) (cherry picked from commit3d80f73b3c) (cherry picked from commitd73a214876)
257 lines
8.4 KiB
YAML
257 lines
8.4 KiB
YAML
# vim: set expandtab shiftwidth=2 tabstop=8 textwidth=0 filetype=yaml:
|
|
|
|
{# You're looking at the template here, so you can ignore the below
|
|
warning. This is the right file to edit #}
|
|
########################################
|
|
# #
|
|
# THIS FILE IS GENERATED, DO NOT EDIT #
|
|
# Edit .gitlab-ci/ci.template instead #
|
|
# #
|
|
# Regenerate with:
|
|
# TEMPLATE_SHA="$(sed -n 's/^.templates_sha: *\&template_sha *\([0-9a-f]\+\)$/\1/p' ./.gitlab-ci/ci.template)"
|
|
# pip3 install "git+http://gitlab.freedesktop.org/freedesktop/ci-templates@$TEMPLATE_SHA"
|
|
# ci-fairy generate-template
|
|
#
|
|
########################################
|
|
|
|
|
|
# see https://docs.gitlab.com/ee/ci/yaml/#includefile
|
|
.templates_sha: &template_sha 593a0a5fe35a523a646a7efae5471c9759b8fba3
|
|
|
|
include:
|
|
{% for distro in distributions|sort(attribute="name") %}
|
|
# {{ distro.name.capitalize() }} container builder template
|
|
- project: 'freedesktop/ci-templates'
|
|
ref: *template_sha
|
|
file: '/templates/{{distro.name}}.yml'
|
|
{% endfor %}
|
|
|
|
stages:
|
|
- prep
|
|
- test
|
|
- deploy
|
|
- triage
|
|
- container_clean
|
|
|
|
variables:
|
|
FDO_UPSTREAM_REPO: NetworkManager/NetworkManager
|
|
GIT_DEPTH: 1
|
|
# These tags should be updated each time the list of packages is updated
|
|
# changing these will force rebuilding the associated image
|
|
# Note: these tags have no meaning and are not tied to a particular NM version
|
|
#
|
|
# This is done by running `ci-fairy generate-template` and possibly bumping
|
|
# ".default_tag".
|
|
{% for distro in distributions %}
|
|
{{"%-13s"| format(distro.name.upper() + '_TAG:')}}'{{distro.tag}}-{{
|
|
(ci_fairy.hashfiles('./.gitlab-ci/config.yml',
|
|
'./.gitlab-ci/ci.template',
|
|
'./.gitlab-ci/' + distro.base_type + '-install.sh',
|
|
'./contrib/' + distro.base_type + '/REQUIRED_PACKAGES'))[0:12]
|
|
}}'
|
|
{% endfor %}
|
|
|
|
{% for distro in distributions %}
|
|
{{"%-13s"| format(distro.name.upper() + '_EXEC:')}}'bash .gitlab-ci/{{distro.base_type}}-install.sh'
|
|
{% endfor %}
|
|
|
|
.nm_artifacts:
|
|
variables:
|
|
NM_BUILD_TARBALL: 1
|
|
artifacts:
|
|
expire_in: 5 days
|
|
when: always
|
|
paths:
|
|
- docs-html
|
|
- NetworkManager-1*.tar.xz
|
|
- NetworkManager-1*.src.rpm
|
|
- nm-test.log
|
|
|
|
.nm_artifacts_debug:
|
|
artifacts:
|
|
expire_in: 5 days
|
|
when: always
|
|
paths:
|
|
- nm-test.log
|
|
|
|
#################################################################
|
|
# #
|
|
# containers stage #
|
|
# #
|
|
#################################################################
|
|
|
|
# Build a container for each distribution + version. The ci-templates
|
|
# will re-use the containers if the tag doesn't change.
|
|
{% for distro in distributions %}
|
|
{% for version in distro.versions %}
|
|
|
|
{{distro.name}}:{{version}}@container-prep:
|
|
extends:
|
|
- .fdo.container-build@{{distro.name}}
|
|
stage: prep
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
FDO_DISTRIBUTION_VERSION: '{{version}}'
|
|
FDO_DISTRIBUTION_TAG: ${{distro.name.upper()}}_TAG
|
|
FDO_DISTRIBUTION_EXEC: ${{distro.name.upper()}}_EXEC
|
|
{% endfor %}
|
|
{% endfor %}
|
|
|
|
#################################################################
|
|
# #
|
|
# container clean stage #
|
|
# run during the clean stage #
|
|
# #
|
|
#################################################################
|
|
|
|
#
|
|
# This stage will look for the container images we currently have in
|
|
# the registry and will remove any that are not tagged with the provided
|
|
# $container_image:$tag
|
|
#
|
|
# This job only runs for a scheduled pipeline.
|
|
#
|
|
# Go to your Profile, Settings, Access Tokens
|
|
# Create a personal token with 'api' scope, copy the value.
|
|
# Go to CI/CD, Schedules, schedule a monthly job.
|
|
# Define a variable of type File named AUTHFILE. Content is that token
|
|
# value.
|
|
.container-clean:
|
|
stage: container_clean
|
|
image: golang:alpine
|
|
before_script:
|
|
- apk add python3 py-pip git
|
|
- pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates
|
|
script:
|
|
- ci-fairy -v --authfile $AUTHFILE delete-image
|
|
--repository $FDO_DISTRIBUTION_NAME/$FDO_DISTRIBUTION_VERSION
|
|
--exclude-tag $FDO_DISTRIBUTION_TAG
|
|
dependencies: []
|
|
allow_failure: true
|
|
only:
|
|
- schedules
|
|
|
|
{% for distro in distributions %}
|
|
{% for version in distro.versions %}
|
|
{{distro.name}}:{{version}}@container-clean:
|
|
extends:
|
|
- .container-clean
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/{{distro.name}}/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
|
|
FDO_DISTRIBUTION_VERSION: '{{version}}'
|
|
FDO_DISTRIBUTION_TAG: ${{distro.name.upper()}}_TAG
|
|
|
|
{% endfor %}
|
|
{% endfor %}
|
|
|
|
#################################################################
|
|
# #
|
|
# build stage #
|
|
# #
|
|
#################################################################
|
|
|
|
.build@template:
|
|
stage: test
|
|
script:
|
|
- env
|
|
- r=0
|
|
- .gitlab-ci/run-test.sh 2>&1 | tee /tmp/nm-test.log || r=$?
|
|
- mv /tmp/nm-test.log .
|
|
- exit $r
|
|
dependencies: []
|
|
|
|
|
|
#################################################################
|
|
# #
|
|
# test stage #
|
|
# #
|
|
#################################################################
|
|
|
|
{% for distro in distributions %}
|
|
{% for version in distro.versions %}
|
|
|
|
t_{{distro.name}}:{{version}}:
|
|
extends:
|
|
- .build@template
|
|
- .fdo.distribution-image@{{distro.name}}
|
|
{% if distro.name == pages_build.name and
|
|
version == pages_build.version %}
|
|
- .nm_artifacts
|
|
{% else %}
|
|
- .nm_artifacts_debug
|
|
{% endif %}
|
|
variables:
|
|
FDO_DISTRIBUTION_VERSION: '{{version}}'
|
|
FDO_DISTRIBUTION_TAG: ${{distro.name.upper()}}_TAG
|
|
{# Where we have extra_variables defined, add them to the list #}
|
|
{% if distro.build is defined and distro.build.extra_variables is defined %}
|
|
{% for var in distro.build.extra_variables %}
|
|
{{var}}
|
|
{% endfor %}
|
|
{% endif %}
|
|
needs:
|
|
- "{{distro.name}}:{{version}}@container-prep"
|
|
{% if not version in distro.get('always', []) and (distro.name != pages_build.name or version != pages_build.version) %}
|
|
when: manual
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endfor %}
|
|
|
|
#################################################################
|
|
# #
|
|
# specific jobs #
|
|
# #
|
|
#################################################################
|
|
|
|
check-patch:
|
|
extends:
|
|
- .fdo.distribution-image@{{pages_build.name}}
|
|
variables:
|
|
FDO_DISTRIBUTION_VERSION: '{{pages_build.version}}'
|
|
FDO_DISTRIBUTION_TAG: ${{pages_build.name.upper()}}_TAG
|
|
needs:
|
|
- "{{pages_build.name}}:{{pages_build.version}}@container-prep"
|
|
stage: test
|
|
script:
|
|
- date '+%Y%m%d-%H%M%S'; NM_CHECKPATCH_FETCH_UPSTREAM=1 contrib/scripts/checkpatch-feature-branch.sh
|
|
allow_failure: true
|
|
|
|
check-tree:
|
|
extends:
|
|
- .fdo.distribution-image@{{pages_build.name}}
|
|
variables:
|
|
FDO_DISTRIBUTION_VERSION: '{{pages_build.version}}'
|
|
FDO_DISTRIBUTION_TAG: ${{pages_build.name.upper()}}_TAG
|
|
needs:
|
|
- "{{pages_build.name}}:{{pages_build.version}}@container-prep"
|
|
stage: test
|
|
script:
|
|
- date '+%Y%m%d-%H%M%S'; contrib/scripts/nm-python-black-format.sh --check
|
|
- date '+%Y%m%d-%H%M%S'; git ls-files -z -- 'po/*.po' | xargs -0 -n1 msgfmt -vc
|
|
- date '+%Y%m%d-%H%M%S'; contrib/scripts/nm-code-format.sh -n
|
|
- date '+%Y%m%d-%H%M%S'; ci-fairy generate-template && git diff --exit-code
|
|
|
|
pages:
|
|
stage: deploy
|
|
script:
|
|
- mv docs-html public
|
|
artifacts:
|
|
expire_in: 20 days
|
|
paths:
|
|
- public
|
|
only:
|
|
- main
|
|
dependencies:
|
|
- t_{{pages_build.name}}:{{pages_build.version}}
|
|
needs:
|
|
- t_{{pages_build.name}}:{{pages_build.version}}
|
|
|
|
triage:issues:
|
|
stage: triage
|
|
image: ruby:2.7
|
|
script:
|
|
- gem install gitlab-triage
|
|
- gitlab-triage -d --token $API_TOKEN --source-id $SOURCE_ID
|
|
only:
|
|
- schedules
|