From ce77cb1735ebfa99d816f19a189f1ba008589d59 Mon Sep 17 00:00:00 2001 From: Alexander Samusev <41779041+alvicsam@users.noreply.github.com> Date: Wed, 18 May 2022 13:14:25 +0200 Subject: [PATCH] [ci] Adjust job order in pipeline test stage with Gitlab DAG (#11442) * [Do Not Merge] Test gitlab DAG in pipeline * add jobs for pipeline cancel * add check-tracing to cancel-pipeline --- substrate/.gitlab-ci.yml | 26 +++++++++++++++++ substrate/scripts/ci/gitlab/pipeline/test.yml | 28 +++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/substrate/.gitlab-ci.yml b/substrate/.gitlab-ci.yml index b0af4cda995..87e7fa6fc61 100644 --- a/substrate/.gitlab-ci.yml +++ b/substrate/.gitlab-ci.yml @@ -201,3 +201,29 @@ deploy-prometheus-alerting-rules: changes: - .gitlab-ci.yml - ./scripts/ci/monitoring/**/* + +#### stage: .post + +# This job cancels the whole pipeline if any of provided jobs fail. +# In a DAG, every jobs chain is executed independently of others. The `fail_fast` principle suggests +# to fail the pipeline as soon as possible to shorten the feedback loop. +cancel-pipeline: + stage: .post + needs: + - job: test-linux-stable + artifacts: false + - job: test-linux-stable-int + artifacts: false + - job: cargo-check-subkey + artifacts: false + - job: cargo-check-benches + artifacts: false + - job: check-tracing + artifacts: false + rules: + - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs + when: on_failure + variables: + PROJECT_ID: "${CI_PROJECT_ID}" + PIPELINE_ID: "${CI_PIPELINE_ID}" + trigger: "parity/infrastructure/ci_cd/pipeline-stopper" diff --git a/substrate/scripts/ci/gitlab/pipeline/test.yml b/substrate/scripts/ci/gitlab/pipeline/test.yml index bd2c059c3ed..769d1cd30d0 100644 --- a/substrate/scripts/ci/gitlab/pipeline/test.yml +++ b/substrate/scripts/ci/gitlab/pipeline/test.yml @@ -30,6 +30,10 @@ cargo-fmt: cargo-clippy: stage: test + # this is an artificial job dependency, for pipeline optimization using GitLab's DAGs + needs: + - job: cargo-fmt + artifacts: false extends: - .docker-env - .test-refs @@ -38,6 +42,10 @@ cargo-clippy: cargo-check-nixos: stage: test + # this is an artificial job dependency, for pipeline optimization using GitLab's DAGs + needs: + - job: cargo-clippy + artifacts: false extends: - .docker-env - .test-refs @@ -117,6 +125,10 @@ cargo-check-subkey: cargo-check-try-runtime: stage: test + # this is an artificial job dependency, for pipeline optimization using GitLab's DAGs + needs: + - job: cargo-check-subkey + artifacts: false extends: - .docker-env - .test-refs @@ -125,6 +137,10 @@ cargo-check-try-runtime: cargo-check-wasmer-sandbox: stage: test + # this is an artificial job dependency, for pipeline optimization using GitLab's DAGs + needs: + - job: cargo-check-try-runtime + artifacts: false extends: - .docker-env - .test-refs @@ -133,6 +149,10 @@ cargo-check-wasmer-sandbox: test-deterministic-wasm: stage: test + # this is an artificial job dependency, for pipeline optimization using GitLab's DAGs + needs: + - job: cargo-check-wasmer-sandbox + artifacts: false extends: - .docker-env - .test-refs @@ -217,6 +237,10 @@ test-linux-stable-int: check-tracing: stage: test + # this is an artificial job dependency, for pipeline optimization using GitLab's DAGs + needs: + - job: test-linux-stable-int + artifacts: false extends: - .docker-env - .test-refs @@ -227,6 +251,10 @@ check-tracing: test-full-crypto-feature: stage: test + # this is an artificial job dependency, for pipeline optimization using GitLab's DAGs + needs: + - job: check-tracing + artifacts: false extends: - .docker-env - .test-refs -- GitLab