From 3044fabe4797328f225194263ae622a3afe6ec6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Trzci=C5=84ski?= <ayufan@ayufan.eu> Date: Thu, 27 Feb 2020 12:09:48 +0100 Subject: [PATCH] Use `workflow:rules:` for `.gitlab-ci.yml` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This adds a top-level `workflow:rules` to define a prescripted workflow for CI. We disable all other usage patterns for pipelines that are not MR, master, stable, and tags. Signed-off-by: Rémy Coutable <remy@rymai.me> --- .gitlab-ci.yml | 18 ++++++++++++++++++ doc/development/pipelines.md | 23 ++++++++++++++++++++--- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cf8551989cb09..f5cef674375ea 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -12,6 +12,24 @@ stages: - post-qa - pages +workflow: + rules: + # If `$FORCE_GITLAB_CI` is set, create a pipeline. + - if: '$FORCE_GITLAB_CI' + # For merge requests, create a pipeline. + - if: '$CI_MERGE_REQUEST_IID' + # For `master` branch, create a pipeline (this includes on schedules, pushes, merges, etc.). + - if: '$CI_COMMIT_BRANCH == "master"' + # For tags, create a pipeline. + - if: '$CI_COMMIT_TAG' + # If `$GITLAB_INTERNAL` isn't set, don't create a pipeline. + - if: '$GITLAB_INTERNAL == null' + when: never + # For stable, auto-deploy, and security branches, create a pipeline. + - if: '$CI_COMMIT_BRANCH =~ /^[\d-]+-stable(-ee)?$/' + - if: '$CI_COMMIT_BRANCH =~ /^\d+-\d+-auto-deploy-\d+$/' + - if: '$CI_COMMIT_BRANCH =~ /^security\//' + variables: RAILS_ENV: "test" NODE_ENV: "test" diff --git a/doc/development/pipelines.md b/doc/development/pipelines.md index 2c81c41360a3a..ec0e5df6a92d5 100644 --- a/doc/development/pipelines.md +++ b/doc/development/pipelines.md @@ -42,7 +42,7 @@ The default image is currently `registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-golang-1.12-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-postgresql-9.6-graphicsmagick-1.3.34`. It includes Ruby 2.6.5, Go 1.12, Git 2.24, Git LFS 2.9, Chrome 73, Node 12, Yarn 1.21, -PostgreSQL 9.6, and Graphics Magick 1.3.33. +PostgreSQL 9.6, and Graphics Magick 1.3.34. The images used in our pipelines are configured in the [`gitlab-org/gitlab-build-images`](https://gitlab.com/gitlab-org/gitlab-build-images) @@ -61,8 +61,8 @@ each pipeline includes default variables defined in ## Common job definitions Most of the jobs [extend from a few CI definitions](../ci/yaml/README.md#extends) -that are scoped to a single -[configuration parameter](../ci/yaml/README.md#configuration-parameters). +defined in [`.gitlab/ci/global.gitlab-ci.yml`](https://gitlab.com/gitlab-org/gitlab/blob/master/.gitlab/ci/global.gitlab-ci.yml) +that are scoped to a single [configuration parameter](../ci/yaml/README.md#configuration-parameters). | Job definitions | Description | |------------------|-------------| @@ -72,10 +72,27 @@ that are scoped to a single | `.default-cache` | Allows a job to use a default `cache` definition suitable for Ruby/Rails and frontend tasks. | | `.use-pg9` | Allows a job to use the `postgres:9.6.17` and `redis:alpine` services. | | `.use-pg10` | Allows a job to use the `postgres:10.12` and `redis:alpine` services. | +| `.use-pg11` | Allows a job to use the `postgres:11.6` and `redis:alpine` services. | | `.use-pg9-ee` | Same as `.use-pg9` but also use the `docker.elastic.co/elasticsearch/elasticsearch:6.4.2` services. | | `.use-pg10-ee` | Same as `.use-pg10` but also use the `docker.elastic.co/elasticsearch/elasticsearch:6.4.2` services. | +| `.use-pg11-ee` | Same as `.use-pg11` but also use the `docker.elastic.co/elasticsearch/elasticsearch:6.4.2` services. | | `.as-if-foss` | Simulate the FOSS project by setting the `FOSS_ONLY='1'` environment variable. | +## `workflow:rules` + +We're using the [`workflow:rules` keyword](../ci/yaml/README.md#workflowrules) to +define default rules to determine whether or not a pipeline is created. + +These rules are defined in <https://gitlab.com/gitlab-org/gitlab/blob/master/.gitlab-ci.yml> +and are as follows: + +1. If `$FORCE_GITLAB_CI` is set, create a pipeline. +1. For merge requests, create a pipeline. +1. For `master` branch, create a pipeline (this includes on schedules, pushes, merges, etc.). +1. For tags, create a pipeline. +1. If `$GITLAB_INTERNAL` isn't set, don't create a pipeline. + 1. For stable, auto-deploy, and security branches, create a pipeline. + ## `rules`, `if:` conditions and `changes:` patterns We're using the [`rules` keyword](../ci/yaml/README.md#rules) extensively. -- GitLab