Revision d4f4b878fbae24e499c518b18d0d199a30721207 authored by Ole Krüger on 26 November 2022, 11:26:21 UTC, committed by Emma Turner on 15 December 2022, 10:55:08 UTC
1 parent 0b59a11
.gitlab-ci.yml
---
# General setup
default:
interruptible: true
# Basic configuration to guard against double-pipelines
workflow:
rules:
# This workflow entry allows pipelines for schedules events in which case it checks the
# CI_PIPELINE_SOURCE which is automatically set by Gitlab.
# See https://docs.gitlab.com/ee/ci/yaml/README.html#workflow for additional
# details.
- if: '$CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS"'
when: always
# Switch between branch pipelines and merge request pipelines.
# https://docs.gitlab.com/13.12/ee/ci/yaml/README.html#switch-between-branch-pipelines-and-merge-request-pipelines
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS'
when: never
# No branch pipelines outside of the tezos namespace, except for testing releases.
# The goal is to avoid triggering two pipelines for each MR:
# - one when pushing the branch, before the MR exists;
# - and one when the MR is created.
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "latest-release-test" && $CI_PROJECT_NAMESPACE != "tezos"'
when: never
# This workflow entry allows pipelines for push events (including force-push, push of fixup commits, rebase, etc.)
- if: '$CI_PIPELINE_SOURCE == "push"'
when: always
- when: never # default
variables:
# /!\ CI_REGISTRY is overriden to use a private Docker registry mirror in AWS ECR
# in GitLab namespaces `nomadic-labs` and `tezos`
## This value MUST be the same as `opam_repository_tag` in `scripts/version.sh`
build_deps_image_version: 783b85479ac06fedfc6aa705340851fa8fa30074
build_deps_image_name: "${CI_REGISTRY}/tezos/opam-repository"
GIT_STRATEGY: fetch
GIT_DEPTH: "1"
GET_SOURCES_ATTEMPTS: "2"
ARTIFACT_DOWNLOAD_ATTEMPTS: "2"
# Sets the number of tries before failing opam downloads.
OPAMRETRIES: "5"
# An addition to working around a bug in gitlab-runner's default
# unzipping implementation (https://gitlab.com/gitlab-org/gitlab-runner/-/issues/27496),
# this setting cuts cache creation time.
FF_USE_FASTZIP: "true"
# Image templates
.image_template__runtime_build_test_dependencies_template:
image: ${build_deps_image_name}:runtime-build-test-dependencies--${build_deps_image_version}
.image_template__runtime_build_dependencies_template:
image: ${build_deps_image_name}:runtime-build-dependencies--${build_deps_image_version}
.image_template__runtime_prebuild_dependencies_template:
image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version}
# Match GitLab executors version and directly use the Docker socket
# The Docker daemon is already configured, experimental features are enabled
# The following environment variables are already set:
# - BUILDKIT_PROGRESS
# - DOCKER_DRIVER
# - DOCKER_VERSION
# https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#use-docker-socket-binding
.image_template__docker:
# https://gitlab.com/tezos/docker-images/ci-docker
image: "${CI_REGISTRY}/tezos/docker-images/ci-docker:v1.6.0"
.image_template__alpine:
image: alpine:3.15
# The "manual" stage exists to fix a UI problem that occurs when mixing
# manual and non-manual jobs.
stages:
- trigger
- sanity
- build
- test
- test_coverage
- packaging
- doc
- prepare_release
- publish_release_gitlab
- publish_release
- manual
# Trigger
#
# §1: The purpose of this job is to launch the CI manually in certain cases.
# The objective is not to run computing when it is not
# necessary and the decision to do so belongs to the developer
#
# §2: Gitlab CI needs at least one job definition, otherwise we're stuck with
# this error: 'Jobs config should contain at least one visible job'
trigger:
extends:
- .image_template__runtime_build_test_dependencies_template
stage: trigger
rules:
- if: '($CI_PIPELINE_SOURCE == "merge_request_event") && ($CI_PROJECT_NAMESPACE == "tezos") && ($CI_MERGE_REQUEST_ASSIGNEES !~ /nomadic-margebot/)'
when: manual
- when: always
allow_failure: false
timeout: "10m"
script:
- echo 'Trigger pipeline 🤠'
include:
# Common templates
- local: .gitlab/ci/jobs/shared/templates.yml
# Before merging
- local: .gitlab/ci/pipelines/before_merging.yml
rules:
- if: '($CI_PIPELINE_SOURCE == "merge_request_event") && ($CI_PROJECT_NAMESPACE == "tezos")'
# Latest release and test latest release
- local: .gitlab/ci/pipelines/latest_release.yml
rules:
- if: '($CI_COMMIT_BRANCH == "latest-release") && ($CI_PROJECT_NAMESPACE == "tezos")'
# Test latest release
- local: .gitlab/ci/pipelines/latest_release_test.yml
rules:
- if: '($CI_COMMIT_BRANCH == "latest-release-test") && ($CI_PROJECT_NAMESPACE != "tezos")'
# Master branch
- local: .gitlab/ci/pipelines/master_branch.yml
rules:
- if: '($CI_PROJECT_NAMESPACE == "tezos") && ($CI_COMMIT_BRANCH == "master")'
# Release tag
- local: .gitlab/ci/pipelines/release_tag.yml
rules:
- if: '($CI_COMMIT_TAG =~ /^v\d+\.\d+(?:\-rc\d+)?$/) && ($CI_PROJECT_NAMESPACE == "tezos")'
# Test release tag
- local: .gitlab/ci/pipelines/release_tag_test.yml
rules:
- if: '($CI_COMMIT_TAG =~ /^v\d+\.\d+(?:\-rc\d+)?$/) && ($CI_PROJECT_NAMESPACE != "tezos")'
# Scheduled pipeline for extended tests
- local: .gitlab/ci/pipelines/schedule_extended_test.yml
rules:
- if: '($CI_PIPELINE_SOURCE == "schedule") && ($TZ_SCHEDULE_KIND == "EXTENDED_TESTS")'
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...