https://gitlab.com/tezos/tezos
Raw File
Tip revision: 96c8b98a9d01171f790a546b7cdc459cbc2d5600 authored by Romain Bardou on 29 July 2021, 14:39:27 UTC
CI: run less jobs for latest-release-doc
Tip revision: 96c8b98
.gitlab-ci.yml
---

# General setup

# Basic configuration to guard against double-pipelines
workflow:
  rules:
    # This workflow entry does two things:
    # - it allows pipelines for push events (including force-push, push of fixup
    # commits, rebase, etc.)
    # - it 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 == "push"'
      variables:
        TZ_PIPELINE_KIND: "PUSH"
      when: always
    - if: '$CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS"'
      variables:
        TZ_PIPELINE_KIND: "SCHEDULE"
      when: always
    - when: never # default

variables:
  ## This value MUST be the same as `opam_repository_tag` in `scripts/version.sh`
  build_deps_image_version: 4f2882db0c98232c8c12eaa3ace975ef42dfc12c
  build_deps_image_name: registry.gitlab.com/tezos/opam-repository
  public_docker_image_name: docker.io/${CI_PROJECT_PATH}-
  GIT_STRATEGY: fetch
  GIT_DEPTH: "1"
  GET_SOURCES_ATTEMPTS: "2"
  ARTIFACT_DOWNLOAD_ATTEMPTS: "2"

# The "manual" stage exists to fix a UI problem that occurs when mixing
# manual and non-manual jobs.
stages:
  - build
  - sanity_ci
  - test
  - doc
  - packaging
  - build_release
  - publish_release
  - test_coverage
  - publish_coverage
  - manual

# Basic, specialised, minimal, orthogonal templates

# Some settings we want by default on all jobs
.default_settings_template:
  interruptible: 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__latest:
  image: docker:latest

# Rules template

# Rules for all the jobs that need to be run on development branches (typically
# those that have an MR, but also some experiments, etc.)
.rules_template__development:
  rules:
    - if: '$TZ_PIPELINE_KIND == "SCHEDULE"'
      when: never
    - if: '$CI_COMMIT_BRANCH == "master" && $CI_PROJECT_NAMESPACE == "tezos"'
      when: never
    - if: '$CI_COMMIT_BRANCH =~ /-release$/ && $CI_PROJECT_NAMESPACE == "tezos"'
      when: never
    - if: '$CI_COMMIT_TAG != null && $CI_PROJECT_NAMESPACE == "tezos"'
      when: never
    - if: '$CI_COMMIT_BRANCH =~ /-release-doc$/ && $CI_PROJECT_NAMESPACE == "tezos"'
      when: never
    - when: on_success

# Rules for all the jobs that are run only for the master branch and the like
# (tags, releases, etc.)
.rules_template__master_and_releases:
  rules:
    - if: '$TZ_PIPELINE_KIND == "SCHEDULE"'
      when: never
    - if: '$CI_COMMIT_TAG && $CI_PROJECT_NAMESPACE == "tezos"'
      when: on_success
    - if: '$CI_COMMIT_BRANCH =~ /-release$/ && $CI_PROJECT_NAMESPACE == "tezos"'
      when: on_success
    - if: '$CI_COMMIT_BRANCH == "master" && $CI_PROJECT_NAMESPACE == "tezos"'
      when: on_success
    - when: never

# Rules for all the jobs that are run only for the master branch
.rules_template__master:
  rules:
    - if: '$TZ_PIPELINE_KIND == "SCHEDULE"'
      when: never
    - if: '$CI_COMMIT_BRANCH == "master" && $CI_PROJECT_NAMESPACE == "tezos"'
      when: on_success
    - when: never

# Rules for all the jobs that are run only for the latest-release-doc branch
.rules_template__latest_release_doc:
  rules:
    - if: '$TZ_PIPELINE_KIND == "SCHEDULE"'
      when: never
    - if: '$CI_COMMIT_BRANCH == "latest-release-doc" && $CI_PROJECT_NAMESPACE == "tezos"'
      when: on_success
    - when: never

# Rules for specific topics: doc, opam, etc.
.rules_template__development_documentation:
  rules:
    - if: '$TZ_PIPELINE_KIND == "SCHEDULE" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS"'
      when: always
    - if: '$CI_COMMIT_TAG && $CI_PROJECT_NAMESPACE == "tezos"'
      when: never
    - if: '$CI_COMMIT_BRANCH =~ /-release$/ && $CI_PROJECT_NAMESPACE == "tezos"'
      when: never
    - if: '$CI_COMMIT_BRANCH == "master"'
      when: never
    - if: '$CI_COMMIT_BRANCH =~ /doc/'
      when: always
    - changes:
        - /docs
      when: always
    - when: never
.rules_template__development_opam:
  rules:
    - if: '$TZ_PIPELINE_KIND == "SCHEDULE" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS"'
      when: always
    - if: '$CI_COMMIT_TAG && $CI_PROJECT_NAMESPACE == "tezos"'
      when: never
    - if: '$CI_COMMIT_BRANCH =~ /-release$/ && $CI_PROJECT_NAMESPACE == "tezos"'
      when: never
    - if: '$CI_COMMIT_BRANCH =~ /-release-doc$/ && $CI_PROJECT_NAMESPACE == "tezos"'
      when: never
    - if: '$CI_COMMIT_BRANCH == "master"'
      when: always
    - if: '$CI_COMMIT_BRANCH =~ /opam/'
      when: always
    - changes:
        - /**/*.opam
        - /**/dune
        - /**/dune.inc
        - /**/*.dune.inc
        - /scripts/version.sh
        - /.gitlab-ci.yml
      when: always
    - when: never
.rules_template__development_coverage:
  rules:
    - if: '$TZ_PIPELINE_KIND == "SCHEDULE" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS"'
      when: always
    - when: never

.rules_template__extended_test_pipeline:
  rules:
    - if: '$TZ_PIPELINE_KIND == "SCHEDULE" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS"'
      when: always
    - when: never


# Actual jobs are defined in these included files

include:
  - .gitlab/ci/build.yml
  - .gitlab/ci/lints.yml
  - .gitlab/ci/unittest.yml
  - .gitlab/ci/integration.yml
  - .gitlab/ci/liquidity-baking-scripts-integrity.yml
  - .gitlab/ci/coq.yml
  - .gitlab/ci/tezt.yml
  - .gitlab/ci/doc.yml
  - .gitlab/ci/opam.yml
  - .gitlab/ci/publish.yml
  - .gitlab/ci/coverage.yml
  - .gitlab/ci/test-doc-scripts.yml
back to top