.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
# TZ_SCHEDULE_KIND which must be set in the pipeline scheduling interface
# In either case it sets the TZ_PIPELINE_KIND variable to allow jobs to
# selectively run on some pipelines but not all.
# See https://docs.gitlab.com/ee/ci/yaml/README.html#workflow for additional
# details.
- if: '$CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS"'
variables:
TZ_PIPELINE_KIND: "SCHEDULE"
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
# 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
# The "manual" stage exists to fix a UI problem that occurs when mixing
# manual and non-manual jobs.
stages:
- sanity
- build
- test
- test_coverage
- packaging
- doc
- build_release
- publish_release
- manual
# All the jobs belonging to a stage X should be in
# .gitlab/ci/X.yml. The stage "manual" is an exception to this rule,
# as jobs of that stage are not logically related.
# If the configuration for stage X is long, it can be broken up in
# subfiles .gitlab/ci/X/a.yml, .gitlab/ci/X/b.yml, etc (see e.g. the
# stage test).
# Finally, templates shall not be defined in one stage file and used
# in another. That is, a template defined in test.yml shall not be
# used in doc.yml (but it's fine to use it in a subfile test/X.yml).
include:
- .gitlab/ci/templates.yml
# Actual jobs are defined in these included files
- .gitlab/ci/packaging.yml
- .gitlab/ci/opam-ci.yml
- .gitlab/ci/sanity.yml
- .gitlab/ci/build.yml
- .gitlab/ci/test/templates.yml
- .gitlab/ci/test/lints.yml
- .gitlab/ci/test/unit.yml
- .gitlab/ci/test/integration.yml
- .gitlab/ci/test/liquidity-baking-scripts-integrity.yml
- .gitlab/ci/test/tezt.yml
- .gitlab/ci/doc.yml
- .gitlab/ci/doc/test-scripts.yml
- .gitlab/ci/build_release.yml
- .gitlab/ci/publish_release.yml
# The job `unified_coverage` must have the same name on merge requests and the default branch
# /!\ Limitations of using rules with include:
# https://docs.gitlab.com/ee/ci/yaml/includes.html#use-variables-with-include
# Only run on merge requests that do not have the label `ci--no-coverage`
- local: .gitlab/ci/test_coverage.yml
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_LABELS !~ /(?:^|[,])ci--no-coverage(?:$|[,])/'
# Only run on default branch
- local: .gitlab/ci/test_coverage_default.yml
rules:
# Cannot use TEZOS_DEFAULT_NAMESPACE here, see limitations above
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'