From 833a3ab74ac788695dd0adf9137ac5e8b5d76bcb Mon Sep 17 00:00:00 2001 From: Bruno Bernardo Date: Tue, 15 Jul 2025 09:07:35 +0200 Subject: [PATCH 1/2] CI: move all trigger jobs in [start] stage --- .gitlab/ci/pipelines/before_merging.yml | 14 ++++++------ .gitlab/ci/pipelines/merge_train.yml | 8 +++---- .gitlab/ci/pipelines/non_release_tag.yml | 2 +- .gitlab/ci/pipelines/non_release_tag_test.yml | 2 +- .../ci/pipelines/octez_beta_release_tag.yml | 2 +- .../octez_major_release_tag_test.yml | 2 +- .../octez_minor_release_tag_test.yml | 2 +- .gitlab/ci/pipelines/octez_release_tag.yml | 2 +- .../ci/pipelines/schedule_extended_test.yml | 8 +++---- .../schedule_master_test_release.yml | 2 +- ci/bin/code_verification.ml | 22 +++++++++---------- ci/bin/release_tag.ml | 2 +- 12 files changed, 34 insertions(+), 34 deletions(-) diff --git a/.gitlab/ci/pipelines/before_merging.yml b/.gitlab/ci/pipelines/before_merging.yml index 38b4437f346b..84ac2df10fe9 100644 --- a/.gitlab/ci/pipelines/before_merging.yml +++ b/.gitlab/ci/pipelines/before_merging.yml @@ -1530,7 +1530,7 @@ select_tezts: when: always trigger:debian_repository_partial_auto: - stage: test + stage: start variables: PIPELINE_TYPE: debian_repository_partial_auto rules: @@ -1556,7 +1556,7 @@ trigger:debian_repository_partial_auto: strategy: depend trigger:rpm_repository_partial_auto: - stage: test + stage: start variables: PIPELINE_TYPE: rpm_repository_partial_auto rules: @@ -1579,7 +1579,7 @@ trigger:rpm_repository_partial_auto: strategy: depend trigger:homebrew_auto: - stage: test + stage: start variables: PIPELINE_TYPE: homebrew_auto rules: @@ -4226,7 +4226,7 @@ documentation:linkcheck: - make -C docs linkcheck trigger:homebrew: - stage: manual + stage: start variables: PIPELINE_TYPE: homebrew rules: @@ -4238,7 +4238,7 @@ trigger:homebrew: strategy: depend trigger:rpm_repository_partial: - stage: manual + stage: start variables: PIPELINE_TYPE: rpm_repository_partial rules: @@ -4250,7 +4250,7 @@ trigger:rpm_repository_partial: strategy: depend trigger:debian_repository_partial: - stage: manual + stage: start variables: PIPELINE_TYPE: debian_repository_partial rules: @@ -4372,7 +4372,7 @@ oc.script.docker_verify_image_amd64: IMAGE_ARCH_PREFIX: amd64_ trigger:base_images: - stage: manual + stage: start variables: PIPELINE_TYPE: base_images rules: diff --git a/.gitlab/ci/pipelines/merge_train.yml b/.gitlab/ci/pipelines/merge_train.yml index a649250c0d91..d87e9d9954a5 100644 --- a/.gitlab/ci/pipelines/merge_train.yml +++ b/.gitlab/ci/pipelines/merge_train.yml @@ -1529,7 +1529,7 @@ select_tezts: when: always trigger:debian_repository_partial_auto: - stage: test + stage: start variables: PIPELINE_TYPE: debian_repository_partial_auto rules: @@ -1555,7 +1555,7 @@ trigger:debian_repository_partial_auto: strategy: depend trigger:rpm_repository_partial_auto: - stage: test + stage: start variables: PIPELINE_TYPE: rpm_repository_partial_auto rules: @@ -1578,7 +1578,7 @@ trigger:rpm_repository_partial_auto: strategy: depend trigger:homebrew_auto: - stage: test + stage: start variables: PIPELINE_TYPE: homebrew_auto rules: @@ -4335,7 +4335,7 @@ oc.script.docker_verify_image_amd64: IMAGE_ARCH_PREFIX: amd64_ trigger:base_images: - stage: manual + stage: start variables: PIPELINE_TYPE: base_images rules: diff --git a/.gitlab/ci/pipelines/non_release_tag.yml b/.gitlab/ci/pipelines/non_release_tag.yml index cb4e02527224..2f6f09240eee 100644 --- a/.gitlab/ci/pipelines/non_release_tag.yml +++ b/.gitlab/ci/pipelines/non_release_tag.yml @@ -302,7 +302,7 @@ gitlab:publish: aud: https://iam.googleapis.com/projects/${GCP_WORKLOAD_IDENTITY_FEDERATION_PROJECT_ID}/locations/global/workloadIdentityPools/${GCP_WORKLOAD_IDENTITY_FEDERATION_POOL_ID}/providers/${GCP_WORKLOAD_IDENTITY_FEDERATION_PROVIDER_ID} trigger:octez_monitoring: - stage: build + stage: start variables: PIPELINE_TYPE: octez_monitoring inherit: diff --git a/.gitlab/ci/pipelines/non_release_tag_test.yml b/.gitlab/ci/pipelines/non_release_tag_test.yml index c018129e4da8..a08c44adacd1 100644 --- a/.gitlab/ci/pipelines/non_release_tag_test.yml +++ b/.gitlab/ci/pipelines/non_release_tag_test.yml @@ -302,7 +302,7 @@ gitlab:publish: aud: https://iam.googleapis.com/projects/${GCP_WORKLOAD_IDENTITY_FEDERATION_PROJECT_ID}/locations/global/workloadIdentityPools/${GCP_WORKLOAD_IDENTITY_FEDERATION_POOL_ID}/providers/${GCP_WORKLOAD_IDENTITY_FEDERATION_PROVIDER_ID} trigger:octez_monitoring: - stage: build + stage: start variables: PIPELINE_TYPE: octez_monitoring inherit: diff --git a/.gitlab/ci/pipelines/octez_beta_release_tag.yml b/.gitlab/ci/pipelines/octez_beta_release_tag.yml index 9b5cbf2597bd..f162da591b14 100644 --- a/.gitlab/ci/pipelines/octez_beta_release_tag.yml +++ b/.gitlab/ci/pipelines/octez_beta_release_tag.yml @@ -304,7 +304,7 @@ gitlab:release: aud: https://iam.googleapis.com/projects/${GCP_WORKLOAD_IDENTITY_FEDERATION_PROJECT_ID}/locations/global/workloadIdentityPools/${GCP_WORKLOAD_IDENTITY_FEDERATION_POOL_ID}/providers/${GCP_WORKLOAD_IDENTITY_FEDERATION_PROVIDER_ID} trigger:octez_monitoring: - stage: build + stage: start variables: PIPELINE_TYPE: octez_monitoring inherit: diff --git a/.gitlab/ci/pipelines/octez_major_release_tag_test.yml b/.gitlab/ci/pipelines/octez_major_release_tag_test.yml index de1e997d7df4..304111d69081 100644 --- a/.gitlab/ci/pipelines/octez_major_release_tag_test.yml +++ b/.gitlab/ci/pipelines/octez_major_release_tag_test.yml @@ -304,7 +304,7 @@ gitlab:release: aud: https://iam.googleapis.com/projects/${GCP_WORKLOAD_IDENTITY_FEDERATION_PROJECT_ID}/locations/global/workloadIdentityPools/${GCP_WORKLOAD_IDENTITY_FEDERATION_POOL_ID}/providers/${GCP_WORKLOAD_IDENTITY_FEDERATION_PROVIDER_ID} trigger:octez_monitoring: - stage: build + stage: start variables: PIPELINE_TYPE: octez_monitoring inherit: diff --git a/.gitlab/ci/pipelines/octez_minor_release_tag_test.yml b/.gitlab/ci/pipelines/octez_minor_release_tag_test.yml index 8f420b3221ad..96c5cecc014b 100644 --- a/.gitlab/ci/pipelines/octez_minor_release_tag_test.yml +++ b/.gitlab/ci/pipelines/octez_minor_release_tag_test.yml @@ -283,7 +283,7 @@ gitlab:release: aud: https://iam.googleapis.com/projects/${GCP_WORKLOAD_IDENTITY_FEDERATION_PROJECT_ID}/locations/global/workloadIdentityPools/${GCP_WORKLOAD_IDENTITY_FEDERATION_POOL_ID}/providers/${GCP_WORKLOAD_IDENTITY_FEDERATION_PROVIDER_ID} trigger:octez_monitoring: - stage: build + stage: start variables: PIPELINE_TYPE: octez_monitoring inherit: diff --git a/.gitlab/ci/pipelines/octez_release_tag.yml b/.gitlab/ci/pipelines/octez_release_tag.yml index 1f66baaf04a9..fdd503a61140 100644 --- a/.gitlab/ci/pipelines/octez_release_tag.yml +++ b/.gitlab/ci/pipelines/octez_release_tag.yml @@ -283,7 +283,7 @@ gitlab:release: aud: https://iam.googleapis.com/projects/${GCP_WORKLOAD_IDENTITY_FEDERATION_PROJECT_ID}/locations/global/workloadIdentityPools/${GCP_WORKLOAD_IDENTITY_FEDERATION_POOL_ID}/providers/${GCP_WORKLOAD_IDENTITY_FEDERATION_PROVIDER_ID} trigger:octez_monitoring: - stage: build + stage: start variables: PIPELINE_TYPE: octez_monitoring inherit: diff --git a/.gitlab/ci/pipelines/schedule_extended_test.yml b/.gitlab/ci/pipelines/schedule_extended_test.yml index f7e465d1343f..bc5c180049f9 100644 --- a/.gitlab/ci/pipelines/schedule_extended_test.yml +++ b/.gitlab/ci/pipelines/schedule_extended_test.yml @@ -1801,7 +1801,7 @@ opam:all_7: - bls12-381 trigger:debian_repository_full: - stage: test + stage: start variables: PIPELINE_TYPE: debian_repository_full needs: [] @@ -1810,7 +1810,7 @@ trigger:debian_repository_full: strategy: depend trigger:rpm_repository_full: - stage: test + stage: start variables: PIPELINE_TYPE: rpm_repository_full needs: [] @@ -1819,7 +1819,7 @@ trigger:rpm_repository_full: strategy: depend trigger:homebrew: - stage: test + stage: start variables: PIPELINE_TYPE: homebrew rules: @@ -1830,7 +1830,7 @@ trigger:homebrew: strategy: depend trigger:base_images: - stage: images + stage: start variables: PIPELINE_TYPE: base_images rules: diff --git a/.gitlab/ci/pipelines/schedule_master_test_release.yml b/.gitlab/ci/pipelines/schedule_master_test_release.yml index 1732edbd3bcc..130d45ba3d9d 100644 --- a/.gitlab/ci/pipelines/schedule_master_test_release.yml +++ b/.gitlab/ci/pipelines/schedule_master_test_release.yml @@ -305,7 +305,7 @@ gitlab:publish: aud: https://iam.googleapis.com/projects/${GCP_WORKLOAD_IDENTITY_FEDERATION_PROJECT_ID}/locations/global/workloadIdentityPools/${GCP_WORKLOAD_IDENTITY_FEDERATION_POOL_ID}/providers/${GCP_WORKLOAD_IDENTITY_FEDERATION_PROVIDER_ID} trigger:octez_monitoring: - stage: build + stage: start variables: PIPELINE_TYPE: octez_monitoring inherit: diff --git a/ci/bin/code_verification.ml b/ci/bin/code_verification.ml index 95dbf8904722..6f0106ab3fe3 100644 --- a/ci/bin/code_verification.ml +++ b/ci/bin/code_verification.ml @@ -931,7 +931,7 @@ let jobs pipeline_type = trigger_job ~__POS__ ~rules:(make_rules ~manual:No ~changes:changeset_debian_packages ()) - ~stage:Stages.test + ~stage:Stages.start ~dependencies:dependencies_needs_start Debian_repository.child_pipeline_partial_auto in @@ -939,7 +939,7 @@ let jobs pipeline_type = trigger_job ~__POS__ ~dependencies:(Dependent []) - ~stage:Stages.test + ~stage:Stages.start Debian_repository.child_pipeline_full in @@ -948,7 +948,7 @@ let jobs pipeline_type = trigger_job ~__POS__ ~rules:(make_rules ~manual:No ~changes:changeset_rpm_packages ()) - ~stage:Stages.test + ~stage:Stages.start ~dependencies:dependencies_needs_start Rpm_repository.child_pipeline_partial_auto in @@ -956,7 +956,7 @@ let jobs pipeline_type = trigger_job ~__POS__ ~dependencies:(Dependent []) - ~stage:Stages.test + ~stage:Stages.start Rpm_repository.child_pipeline_full in @@ -964,7 +964,7 @@ let jobs pipeline_type = trigger_job ~__POS__ ~rules:(make_rules ~manual:No ~changes:changeset_homebrew ()) - ~stage:Stages.test + ~stage:Stages.start ~dependencies:dependencies_needs_start Homebrew.child_pipeline_full_auto in @@ -972,7 +972,7 @@ let jobs pipeline_type = trigger_job ~__POS__ ~rules:(make_rules ~manual:No ~changes:changeset_homebrew ()) - ~stage:Stages.test + ~stage:Stages.start ~dependencies:(Dependent []) Homebrew.child_pipeline_full in @@ -981,7 +981,7 @@ let jobs pipeline_type = trigger_job ~__POS__ ~rules:(make_rules ~manual:No ~changes:changeset_base_images ()) - ~stage:Stages.images + ~stage:Stages.start ~dependencies:(Dependent []) Base_images.child_pipeline in @@ -2081,7 +2081,7 @@ let jobs pipeline_type = ~__POS__ ~rules:(make_rules ~manual:Yes ()) ~dependencies:(Dependent []) - ~stage:Stages.manual + ~stage:Stages.start Debian_repository.child_pipeline_partial in let job_rpm_repository_trigger_partial : tezos_job = @@ -2092,7 +2092,7 @@ let jobs pipeline_type = ~__POS__ ~rules:(make_rules ~manual:Yes ()) ~dependencies:(Dependent []) - ~stage:Stages.manual + ~stage:Stages.start Rpm_repository.child_pipeline_partial in let job_homebrew_repository_trigger : tezos_job = @@ -2102,14 +2102,14 @@ let jobs pipeline_type = ~__POS__ ~rules:(make_rules ~manual:Yes ()) ~dependencies:(Dependent []) - ~stage:Stages.manual + ~stage:Stages.start Homebrew.child_pipeline_full in let job_base_images_trigger = trigger_job ~__POS__ ~rules:(make_rules ~manual:Yes ()) - ~stage:Stages.manual + ~stage:Stages.start ~dependencies:(Dependent []) Base_images.child_pipeline in diff --git a/ci/bin/release_tag.ml b/ci/bin/release_tag.ml index ae781bda534b..d5792d4b4f3b 100644 --- a/ci/bin/release_tag.ml +++ b/ci/bin/release_tag.ml @@ -269,7 +269,7 @@ let octez_jobs ?(test = false) ?(major = true) release_tag_pipeline_type = trigger_job ~__POS__ ~dependencies:(Dependent []) - ~stage:Stages.build + ~stage:Stages.start monitoring_child_pipeline in [ -- GitLab From cf3c70a55b12cfce50b1e6e531bb7757bad94420 Mon Sep 17 00:00:00 2001 From: Bruno Bernardo Date: Tue, 15 Jul 2025 09:30:00 +0200 Subject: [PATCH 2/2] CI: [Tezos_ci.trigger_job] in [Stages.start] by construction - We need to move up Stages.start in tezos_ci.ml. --- ci/bin/code_verification.ml | 11 ------- ci/bin/release_tag.ml | 6 +--- ci/lib_tezos_ci/tezos_ci.ml | 60 ++++++++++++++++++------------------ ci/lib_tezos_ci/tezos_ci.mli | 6 ++-- 4 files changed, 35 insertions(+), 48 deletions(-) diff --git a/ci/bin/code_verification.ml b/ci/bin/code_verification.ml index 6f0106ab3fe3..f202134579bc 100644 --- a/ci/bin/code_verification.ml +++ b/ci/bin/code_verification.ml @@ -931,7 +931,6 @@ let jobs pipeline_type = trigger_job ~__POS__ ~rules:(make_rules ~manual:No ~changes:changeset_debian_packages ()) - ~stage:Stages.start ~dependencies:dependencies_needs_start Debian_repository.child_pipeline_partial_auto in @@ -939,7 +938,6 @@ let jobs pipeline_type = trigger_job ~__POS__ ~dependencies:(Dependent []) - ~stage:Stages.start Debian_repository.child_pipeline_full in @@ -948,7 +946,6 @@ let jobs pipeline_type = trigger_job ~__POS__ ~rules:(make_rules ~manual:No ~changes:changeset_rpm_packages ()) - ~stage:Stages.start ~dependencies:dependencies_needs_start Rpm_repository.child_pipeline_partial_auto in @@ -956,7 +953,6 @@ let jobs pipeline_type = trigger_job ~__POS__ ~dependencies:(Dependent []) - ~stage:Stages.start Rpm_repository.child_pipeline_full in @@ -964,7 +960,6 @@ let jobs pipeline_type = trigger_job ~__POS__ ~rules:(make_rules ~manual:No ~changes:changeset_homebrew ()) - ~stage:Stages.start ~dependencies:dependencies_needs_start Homebrew.child_pipeline_full_auto in @@ -972,7 +967,6 @@ let jobs pipeline_type = trigger_job ~__POS__ ~rules:(make_rules ~manual:No ~changes:changeset_homebrew ()) - ~stage:Stages.start ~dependencies:(Dependent []) Homebrew.child_pipeline_full in @@ -981,7 +975,6 @@ let jobs pipeline_type = trigger_job ~__POS__ ~rules:(make_rules ~manual:No ~changes:changeset_base_images ()) - ~stage:Stages.start ~dependencies:(Dependent []) Base_images.child_pipeline in @@ -2081,7 +2074,6 @@ let jobs pipeline_type = ~__POS__ ~rules:(make_rules ~manual:Yes ()) ~dependencies:(Dependent []) - ~stage:Stages.start Debian_repository.child_pipeline_partial in let job_rpm_repository_trigger_partial : tezos_job = @@ -2092,7 +2084,6 @@ let jobs pipeline_type = ~__POS__ ~rules:(make_rules ~manual:Yes ()) ~dependencies:(Dependent []) - ~stage:Stages.start Rpm_repository.child_pipeline_partial in let job_homebrew_repository_trigger : tezos_job = @@ -2102,14 +2093,12 @@ let jobs pipeline_type = ~__POS__ ~rules:(make_rules ~manual:Yes ()) ~dependencies:(Dependent []) - ~stage:Stages.start Homebrew.child_pipeline_full in let job_base_images_trigger = trigger_job ~__POS__ ~rules:(make_rules ~manual:Yes ()) - ~stage:Stages.start ~dependencies:(Dependent []) Base_images.child_pipeline in diff --git a/ci/bin/release_tag.ml b/ci/bin/release_tag.ml index d5792d4b4f3b..ba9484356e21 100644 --- a/ci/bin/release_tag.ml +++ b/ci/bin/release_tag.ml @@ -266,11 +266,7 @@ let octez_jobs ?(test = false) ?(major = true) release_tag_pipeline_type = () in let job_trigger_monitoring = - trigger_job - ~__POS__ - ~dependencies:(Dependent []) - ~stage:Stages.start - monitoring_child_pipeline + trigger_job ~__POS__ ~dependencies:(Dependent []) monitoring_child_pipeline in [ (* Stage: start *) diff --git a/ci/lib_tezos_ci/tezos_ci.ml b/ci/lib_tezos_ci/tezos_ci.ml index b854a71f15fa..c45d95637c71 100644 --- a/ci/lib_tezos_ci/tezos_ci.ml +++ b/ci/lib_tezos_ci/tezos_ci.ml @@ -100,6 +100,33 @@ module Stage = struct let index (Stage {name = _; index}) = index end +(* Define [stages:] + + The "manual" stage exists to fix a UI problem that occurs when mixing + manual and non-manual jobs. *) +module Stages = struct + let start = Stage.register "start" + + (* All automatic image creation is done in the stage [images]. *) + let images = Stage.register "images" + + let sanity = Stage.register "sanity" + + let build = Stage.register "build" + + let test = Stage.register "test" + + let test_coverage = Stage.register "test_coverage" + + let packaging = Stage.register "packaging" + + let publish = Stage.register "publish" + + let publishing_tests = Stage.register "publishing_tests" + + let manual = Stage.register "manual" +end + let templates_to_config (templates : Gitlab_ci.Types.template list) = match templates with | [] -> [] (* empty includes are forbidden *) @@ -1031,7 +1058,7 @@ let job ?arch ?after_script ?allow_failure ?artifacts ?(before_script = []) template; } -let trigger_job ?(dependencies = Staged []) ?rules ?description ~__POS__ ~stage +let trigger_job ?(dependencies = Staged []) ?rules ?description ~__POS__ Pipeline. { name = child_pipeline_name; @@ -1052,7 +1079,7 @@ let trigger_job ?(dependencies = Staged []) ?rules ?description ~__POS__ ~stage ?needs ?inherit_ ?rules - ~stage:(Stage.name stage) + ~stage:(Stage.name Stages.start) ~variables:[("PIPELINE_TYPE", child_pipeline_name)] ~name:job_name (Pipeline.path ~name:child_pipeline_name) @@ -1061,7 +1088,7 @@ let trigger_job ?(dependencies = Staged []) ?rules ?description ~__POS__ ~stage job = Trigger_job trigger_job; description; source_position = __POS__; - stage; + stage = Stages.start; image_builders = []; template = None; } @@ -1303,33 +1330,6 @@ let with_interruptible value tezos_job = map_non_trigger_job tezos_job @@ fun job -> {job with interruptible = Some value} -(* Define [stages:] - - The "manual" stage exists to fix a UI problem that occurs when mixing - manual and non-manual jobs. *) -module Stages = struct - let start = Stage.register "start" - - (* All automatic image creation is done in the stage [images]. *) - let images = Stage.register "images" - - let sanity = Stage.register "sanity" - - let build = Stage.register "build" - - let test = Stage.register "test" - - let test_coverage = Stage.register "test_coverage" - - let packaging = Stage.register "packaging" - - let publish = Stage.register "publish" - - let publishing_tests = Stage.register "publishing_tests" - - let manual = Stage.register "manual" -end - (* Register external images. Use this module to register images that are as built outside the diff --git a/ci/lib_tezos_ci/tezos_ci.mli b/ci/lib_tezos_ci/tezos_ci.mli index 67603b81f211..267ef6cba716 100644 --- a/ci/lib_tezos_ci/tezos_ci.mli +++ b/ci/lib_tezos_ci/tezos_ci.mli @@ -469,13 +469,15 @@ val job : (** Define a trigger job for a child pipeline. - The trigger job will be named [trigger:CHILD_PIPELINE_NAME]. *) + The trigger job will be named [trigger:CHILD_PIPELINE_NAME]. + + Trigger jobs are by construction in the [Stages.start] stage. + *) val trigger_job : ?dependencies:dependencies -> ?rules:Gitlab_ci.Types.job_rule list -> ?description:string -> __POS__:string * int * int * int -> - stage:Stage.t -> Pipeline.child_pipeline -> tezos_job -- GitLab