From 53c766ad132924332da76f1b8adf0ce1da674b63 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 25 Jul 2024 10:29:50 +0200 Subject: [PATCH 1/4] CIAO: add [auto_cancel] to [workflow]s and [workflow_rule]s --- ci/bin/tezos_ci.ml | 8 +++++++- ci/lib_gitlab_ci/expect_tests.ml | 17 +++++++++++++++++ ci/lib_gitlab_ci/to_yaml.ml | 17 ++++++++++++++--- ci/lib_gitlab_ci/types.ml | 29 ++++++++++++++++++++++++++++- ci/lib_gitlab_ci/util.ml | 6 +++--- ci/lib_gitlab_ci/util.mli | 1 + 6 files changed, 70 insertions(+), 8 deletions(-) diff --git a/ci/bin/tezos_ci.ml b/ci/bin/tezos_ci.ml index 7c802be4b715..c49d00ed91dd 100644 --- a/ci/bin/tezos_ci.ml +++ b/ci/bin/tezos_ci.ml @@ -343,7 +343,12 @@ module Pipeline = struct in let workflow = let rules = List.map workflow_rule_of_pipeline pipelines in - Gitlab_ci.Types.{rules; name = Some "[$PIPELINE_TYPE] $CI_COMMIT_TITLE"} + Gitlab_ci.Types. + { + rules; + name = Some "[$PIPELINE_TYPE] $CI_COMMIT_TITLE"; + auto_cancel = None; + } in let includes = List.map include_of_pipeline pipelines in (workflow, includes) @@ -394,6 +399,7 @@ module Pipeline = struct { rules = [Gitlab_ci.Util.workflow_rule ~if_:Rules.always ()]; name = None; + auto_cancel = None; }; ]) @ [Stages stages] diff --git a/ci/lib_gitlab_ci/expect_tests.ml b/ci/lib_gitlab_ci/expect_tests.ml index d010741e12f4..f0db290415fb 100644 --- a/ci/lib_gitlab_ci/expect_tests.ml +++ b/ci/lib_gitlab_ci/expect_tests.ml @@ -24,6 +24,7 @@ let%expect_test _ = { rules = [Util.workflow_rule ~if_:If.(var "CI_SETTING" == null) ()]; name = Some "setting_not_set"; + auto_cancel = None; }; ] ; [%expect @@ -33,6 +34,22 @@ let%expect_test _ = rules: - if: $CI_SETTING == null when: always |}] ; + p + [ + Workflow + { + rules = []; + name = Some "Woops"; + auto_cancel = Some {on_job_failure = true; on_new_commit = false}; + }; + ] ; + [%expect + {| + workflow: + name: Woops + rules: [] + auto_cancel: + on_job_failure: all |}] ; p [ Types.Default diff --git a/ci/lib_gitlab_ci/to_yaml.ml b/ci/lib_gitlab_ci/to_yaml.ml index 1430a1b27db7..71e28f91b278 100644 --- a/ci/lib_gitlab_ci/to_yaml.ml +++ b/ci/lib_gitlab_ci/to_yaml.ml @@ -64,14 +64,20 @@ let enc_when_trigger_job : when_trigger_job -> value = function | On_success -> `String "on_success" | On_failure -> `String "on_failure" +let enc_auto_cancel {on_new_commit; on_job_failure} = + `O + ((if on_new_commit then [("on_new_commit", `String "all")] else []) + @ if on_job_failure then [("on_job_failure", `String "all")] else []) + let enc_workflow_rule : workflow_rule -> value = - fun {changes; if_; variables; when_} -> + fun {changes; if_; variables; when_; auto_cancel} -> obj_flatten [ opt "changes" strings changes; opt "if" enc_if if_; opt "variables" enc_variables variables; key "when" enc_when_workflow when_; + opt "auto_cancel" enc_auto_cancel auto_cancel; ] let enc_allow_failure_rule (allow_failure : allow_failure_rule) : value = @@ -130,8 +136,13 @@ let enc_job_rules : job_rule list -> value = array enc_job_rule let enc_include_rules : include_rule list -> value = array enc_include_rule let enc_workflow : workflow -> value = function - | {name; rules} -> - obj_flatten [opt "name" string name; key "rules" enc_workflow_rules rules] + | {name; rules; auto_cancel} -> + obj_flatten + [ + opt "name" string name; + key "rules" enc_workflow_rules rules; + opt "auto_cancel" enc_auto_cancel auto_cancel; + ] let enc_stages stages : value = strings stages diff --git a/ci/lib_gitlab_ci/types.ml b/ci/lib_gitlab_ci/types.ml index ed464588f491..4d8c4589331f 100644 --- a/ci/lib_gitlab_ci/types.ml +++ b/ci/lib_gitlab_ci/types.ml @@ -46,6 +46,17 @@ type allow_failure_job = Yes | No | With_exit_codes of int list as is possible in a job's [allow_failure] field. *) type allow_failure_rule = Yes | No +(** Represents auto cancel configurations. + + Auto-cancel can be used to auto-cancel pipelines on certain conditions. + + Auto-cancel can be configured globally for the full configuration + (by adding it to the {!workflow}), or configured for a given + workflow rule {!workflow_rule}. See + {{:https://docs.gitlab.com/ee/ci/yaml/#workflowauto_cancelon_job_failure} + workflow:auto_cancel:on_job_failure} for more info. *) +type auto_cancel = {on_new_commit : bool; on_job_failure : bool} + (** Represents a job rule. *) type job_rule = { changes : string list option; @@ -61,6 +72,12 @@ type workflow_rule = { if_ : If.t option; variables : variables option; when_ : when_workflow; + auto_cancel : auto_cancel option; + (** Auto-cancel for this workflow rule. + + See + {{:https://docs.gitlab.com/ee/ci/yaml/#workflowrulesauto_cancel} + workflow:rules:auto_cancel} for more info. *) } (** Represents an include rule. *) @@ -233,7 +250,17 @@ type trigger_job = { type generic_job = Job of job | Trigger_job of trigger_job -type workflow = {rules : workflow_rule list; name : string option} +(** Represents a workflow configuration. + + See {{:https://docs.gitlab.com/ee/ci/yaml/#workflow}workflow} for more info. *) +type workflow = { + rules : workflow_rule list; + name : string option; + auto_cancel : auto_cancel option; + (** Default auto-cancel for the configuration. + + See {{:https://docs.gitlab.com/ee/ci/yaml/#workflowauto_cancelon_new_commit} workflow:auto_cancel} for more info. *) +} type include_ = {local : string; rules : include_rule list} diff --git a/ci/lib_gitlab_ci/util.ml b/ci/lib_gitlab_ci/util.ml index 3a221efb99b7..e8637e1dbd82 100644 --- a/ci/lib_gitlab_ci/util.ml +++ b/ci/lib_gitlab_ci/util.ml @@ -23,9 +23,9 @@ let job_rule ?changes ?if_ ?variables ?(when_ : when_ = On_success) in {changes; if_; variables; when_; allow_failure} -let workflow_rule ?changes ?if_ ?variables ?(when_ : when_workflow = Always) () - : workflow_rule = - {changes; if_; variables; when_} +let workflow_rule ?changes ?if_ ?variables ?(when_ : when_workflow = Always) + ?auto_cancel () : workflow_rule = + {changes; if_; variables; when_; auto_cancel} let include_rule ?changes ?if_ ?(when_ : when_workflow = Always) () : include_rule = diff --git a/ci/lib_gitlab_ci/util.mli b/ci/lib_gitlab_ci/util.mli index 424d5c135581..a5bfd612f27e 100644 --- a/ci/lib_gitlab_ci/util.mli +++ b/ci/lib_gitlab_ci/util.mli @@ -39,6 +39,7 @@ val workflow_rule : ?if_:If.t -> ?variables:variables -> ?when_:when_workflow -> + ?auto_cancel:auto_cancel -> unit -> workflow_rule -- GitLab From 26a475b69f55551d6d679325212fb562155ca6cc Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 25 Jul 2024 13:37:43 +0200 Subject: [PATCH 2/4] CIAO: can specify [auto_cancel] when registering pipelines --- ci/bin/tezos_ci.ml | 26 ++++++++++++++++---------- ci/bin/tezos_ci.mli | 11 +++++++++-- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/ci/bin/tezos_ci.ml b/ci/bin/tezos_ci.ml index c49d00ed91dd..4b00f66b47c7 100644 --- a/ci/bin/tezos_ci.ml +++ b/ci/bin/tezos_ci.ml @@ -123,10 +123,15 @@ module Pipeline = struct name : string; if_ : Gitlab_ci.If.t; variables : Gitlab_ci.Types.variables option; + auto_cancel : Gitlab_ci.Types.auto_cancel option; jobs : tezos_job list; } - type child_pipeline = {name : string; jobs : tezos_job list} + type child_pipeline = { + name : string; + auto_cancel : Gitlab_ci.Types.auto_cancel option; + jobs : tezos_job list; + } type t = Pipeline of pipeline | Child_pipeline of child_pipeline @@ -153,11 +158,11 @@ module Pipeline = struct (name pipeline) else pipelines := pipeline :: !pipelines - let register ?variables ~jobs name if_ = - register_raw (Pipeline {variables; if_; name; jobs}) + let register ?variables ?auto_cancel ~jobs name if_ = + register_raw (Pipeline {variables; if_; name; jobs; auto_cancel}) - let register_child ~jobs name = - let child_pipeline = {name; jobs} in + let register_child ?auto_cancel ~jobs name = + let child_pipeline = {name; jobs; auto_cancel} in register_raw (Child_pipeline child_pipeline) ; child_pipeline @@ -319,13 +324,13 @@ module Pipeline = struct let workflow_includes () : Gitlab_ci.Types.workflow * Gitlab_ci.Types.include_ list = let workflow_rule_of_pipeline = function - | {name; if_; variables; _} -> - (* Add [PIPELINE_TYPE] to the variables of the workflow rules, so - that it can be added to the pipeline [name] *) + | {name; if_; variables; auto_cancel; _} -> + (* Add [PIPELINE_TYPE] to the variables of the workflow + rules, so that it can be added to the pipeline [name] *) let variables = ("PIPELINE_TYPE", name) :: Option.value ~default:[] variables in - workflow_rule ~if_ ~variables ~when_:Always () + workflow_rule ?auto_cancel ~if_ ~variables ~when_:Always () in let include_of_pipeline = function | {name; if_; _} -> @@ -727,7 +732,8 @@ let job ?arch ?after_script ?allow_failure ?artifacts ?before_script ?cache {job = Job job; source_position = __POS__; stage; image_builders} let trigger_job ?(dependencies = Staged []) ?rules ~__POS__ ~stage - Pipeline.{name = child_pipeline_name; jobs = _} : tezos_job = + Pipeline.{name = child_pipeline_name; jobs = _; auto_cancel = _} : tezos_job + = let job_name = "trigger:" ^ child_pipeline_name in let needs, dependencies = resolve_dependencies job_name dependencies in if dependencies != [] then diff --git a/ci/bin/tezos_ci.mli b/ci/bin/tezos_ci.mli index 9fc5dae3d1e6..92fe3b16fc6d 100644 --- a/ci/bin/tezos_ci.mli +++ b/ci/bin/tezos_ci.mli @@ -79,11 +79,13 @@ module Pipeline : sig If [variables] is set, then these variables will be added to the [workflow:] clause for this pipeline in the top-level [.gitlab-ci.yml]. + Similarly, an [auto_cancel] clause can be specified. The [jobs] of the pipeline are generated to the file [.gitlab/ci/pipelines/NAME.yml] when {!write} is called. *) val register : ?variables:Gitlab_ci.Types.variables -> + ?auto_cancel:Gitlab_ci.Types.auto_cancel -> jobs:tezos_job list -> string -> Gitlab_ci.If.t -> @@ -99,11 +101,16 @@ module Pipeline : sig [register_child name] will register a child pipeline called [name]. The [jobs] of the pipeline are generated to the file - [.gitlab/ci/pipelines/NAME.yml] when {!write} is called. + [.gitlab/ci/pipelines/NAME.yml] when {!write} is called. See + {!register} for info on [auto_cancel]. Child pipelines cannot be launched without a trigger job that is included in a regular pipeline (see {!trigger_job}). *) - val register_child : jobs:tezos_job list -> string -> child_pipeline + val register_child : + ?auto_cancel:Gitlab_ci.Types.auto_cancel -> + jobs:tezos_job list -> + string -> + child_pipeline (** Writes the set of registered pipelines. -- GitLab From 5555bcc046a060360709cb8b1ed56b1b901470b9 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 25 Jul 2024 13:45:27 +0200 Subject: [PATCH 3/4] CIAO: make [debian_repository_child_pipeline] registration lazy --- ci/bin/code_verification.ml | 10 +++------- ci/bin/debian_repository.ml | 6 +++++- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ci/bin/code_verification.ml b/ci/bin/code_verification.ml index 2d9fd6aa2447..b9e8d9895652 100644 --- a/ci/bin/code_verification.ml +++ b/ci/bin/code_verification.ml @@ -1626,18 +1626,14 @@ let jobs pipeline_type = On [Before_merging] pipelines only a subset of the packages are built and tested *) let job_debian_repository_trigger : tezos_job = - let debian_pipeline_type = - match pipeline_type with - | Before_merging -> Partial - | Schedule_extended_test -> Full - in trigger_job ~__POS__ ~rules:(make_rules ~manual:Yes ()) ~dependencies:(Dependent []) ~stage:Stages.manual - (Debian_repository.debian_repository_child_pipeline - debian_pipeline_type) + (match pipeline_type with + | Before_merging -> Debian_repository.child_pipeline_partial + | Schedule_extended_test -> Debian_repository.child_pipeline_full) in match pipeline_type with | Before_merging -> diff --git a/ci/bin/debian_repository.ml b/ci/bin/debian_repository.ml index e6121dd62318..6cf6eabeb9f1 100644 --- a/ci/bin/debian_repository.ml +++ b/ci/bin/debian_repository.ml @@ -352,7 +352,7 @@ let jobs pipeline_type = job_build_ubuntu_package_current_b, job_build_debian_package_current_b ) -let debian_repository_child_pipeline pipeline_type = +let register pipeline_type = let pipeline_name = match pipeline_type with | Partial -> "debian_repository_partial" @@ -361,3 +361,7 @@ let debian_repository_child_pipeline pipeline_type = in let jobs, _, _, _, _ = jobs pipeline_type in Pipeline.register_child pipeline_name ~jobs + +let child_pipeline_partial = register Partial + +let child_pipeline_full = register Full -- GitLab From d4a3c93e5c0889ced9968206a6089caef3f27a13 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 25 Jul 2024 13:41:08 +0200 Subject: [PATCH 4/4] CI: add merge train pipeline with auto-cancel on job failure This new pipeline is an exact copy of the before merging pipeline, but fails as soon as any job fails. --- .gitlab-ci.yml | 14 + .gitlab/ci/pipelines/merge_train.yml | 3572 ++++++++++++++++++++++++++ ci/bin/main.ml | 9 +- 3 files changed, 3594 insertions(+), 1 deletion(-) create mode 100644 .gitlab/ci/pipelines/merge_train.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2b4025a0d925..70739c69ad81 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,9 +5,17 @@ workflow: name: '[$PIPELINE_TYPE] $CI_COMMIT_TITLE' rules: - if: $CI_PROJECT_NAMESPACE == "tezos" && $CI_PIPELINE_SOURCE == "merge_request_event" + && $CI_MERGE_REQUEST_EVENT_TYPE != "merge_train" variables: PIPELINE_TYPE: before_merging when: always + - if: $CI_PROJECT_NAMESPACE == "tezos" && $CI_PIPELINE_SOURCE == "merge_request_event" + && $CI_MERGE_REQUEST_EVENT_TYPE == "merge_train" + variables: + PIPELINE_TYPE: merge_train + when: always + auto_cancel: + on_job_failure: all - if: $CI_PROJECT_NAMESPACE == "tezos" && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "latest-release" variables: @@ -92,6 +100,12 @@ include: - local: .gitlab/ci/pipelines/before_merging.yml rules: - if: $CI_PROJECT_NAMESPACE == "tezos" && $CI_PIPELINE_SOURCE == "merge_request_event" + && $CI_MERGE_REQUEST_EVENT_TYPE != "merge_train" + when: always +- local: .gitlab/ci/pipelines/merge_train.yml + rules: + - if: $CI_PROJECT_NAMESPACE == "tezos" && $CI_PIPELINE_SOURCE == "merge_request_event" + && $CI_MERGE_REQUEST_EVENT_TYPE == "merge_train" when: always - local: .gitlab/ci/pipelines/octez_latest_release.yml rules: diff --git a/.gitlab/ci/pipelines/merge_train.yml b/.gitlab/ci/pipelines/merge_train.yml new file mode 100644 index 000000000000..806cfee0f059 --- /dev/null +++ b/.gitlab/ci/pipelines/merge_train.yml @@ -0,0 +1,3572 @@ +# This file was automatically generated, do not edit. +# Edit file ci/bin/main.ml instead. + +stages: +- start +- images +- sanity +- build +- test +- test_coverage +- packaging +- doc +- manual + +oc.docker:ci:amd64: + image: ${GCP_REGISTRY}/tezos/docker-images/ci-docker:v1.12.0 + stage: images + tags: + - gcp + dependencies: [] + before_script: [] + script: + - ./images/ci_create_ci_images.sh + services: + - docker:${DOCKER_VERSION}-dind + variables: + DOCKER_VERSION: 24.0.6 + CI_DOCKER_HUB: "false" + ARCH: amd64 + artifacts: + reports: + dotenv: ci_image_tag.env + +oc.docker:client-libs-dependencies: + image: ${GCP_REGISTRY}/tezos/docker-images/ci-docker:v1.12.0 + stage: build + tags: + - gcp + dependencies: [] + before_script: [] + script: + - ./scripts/ci/docker_client_libs_dependencies_build.sh + services: + - docker:${DOCKER_VERSION}-dind + variables: + DOCKER_VERSION: 24.0.6 + CI_DOCKER_HUB: "false" + artifacts: + reports: + dotenv: client_libs_dependencies_image_tag.env + +oc.docker:rust-toolchain:amd64: + image: ${GCP_REGISTRY}/tezos/docker-images/ci-docker:v1.12.0 + stage: images + tags: + - gcp + dependencies: [] + before_script: [] + script: + - ./scripts/ci/docker_rust_toolchain_build.sh + services: + - docker:${DOCKER_VERSION}-dind + variables: + DOCKER_VERSION: 24.0.6 + CI_DOCKER_HUB: "false" + artifacts: + reports: + dotenv: rust_toolchain_image_tag.env + +oc.docker:ci:arm64: + image: ${GCP_REGISTRY}/tezos/docker-images/ci-docker:v1.12.0 + stage: images + tags: + - gcp_arm64 + dependencies: [] + before_script: [] + script: + - ./images/ci_create_ci_images.sh + services: + - docker:${DOCKER_VERSION}-dind + variables: + DOCKER_VERSION: 24.0.6 + CI_DOCKER_HUB: "false" + ARCH: arm64 + artifacts: + reports: + dotenv: ci_image_tag.env + +trigger: + image: alpine:3.19 + stage: start + tags: + - gcp + rules: + - if: $GITLAB_USER_LOGIN != "nomadic-margebot" && $CI_MERGE_REQUEST_ASSIGNEES !~ + /nomadic-margebot/ && $CI_MERGE_REQUEST_EVENT_TYPE != "merge_train" + when: manual + allow_failure: false + - when: always + dependencies: [] + allow_failure: false + timeout: 10 minutes + script: + - echo 'Trigger pipeline!' + - ./scripts/ci/check_alpine_version.sh + +sanity_ci: + image: ${ci_image_name}/build:${ci_image_tag} + stage: sanity + tags: + - gcp + needs: + - oc.docker:ci:amd64 + - trigger + dependencies: + - oc.docker:ci:amd64 + before_script: + - ./scripts/ci/take_ownership.sh + - eval $(opam env) + script: + - make -C manifest check + - ./scripts/lint.sh --check-gitlab-ci-yml + - ./scripts/ci/check_alpine_version.sh + - make -C ci check + +docker:hadolint-before_merging: + image: hadolint/hadolint:2.9.3-debian + stage: sanity + tags: + - gcp + rules: + - changes: + - Dockerfile + - build.Dockerfile + when: on_success + dependencies: [] + script: + - hadolint build.Dockerfile + - hadolint Dockerfile + +nix: + image: nixos/nix:2.22.1 + stage: sanity + tags: + - gcp + rules: + - changes: + - '**/*.nix' + - flake.lock + - scripts/version.sh + when: on_success + dependencies: [] + cache: + key: nix-store + paths: + - /nix/store + policy: pull-push + before_script: + - mkdir -p ~/.config/nix + - echo 'extra-experimental-features = flakes nix-command' > ~/.config/nix/nix.conf + script: + - nix run .#ci-check-version-sh-lock + artifacts: + paths: + - flake.lock + when: on_failure + +oc.build_arm64-released: + image: ${ci_image_name}/build:${ci_image_tag} + stage: build + tags: + - gcp_arm64 + rules: + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--arm64(?:$|,)/ + when: on_success + - when: manual + allow_failure: true + dependencies: + - oc.docker:ci:arm64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + before_script: + - ./scripts/ci/take_ownership.sh + - . ./scripts/version.sh + - eval $(opam env) + - . ./scripts/ci/sccache-start.sh + script: + - ./scripts/ci/build_full_unreleased.sh + after_script: + - sccache --stop-server || true + variables: + ARCH: arm64 + EXECUTABLE_FILES: script-inputs/released-executables + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + artifacts: + name: build-$ARCH-$CI_COMMIT_REF_SLUG + expire_in: 1 day + paths: + - octez-* + - src/proto_*/parameters/*.json + - _build/default/src/lib_protocol_compiler/bin/main_native.exe + - _build/default/tezt/tests/main.exe + - _build/default/contrib/octez_injector_server/octez_injector_server.exe + when: on_success + +oc.build_arm64-exp-dev-extra: + image: ${ci_image_name}/build:${ci_image_tag} + stage: build + tags: + - gcp_arm64 + rules: + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--arm64(?:$|,)/ + when: on_success + - when: manual + allow_failure: true + dependencies: + - oc.docker:ci:arm64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + before_script: + - ./scripts/ci/take_ownership.sh + - . ./scripts/version.sh + - eval $(opam env) + - . ./scripts/ci/sccache-start.sh + script: + - ./scripts/ci/build_full_unreleased.sh + after_script: + - sccache --stop-server || true + variables: + ARCH: arm64 + EXECUTABLE_FILES: script-inputs/experimental-executables script-inputs/dev-executables + BUILD_EXTRA: src/bin_tps_evaluation/main_tps_evaluation.exe src/bin_octogram/octogram_main.exe + tezt/tests/main.exe + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + artifacts: + name: build-$ARCH-$CI_COMMIT_REF_SLUG + expire_in: 1 day + paths: + - octez-* + - src/proto_*/parameters/*.json + - _build/default/src/lib_protocol_compiler/bin/main_native.exe + - _build/default/tezt/tests/main.exe + - _build/default/contrib/octez_injector_server/octez_injector_server.exe + when: on_success + +oc.build:static-x86_64-linux-binaries: + image: ${ci_image_name}/build:${ci_image_tag} + stage: build + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - data-encoding/**/* + - etherlink/**/* + - irmin/**/* + - michelson_test_scripts/**/* + - resto/**/* + - src/**/* + - tezt/**/* + - tzt_reference_test_suite/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - trigger + dependencies: + - oc.docker:ci:amd64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + before_script: + - ./scripts/ci/take_ownership.sh + - eval $(opam env) + - . ./scripts/ci/sccache-start.sh + script: + - ./scripts/ci/build_static_binaries.sh + after_script: + - sccache --stop-server || true + variables: + ARCH: x86_64 + EXECUTABLE_FILES: script-inputs/released-executables script-inputs/experimental-executables + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + artifacts: + paths: + - octez-binaries/$ARCH/* + +oc.build_x86_64-released: + image: ${ci_image_name}/build:${ci_image_tag} + stage: build + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - data-encoding/**/* + - etherlink/**/* + - irmin/**/* + - michelson_test_scripts/**/* + - resto/**/* + - src/**/* + - tezt/**/* + - tzt_reference_test_suite/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - trigger + dependencies: + - oc.docker:ci:amd64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + before_script: + - ./scripts/ci/take_ownership.sh + - . ./scripts/version.sh + - eval $(opam env) + - . ./scripts/ci/sccache-start.sh + script: + - ./scripts/ci/build_full_unreleased.sh + after_script: + - sccache --stop-server || true + variables: + ARCH: x86_64 + EXECUTABLE_FILES: script-inputs/released-executables + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + COVERAGE_OPTIONS: --instrument-with bisect_ppx + artifacts: + name: build-$ARCH-$CI_COMMIT_REF_SLUG + expire_in: 1 day + paths: + - octez-* + - src/proto_*/parameters/*.json + - _build/default/src/lib_protocol_compiler/bin/main_native.exe + - _build/default/tezt/tests/main.exe + - _build/default/contrib/octez_injector_server/octez_injector_server.exe + when: on_success + +oc.build_x86_64-exp-dev-extra: + image: ${ci_image_name}/build:${ci_image_tag} + stage: build + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - data-encoding/**/* + - etherlink/**/* + - irmin/**/* + - michelson_test_scripts/**/* + - resto/**/* + - src/**/* + - tezt/**/* + - tzt_reference_test_suite/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - trigger + dependencies: + - oc.docker:ci:amd64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + - key: dune-build-cache-$CI_PIPELINE_ID + paths: + - $CI_PROJECT_DIR/_dune_cache + policy: push + before_script: + - ./scripts/ci/take_ownership.sh + - . ./scripts/version.sh + - eval $(opam env) + - . ./scripts/ci/sccache-start.sh + script: + - ./scripts/ci/build_full_unreleased.sh + after_script: + - sccache --stop-server || true + variables: + ARCH: x86_64 + EXECUTABLE_FILES: script-inputs/experimental-executables script-inputs/dev-executables + BUILD_EXTRA: src/bin_tps_evaluation/main_tps_evaluation.exe src/bin_octogram/octogram_main.exe + tezt/tests/main.exe contrib/octez_injector_server/octez_injector_server.exe + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + COVERAGE_OPTIONS: --instrument-with bisect_ppx + DUNE_CACHE: enabled + DUNE_CACHE_STORAGE_MODE: hardlink + DUNE_CACHE_ROOT: $CI_PROJECT_DIR/_dune_cache + artifacts: + name: build-$ARCH-$CI_COMMIT_REF_SLUG + expire_in: 1 day + paths: + - octez-* + - src/proto_*/parameters/*.json + - _build/default/src/lib_protocol_compiler/bin/main_native.exe + - _build/default/tezt/tests/main.exe + - _build/default/contrib/octez_injector_server/octez_injector_server.exe + when: on_success + +ocaml-check: + image: ${ci_image_name}/build:${ci_image_tag} + stage: build + tags: + - gcp + rules: + - changes: + - '**/*.ml' + - '**/*.mli' + - .gitlab-ci.yml + - .gitlab/**/* + - devtools/**/* + - src/**/* + - tezt/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - trigger + dependencies: + - oc.docker:ci:amd64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + before_script: + - ./scripts/ci/take_ownership.sh + - . ./scripts/version.sh + - eval $(opam env) + - . ./scripts/ci/sccache-start.sh + script: + - dune build @check + after_script: + - sccache --stop-server || true + variables: + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + +oc.build_kernels: + image: ${rust_toolchain_image_name}:${rust_toolchain_image_tag} + stage: build + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - data-encoding/**/* + - etherlink.mk + - etherlink/**/* + - images/**/* + - irmin/**/* + - kernels.mk + - michelson_test_scripts/**/* + - resto/**/* + - scripts/ci/**/* + - src/**/* + - tezt/**/* + - tzt_reference_test_suite/**/* + when: on_success + dependencies: + - oc.docker:rust-toolchain:amd64 + cache: + - key: kernels-sccache + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + before_script: + - . ./scripts/ci/sccache-start.sh + script: + - make -f kernels.mk build + - make -f etherlink.mk evm_kernel.wasm + - make -C src/riscv riscv-sandbox riscv-dummy.elf + - make -C src/riscv/tests/ build + after_script: + - sccache --stop-server || true + variables: + CC: clang + NATIVE_TARGET: x86_64-unknown-linux-musl + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + CARGO_NET_OFFLINE: "false" + artifacts: + name: build-kernels-$CI_COMMIT_REF_SLUG + expire_in: 1 day + paths: + - evm_kernel.wasm + - smart-rollup-installer + - sequenced_kernel.wasm + - tx_kernel.wasm + - tx_kernel_dal.wasm + - dal_echo_kernel.wasm + - src/riscv/riscv-sandbox + - src/riscv/riscv-dummy.elf + - src/riscv/tests/inline_asm/rv64-inline-asm-tests + when: on_success + +oc.tezt:fetch-records: + image: ${ci_image_name}/build:${ci_image_tag} + stage: build + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - data-encoding/**/* + - etherlink/**/* + - irmin/**/* + - michelson_test_scripts/**/* + - resto/**/* + - src/**/* + - tezt/**/* + - tzt_reference_test_suite/**/* + when: on_success + dependencies: + - oc.docker:ci:amd64 + allow_failure: true + before_script: + - ./scripts/ci/take_ownership.sh + - . ./scripts/version.sh + - eval $(opam env) + script: + - dune exec scripts/ci/update_records/update.exe -- --log-file tezt-fetch-records.log + --from last-successful-schedule-extended-test --info + after_script: + - ./scripts/ci/filter_corrupted_records.sh + artifacts: + expire_in: 4 hours + paths: + - tezt-fetch-records.log + - tezt/records/*.json + - tezt/records/*.json.broken + when: always + +select_tezts: + image: ${ci_image_name}/prebuild:${ci_image_tag} + stage: build + tags: + - gcp + dependencies: + - oc.docker:ci:amd64 + allow_failure: + exit_codes: 17 + before_script: + - ./scripts/ci/take_ownership.sh + - eval $(opam env) + script: + - scripts/ci/select_tezts.sh || exit $? + artifacts: + expire_in: 3 days + paths: + - selected_tezts.tsl + when: always + +build_octez_source: + image: ${ci_image_name}/build:${ci_image_tag} + stage: build + tags: + - gcp + rules: + - when: manual + allow_failure: true + dependencies: + - oc.docker:ci:amd64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + before_script: + - ./scripts/ci/take_ownership.sh + - . ./scripts/version.sh + - eval $(opam env) + - . ./scripts/ci/sccache-start.sh + script: + - ./scripts/ci/restrict_export_to_octez_source.sh + - ./scripts/ci/create_octez_tarball.sh octez + - mv octez.tar.bz2 ../ + - cd ../ + - tar xf octez.tar.bz2 + - cd octez/ + - eval $(opam env) + - make octez + after_script: + - sccache --stop-server || true + variables: + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + +opam:prepare: + image: ${ci_image_name}/prebuild:${ci_image_tag} + stage: packaging + tags: + - gcp + rules: + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 1 minute + - changes: + - '**/*.dune.inc' + - '**/*.opam' + - '**/dune' + - '**/dune-project' + - '**/dune-workspace' + - '**/dune.inc' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/**/*.ml* + - scripts/opam-prepare-repo.sh + - scripts/version.sh + when: delayed + start_in: 1 minute + needs: + - oc.docker:ci:amd64 + - trigger + dependencies: + - oc.docker:ci:amd64 + before_script: + - eval $(opam env) + script: + - git init _opam-repo-for-release + - ./scripts/opam-prepare-repo.sh dev ./ ./_opam-repo-for-release + - git -C _opam-repo-for-release add packages + - git -C _opam-repo-for-release commit -m "tezos packages" + artifacts: + paths: + - _opam-repo-for-release/ + +opam:all_6: + image: ${ci_image_name}/prebuild:${ci_image_tag} + stage: packaging + tags: + - gcp + rules: + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 6 minutes + - changes: + - '**/*.dune.inc' + - '**/*.opam' + - '**/dune' + - '**/dune-project' + - '**/dune-workspace' + - '**/dune.inc' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/**/*.ml* + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $GITLAB_USER_LOGIN == "nomadic-margebot" || $CI_MERGE_REQUEST_ASSIGNEES =~ + /nomadic-margebot/ || $CI_MERGE_REQUEST_EVENT_TYPE == "merge_train" + when: delayed + start_in: 6 minutes + needs: + - oc.docker:ci:amd64 + - opam:prepare + dependencies: + - oc.docker:ci:amd64 + - opam:prepare + cache: + - key: opam-sccache + paths: + - $CI_PROJECT_DIR/_build/_sccache + policy: pull-push + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + before_script: + - eval $(opam env) + - mkdir -p $CI_PROJECT_DIR/opam_logs + - . ./scripts/ci/sccache-start.sh + script: + - opam remote add dev-repo ./_opam-repo-for-release + - opam install --yes ${package}.dev + - opam reinstall --yes --with-test ${package}.dev + after_script: + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh + - sccache --stop-server || true + variables: + RUNTEZTALIAS: "true" + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + CARGO_NET_OFFLINE: "false" + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 + parallel: + matrix: + - package: + - tezos-protocol-genesis + - tezos-protocol-demo-noops + - tezos-protocol-demo-counter + - tezos-protocol-beta + - tezos-protocol-alpha + - tezos-protocol-020-PsParisC + - tezos-protocol-019-PtParisB + - tezos-protocol-018-Proxford + - tezos-benchmark + - octez-shell-libs + - octez-riscv-pvm + - octez-proto-libs + - octez-l2-libs + +opam:exec_6: + image: ${ci_image_name}/prebuild:${ci_image_tag} + stage: packaging + tags: + - gcp + rules: + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 6 minutes + - changes: + - '**/*.dune.inc' + - '**/*.opam' + - '**/dune' + - '**/dune-project' + - '**/dune-workspace' + - '**/dune.inc' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/**/*.ml* + - scripts/opam-prepare-repo.sh + - scripts/version.sh + when: delayed + start_in: 6 minutes + needs: + - oc.docker:ci:amd64 + - opam:prepare + dependencies: + - oc.docker:ci:amd64 + - opam:prepare + cache: + - key: opam-sccache + paths: + - $CI_PROJECT_DIR/_build/_sccache + policy: pull-push + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + before_script: + - eval $(opam env) + - mkdir -p $CI_PROJECT_DIR/opam_logs + - . ./scripts/ci/sccache-start.sh + script: + - opam remote add dev-repo ./_opam-repo-for-release + - opam install --yes ${package}.dev + - opam reinstall --yes --with-test ${package}.dev + after_script: + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh + - sccache --stop-server || true + variables: + RUNTEZTALIAS: "true" + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + CARGO_NET_OFFLINE: "false" + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 + parallel: + matrix: + - package: + - octez-version + - octez-protocol-compiler + +opam:all_2: + image: ${ci_image_name}/prebuild:${ci_image_tag} + stage: packaging + tags: + - gcp + rules: + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 2 minutes + - changes: + - '**/*.dune.inc' + - '**/*.opam' + - '**/dune' + - '**/dune-project' + - '**/dune-workspace' + - '**/dune.inc' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/**/*.ml* + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $GITLAB_USER_LOGIN == "nomadic-margebot" || $CI_MERGE_REQUEST_ASSIGNEES =~ + /nomadic-margebot/ || $CI_MERGE_REQUEST_EVENT_TYPE == "merge_train" + when: delayed + start_in: 2 minutes + needs: + - oc.docker:ci:amd64 + - opam:prepare + dependencies: + - oc.docker:ci:amd64 + - opam:prepare + cache: + - key: opam-sccache + paths: + - $CI_PROJECT_DIR/_build/_sccache + policy: pull-push + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + before_script: + - eval $(opam env) + - mkdir -p $CI_PROJECT_DIR/opam_logs + - . ./scripts/ci/sccache-start.sh + script: + - opam remote add dev-repo ./_opam-repo-for-release + - opam install --yes ${package}.dev + - opam reinstall --yes --with-test ${package}.dev + after_script: + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh + - sccache --stop-server || true + variables: + RUNTEZTALIAS: "true" + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + CARGO_NET_OFFLINE: "false" + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 + parallel: + matrix: + - package: + - tezos-dac-node-lib + - octez-smart-rollup-wasm-debugger-lib + - octez-smart-rollup-node-lib + - octez-smart-rollup-node-beta + - octez-smart-rollup-node-PtParisB + - octez-smart-rollup-node-PtNairob + - octez-smart-rollup-node-Proxford + - octez-protocol-beta-libs + - octez-protocol-alpha-libs + - octez-protocol-020-PsParisC-libs + - octez-protocol-019-PtParisB-libs + - octez-protocol-018-Proxford-libs + - octez-protocol-017-PtNairob-libs + - octez-protocol-016-PtMumbai-libs + - octez-injector + +opam:all_1: + image: ${ci_image_name}/prebuild:${ci_image_tag} + stage: packaging + tags: + - gcp + rules: + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 1 minute + - changes: + - '**/*.dune.inc' + - '**/*.opam' + - '**/dune' + - '**/dune-project' + - '**/dune-workspace' + - '**/dune.inc' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/**/*.ml* + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $GITLAB_USER_LOGIN == "nomadic-margebot" || $CI_MERGE_REQUEST_ASSIGNEES =~ + /nomadic-margebot/ || $CI_MERGE_REQUEST_EVENT_TYPE == "merge_train" + when: delayed + start_in: 1 minute + needs: + - oc.docker:ci:amd64 + - opam:prepare + dependencies: + - oc.docker:ci:amd64 + - opam:prepare + cache: + - key: opam-sccache + paths: + - $CI_PROJECT_DIR/_build/_sccache + policy: pull-push + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + before_script: + - eval $(opam env) + - mkdir -p $CI_PROJECT_DIR/opam_logs + - . ./scripts/ci/sccache-start.sh + script: + - opam remote add dev-repo ./_opam-repo-for-release + - opam install --yes ${package}.dev + - opam reinstall --yes --with-test ${package}.dev + after_script: + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh + - sccache --stop-server || true + variables: + RUNTEZTALIAS: "true" + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + CARGO_NET_OFFLINE: "false" + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 + parallel: + matrix: + - package: + - octez-smart-rollup-node-alpha + - octez-smart-rollup-node-PsParisC + - octez-evm-node-libs + +opam:all_3: + image: ${ci_image_name}/prebuild:${ci_image_tag} + stage: packaging + tags: + - gcp + rules: + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 3 minutes + - changes: + - '**/*.dune.inc' + - '**/*.opam' + - '**/dune' + - '**/dune-project' + - '**/dune-workspace' + - '**/dune.inc' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/**/*.ml* + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $GITLAB_USER_LOGIN == "nomadic-margebot" || $CI_MERGE_REQUEST_ASSIGNEES =~ + /nomadic-margebot/ || $CI_MERGE_REQUEST_EVENT_TYPE == "merge_train" + when: delayed + start_in: 3 minutes + needs: + - oc.docker:ci:amd64 + - opam:prepare + dependencies: + - oc.docker:ci:amd64 + - opam:prepare + cache: + - key: opam-sccache + paths: + - $CI_PROJECT_DIR/_build/_sccache + policy: pull-push + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + before_script: + - eval $(opam env) + - mkdir -p $CI_PROJECT_DIR/opam_logs + - . ./scripts/ci/sccache-start.sh + script: + - opam remote add dev-repo ./_opam-repo-for-release + - opam install --yes ${package}.dev + - opam reinstall --yes --with-test ${package}.dev + after_script: + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh + - sccache --stop-server || true + variables: + RUNTEZTALIAS: "true" + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + CARGO_NET_OFFLINE: "false" + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 + parallel: + matrix: + - package: + - octez-protocol-014-PtKathma-libs + - octez-protocol-013-PtJakart-libs + - octez-protocol-012-Psithaca-libs + - octez-protocol-011-PtHangz2-libs + - octez-protocol-010-PtGRANAD-libs + - octez-protocol-009-PsFLoren-libs + - octez-protocol-008-PtEdo2Zk-libs + - octez-protocol-007-PsDELPH1-libs + - octez-protocol-006-PsCARTHA-libs + - octez-protocol-005-PsBabyM1-libs + - octez-protocol-004-Pt24m4xi-libs + - octez-protocol-003-PsddFKi3-libs + - octez-protocol-002-PsYLVpVv-libs + - octez-protocol-001-PtCJ7pwo-libs + - octez-protocol-000-Ps9mPmXa-libs + +opam:exec_4: + image: ${ci_image_name}/prebuild:${ci_image_tag} + stage: packaging + tags: + - gcp + rules: + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 4 minutes + - changes: + - '**/*.dune.inc' + - '**/*.opam' + - '**/dune' + - '**/dune-project' + - '**/dune-workspace' + - '**/dune.inc' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/**/*.ml* + - scripts/opam-prepare-repo.sh + - scripts/version.sh + when: delayed + start_in: 4 minutes + needs: + - oc.docker:ci:amd64 + - opam:prepare + dependencies: + - oc.docker:ci:amd64 + - opam:prepare + cache: + - key: opam-sccache + paths: + - $CI_PROJECT_DIR/_build/_sccache + policy: pull-push + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + before_script: + - eval $(opam env) + - mkdir -p $CI_PROJECT_DIR/opam_logs + - . ./scripts/ci/sccache-start.sh + script: + - opam remote add dev-repo ./_opam-repo-for-release + - opam install --yes ${package}.dev + - opam reinstall --yes --with-test ${package}.dev + after_script: + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh + - sccache --stop-server || true + variables: + RUNTEZTALIAS: "true" + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + CARGO_NET_OFFLINE: "false" + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 + parallel: + matrix: + - package: + - octez-signer + +opam:all_4: + image: ${ci_image_name}/prebuild:${ci_image_tag} + stage: packaging + tags: + - gcp + rules: + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 4 minutes + - changes: + - '**/*.dune.inc' + - '**/*.opam' + - '**/dune' + - '**/dune-project' + - '**/dune-workspace' + - '**/dune.inc' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/**/*.ml* + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $GITLAB_USER_LOGIN == "nomadic-margebot" || $CI_MERGE_REQUEST_ASSIGNEES =~ + /nomadic-margebot/ || $CI_MERGE_REQUEST_EVENT_TYPE == "merge_train" + when: delayed + start_in: 4 minutes + needs: + - oc.docker:ci:amd64 + - opam:prepare + dependencies: + - oc.docker:ci:amd64 + - opam:prepare + cache: + - key: opam-sccache + paths: + - $CI_PROJECT_DIR/_build/_sccache + policy: pull-push + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + before_script: + - eval $(opam env) + - mkdir -p $CI_PROJECT_DIR/opam_logs + - . ./scripts/ci/sccache-start.sh + script: + - opam remote add dev-repo ./_opam-repo-for-release + - opam install --yes ${package}.dev + - opam reinstall --yes --with-test ${package}.dev + after_script: + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh + - sccache --stop-server || true + variables: + RUNTEZTALIAS: "true" + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + CARGO_NET_OFFLINE: "false" + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 + parallel: + matrix: + - package: + - tezos-protocol-004-Pt24m4xi + - tezos-protocol-003-PsddFKi3 + - tezos-protocol-002-PsYLVpVv + - tezos-protocol-001-PtCJ7pwo + - tezos-protocol-000-Ps9mPmXa + - tezos-dal-node-lib + - tezos-dac-lib + - tezos-dac-client-lib + - tezos-client-genesis + - tezos-client-demo-counter + - octez-rpc-process + - octez-protocol-015-PtLimaPt-libs + - octez-node-config + - octez-crawler + +opam:exec_1: + image: ${ci_image_name}/prebuild:${ci_image_tag} + stage: packaging + tags: + - gcp + rules: + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 1 minute + - changes: + - '**/*.dune.inc' + - '**/*.opam' + - '**/dune' + - '**/dune-project' + - '**/dune-workspace' + - '**/dune.inc' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/**/*.ml* + - scripts/opam-prepare-repo.sh + - scripts/version.sh + when: delayed + start_in: 1 minute + needs: + - oc.docker:ci:amd64 + - opam:prepare + dependencies: + - oc.docker:ci:amd64 + - opam:prepare + cache: + - key: opam-sccache + paths: + - $CI_PROJECT_DIR/_build/_sccache + policy: pull-push + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + before_script: + - eval $(opam env) + - mkdir -p $CI_PROJECT_DIR/opam_logs + - . ./scripts/ci/sccache-start.sh + script: + - opam remote add dev-repo ./_opam-repo-for-release + - opam install --yes ${package}.dev + - opam reinstall --yes --with-test ${package}.dev + after_script: + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh + - sccache --stop-server || true + variables: + RUNTEZTALIAS: "true" + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + CARGO_NET_OFFLINE: "false" + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 + parallel: + matrix: + - package: + - octez-smart-rollup-wasm-debugger + - octez-smart-rollup-node + - octez-proxy-server + - octez-node + - octez-evm-node + - octez-dal-node + - octez-dac-node + - octez-dac-client + - octez-codec + - octez-client + - octez-baker-PsParisC + - octez-accuser-PsParisC + +opam:all_5: + image: ${ci_image_name}/prebuild:${ci_image_tag} + stage: packaging + tags: + - gcp + rules: + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 5 minutes + - changes: + - '**/*.dune.inc' + - '**/*.opam' + - '**/dune' + - '**/dune-project' + - '**/dune-workspace' + - '**/dune.inc' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/**/*.ml* + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $GITLAB_USER_LOGIN == "nomadic-margebot" || $CI_MERGE_REQUEST_ASSIGNEES =~ + /nomadic-margebot/ || $CI_MERGE_REQUEST_EVENT_TYPE == "merge_train" + when: delayed + start_in: 5 minutes + needs: + - oc.docker:ci:amd64 + - opam:prepare + dependencies: + - oc.docker:ci:amd64 + - opam:prepare + cache: + - key: opam-sccache + paths: + - $CI_PROJECT_DIR/_build/_sccache + policy: pull-push + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + before_script: + - eval $(opam env) + - mkdir -p $CI_PROJECT_DIR/opam_logs + - . ./scripts/ci/sccache-start.sh + script: + - opam remote add dev-repo ./_opam-repo-for-release + - opam install --yes ${package}.dev + - opam reinstall --yes --with-test ${package}.dev + after_script: + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh + - sccache --stop-server || true + variables: + RUNTEZTALIAS: "true" + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + CARGO_NET_OFFLINE: "false" + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 + parallel: + matrix: + - package: + - tezos-protocol-017-PtNairob + - tezos-protocol-016-PtMumbai + - tezos-protocol-015-PtLimaPt + - tezos-protocol-014-PtKathma + - tezos-protocol-013-PtJakart + - tezos-protocol-012-Psithaca + - tezos-protocol-011-PtHangz2 + - tezos-protocol-010-PtGRANAD + - tezos-protocol-009-PsFLoren + - tezos-protocol-008-PtEdoTez + - tezos-protocol-008-PtEdo2Zk + - tezos-protocol-007-PsDELPH1 + - tezos-protocol-006-PsCARTHA + - tezos-protocol-005-PsBabyM1 + - tezos-protocol-005-PsBABY5H + +opam:all_7: + image: ${ci_image_name}/prebuild:${ci_image_tag} + stage: packaging + tags: + - gcp + rules: + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 7 minutes + - changes: + - '**/*.dune.inc' + - '**/*.opam' + - '**/dune' + - '**/dune-project' + - '**/dune-workspace' + - '**/dune.inc' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/**/*.ml* + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $GITLAB_USER_LOGIN == "nomadic-margebot" || $CI_MERGE_REQUEST_ASSIGNEES =~ + /nomadic-margebot/ || $CI_MERGE_REQUEST_EVENT_TYPE == "merge_train" + when: delayed + start_in: 7 minutes + needs: + - oc.docker:ci:amd64 + - opam:prepare + dependencies: + - oc.docker:ci:amd64 + - opam:prepare + cache: + - key: opam-sccache + paths: + - $CI_PROJECT_DIR/_build/_sccache + policy: pull-push + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + before_script: + - eval $(opam env) + - mkdir -p $CI_PROJECT_DIR/opam_logs + - . ./scripts/ci/sccache-start.sh + script: + - opam remote add dev-repo ./_opam-repo-for-release + - opam install --yes ${package}.dev + - opam reinstall --yes --with-test ${package}.dev + after_script: + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh + - sccache --stop-server || true + variables: + RUNTEZTALIAS: "true" + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + CARGO_NET_OFFLINE: "false" + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 + parallel: + matrix: + - package: + - tezt-tezos + - tezos-proxy-server-config + - tezos-openapi + - tezos-dal-node-services + - octez-smart-rollup-wasm-debugger-plugin + - octez-rust-deps + - octez-riscv-api + - octez-libs + - octez-internal-libs + - octez-distributed-lwt-internal + - octez-distributed-internal + - octez-alcotezt + - bls12-381 + +kaitai_checks: + image: ${ci_image_name}/build:${ci_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - client-libs/*kaitai*/**/* + - images/**/* + - scripts/ci/**/* + - src/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - trigger + dependencies: + - oc.docker:ci:amd64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + before_script: + - . ./scripts/version.sh + - eval $(opam env) + - . ./scripts/ci/sccache-start.sh + script: + - make -C ${CI_PROJECT_DIR} check-kaitai-struct-files || (echo 'Octez encodings + and Kaitai files seem to be out of sync. You might need to run `make check-kaitai-struct-files` + and commit the resulting diff.' ; false) + after_script: + - sccache --stop-server || true + variables: + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + artifacts: + expire_in: 1 hour + paths: + - _build/default/client-libs/bin_codec_kaitai/codec.exe + when: on_success + +kaitai_e2e_checks: + image: ${client_libs_dependencies_image_name}:${client_libs_dependencies_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - client-libs/*kaitai*/**/* + - images/**/* + - scripts/ci/**/* + - src/**/* + when: on_success + needs: + - oc.docker:client-libs-dependencies + - kaitai_checks + dependencies: + - oc.docker:client-libs-dependencies + - kaitai_checks + before_script: + - . ./scripts/version.sh + - . ./scripts/install_build_deps.js.sh + script: + - ./client-libs/kaitai-struct-files/scripts/kaitai_e2e.sh client-libs/kaitai-struct-files/files + 2>/dev/null + +oc.check_lift_limits_patch: + image: ${ci_image_name}/build:${ci_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - src/bin_tps_evaluation/lift_limits.patch + - src/proto_alpha/lib_protocol/main.ml + when: on_success + needs: + - oc.docker:ci:amd64 + - trigger + dependencies: + - oc.docker:ci:amd64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + before_script: + - . ./scripts/version.sh + - eval $(opam env) + - . ./scripts/ci/sccache-start.sh + script: + - '[ $(git apply --numstat src/bin_tps_evaluation/lift_limits.patch | cut -f3) = + "src/proto_alpha/lib_protocol/main.ml" ]' + - git apply src/bin_tps_evaluation/lift_limits.patch + - dune build @src/proto_alpha/lib_protocol/check + after_script: + - sccache --stop-server || true + variables: + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + +oc.misc_checks: + image: ${ci_image_name}/test:${ci_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - client-libs/**/* + - contrib/**/* + - devtools/**/* + - docs/**/* + - etherlink/**/* + - scripts/**/* + - src/**/* + - tezt/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - trigger + dependencies: + - oc.docker:ci:amd64 + before_script: + - ./scripts/ci/take_ownership.sh + - . ./scripts/version.sh + - eval $(opam env) + - . $HOME/.venv/bin/activate + script: + - ./scripts/ci/lint_misc_check.sh + - scripts/check_wasm_pvm_regressions.sh check + - etherlink/scripts/check_evm_store_migrations.sh check + - ./scripts/ci/lint_check_licenses.sh + +oc.python_check: + image: ${ci_image_name}/test:${ci_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - '**/*.py' + - .gitlab-ci.yml + - .gitlab/**/* + - poetry.lock + - pyproject.toml + when: on_success + needs: + - oc.docker:ci:amd64 + - trigger + dependencies: + - oc.docker:ci:amd64 + before_script: + - ./scripts/ci/take_ownership.sh + - . ./scripts/version.sh + - . $HOME/.venv/bin/activate + script: + - ./scripts/ci/lint_misc_python_check.sh + +oc.ocaml_fmt: + image: ${ci_image_name}/build:${ci_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - '**/*.ml' + - '**/*.mli' + - '**/.ocamlformat' + - .gitlab-ci.yml + - .gitlab/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - trigger + dependencies: + - oc.docker:ci:amd64 + before_script: + - ./scripts/ci/take_ownership.sh + - . ./scripts/version.sh + - eval $(opam env) + script: + - scripts/lint.sh --check-ocamlformat + - dune build --profile=dev @fmt + +oc.semgrep: + image: returntocorp/semgrep-agent:sha-c6cd7cf + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - devtools/**/* + - scripts/semgrep/**/* + - src/**/* + - tezt/**/* + when: on_success + needs: + - trigger + dependencies: [] + script: + - echo "OCaml code linting. For information on how to reproduce locally, check out + scripts/semgrep/README.md" + - sh ./scripts/semgrep/lint-all-ocaml-sources.sh + +oc.integration:compiler-rejections: + image: ${ci_image_name}/build:${ci_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - data-encoding/**/* + - etherlink/**/* + - irmin/**/* + - michelson_test_scripts/**/* + - resto/**/* + - src/**/* + - tezt/**/* + - tzt_reference_test_suite/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + dependencies: + - oc.docker:ci:amd64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + before_script: + - . ./scripts/version.sh + - eval $(opam env) + - . ./scripts/ci/sccache-start.sh + script: + - dune build @runtest_rejections + after_script: + - sccache --stop-server || true + variables: + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + +oc.script:test-gen-genesis: + image: ${ci_image_name}/build:${ci_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - data-encoding/**/* + - etherlink/**/* + - irmin/**/* + - michelson_test_scripts/**/* + - resto/**/* + - src/**/* + - tezt/**/* + - tzt_reference_test_suite/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - trigger + dependencies: + - oc.docker:ci:amd64 + before_script: + - eval $(opam env) + - cd scripts/gen-genesis + script: + - dune build gen_genesis.exe + +oc.script:snapshot_alpha_and_link: + image: ${ci_image_name}/build:${ci_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - scripts/snapshot_alpha.sh + - scripts/snapshot_alpha_and_link.sh + - scripts/user_activated_upgrade.sh + - src/proto_alpha/**/* + when: on_success + needs: + - job: oc.docker:ci:amd64 + - job: trigger + - job: oc.build_x86_64-released + optional: true + - job: oc.build_x86_64-exp-dev-extra + optional: true + dependencies: + - oc.docker:ci:amd64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + - key: dune-build-cache-$CI_PIPELINE_ID + paths: + - $CI_PROJECT_DIR/_dune_cache + policy: pull + before_script: + - ./scripts/ci/take_ownership.sh + - . ./scripts/version.sh + - eval $(opam env) + - . ./scripts/ci/sccache-start.sh + script: + - ./scripts/ci/script:snapshot_alpha_and_link.sh + after_script: + - sccache --stop-server || true + variables: + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + DUNE_CACHE: enabled + DUNE_CACHE_STORAGE_MODE: hardlink + DUNE_CACHE_ROOT: $CI_PROJECT_DIR/_dune_cache + +oc.script:test_octez_release_versions: + image: ${ci_image_name}/build:${ci_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - data-encoding/**/* + - etherlink/**/* + - irmin/**/* + - michelson_test_scripts/**/* + - resto/**/* + - src/**/* + - tezt/**/* + - tzt_reference_test_suite/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + dependencies: + - oc.docker:ci:amd64 + before_script: + - ./scripts/ci/take_ownership.sh + - . ./scripts/version.sh + - eval $(opam env) + script: + - ./scripts/test_octez_release_version.sh + +oc.script:b58_prefix: + image: ${ci_image_name}/test:${ci_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - scripts/b58_prefix/b58_prefix.py + - scripts/b58_prefix/test_b58_prefix.py + when: on_success + needs: + - oc.docker:ci:amd64 + - trigger + dependencies: + - oc.docker:ci:amd64 + before_script: + - . ./scripts/version.sh + - . $HOME/.venv/bin/activate + script: + - poetry run pylint scripts/b58_prefix/b58_prefix.py --disable=missing-docstring + --disable=invalid-name + - poetry run pytest scripts/b58_prefix/test_b58_prefix.py + +oc.test-liquidity-baking-scripts: + image: ${ci_image_name}/build:${ci_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - scripts/check-liquidity-baking-scripts.sh + - scripts/ci/test_liquidity_baking_scripts.sh + - src/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + dependencies: + - oc.docker:ci:amd64 + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + before_script: + - . ./scripts/version.sh + - eval $(opam env) + script: + - ./scripts/ci/test_liquidity_baking_scripts.sh + +test_kernels: + image: ${rust_toolchain_image_name}:${rust_toolchain_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - images/**/* + - kernels.mk + - src/kernel_*/**/* + when: on_success + needs: + - oc.docker:rust-toolchain:amd64 + - oc.build_kernels + dependencies: + - oc.docker:rust-toolchain:amd64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + before_script: + - . ./scripts/ci/sccache-start.sh + script: + - make -f kernels.mk check + - make -f kernels.mk test + after_script: + - sccache --stop-server || true + variables: + CC: clang + NATIVE_TARGET: x86_64-unknown-linux-musl + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + +test_etherlink_kernel: + image: ${rust_toolchain_image_name}:${rust_toolchain_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - etherlink.mk + - etherlink/**/*.rs + - images/**/* + - src/kernel_sdk/**/* + when: on_success + needs: + - oc.docker:rust-toolchain:amd64 + - oc.build_kernels + dependencies: + - oc.docker:rust-toolchain:amd64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + before_script: + - . ./scripts/ci/sccache-start.sh + script: + - make -f etherlink.mk check + - make -f etherlink.mk test + after_script: + - sccache --stop-server || true + variables: + CC: clang + NATIVE_TARGET: x86_64-unknown-linux-musl + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + +test_etherlink_firehose: + image: ${rust_toolchain_image_name}:${rust_toolchain_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - etherlink/firehose/**/* + - etherlink/tezt/tests/evm_kernel_inputs/erc20tok.* + - images/**/* + when: on_success + needs: + - oc.docker:rust-toolchain:amd64 + - oc.build_kernels + dependencies: + - oc.docker:rust-toolchain:amd64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + before_script: + - . ./scripts/ci/sccache-start.sh + script: + - make -C etherlink/firehose check + after_script: + - sccache --stop-server || true + variables: + CC: clang + NATIVE_TARGET: x86_64-unknown-linux-musl + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + +check_riscv_kernels: + image: ${rust_toolchain_image_name}:${rust_toolchain_image_tag} + stage: build + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - images/**/* + - src/kernel_sdk/**/* + - src/riscv/**/* + when: on_success + dependencies: + - oc.docker:rust-toolchain:amd64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + before_script: + - . ./scripts/ci/sccache-start.sh + script: + - make -C src/riscv check + after_script: + - sccache --stop-server || true + variables: + CC: clang + NATIVE_TARGET: x86_64-unknown-linux-musl + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + +test_riscv_kernels: + image: ${rust_toolchain_image_name}:${rust_toolchain_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - images/**/* + - src/kernel_sdk/**/* + - src/riscv/**/* + when: on_success + needs: + - oc.docker:rust-toolchain:amd64 + - check_riscv_kernels + dependencies: + - oc.docker:rust-toolchain:amd64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + before_script: + - . ./scripts/ci/sccache-start.sh + script: + - make -C src/riscv test + - make -C src/riscv audit + after_script: + - sccache --stop-server || true + variables: + CC: clang + NATIVE_TARGET: x86_64-unknown-linux-musl + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + +test_evm_compatibility: + image: ${rust_toolchain_image_name}:${rust_toolchain_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - etherlink.mk + - etherlink/kernel_evm/evm_evaluation/**/* + - etherlink/kernel_evm/evm_execution/**/* + - images/**/* + when: on_success + needs: + - oc.docker:rust-toolchain:amd64 + - oc.build_kernels + dependencies: + - oc.docker:rust-toolchain:amd64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + before_script: + - . ./scripts/ci/sccache-start.sh + script: + - make -f etherlink.mk EVM_EVALUATION_FEATURES=disable-file-logs evm-evaluation-assessor + - git clone --depth 1 --branch v13 https://github.com/ethereum/tests ethereum_tests + - ./evm-evaluation-assessor --eth-tests ./ethereum_tests/ --resources ./etherlink/kernel_evm/evm_evaluation/resources/ + -c + after_script: + - sccache --stop-server || true + variables: + CC: clang + NATIVE_TARGET: x86_64-unknown-linux-musl + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + +oc.unit:non-proto-x86_64: + image: ${ci_image_name}/test:${ci_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - data-encoding/**/* + - etherlink/**/* + - irmin/**/* + - michelson_test_scripts/**/* + - resto/**/* + - src/**/* + - tezt/**/* + - tzt_reference_test_suite/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + dependencies: + - oc.docker:ci:amd64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + - key: dune-build-cache-$CI_PIPELINE_ID + paths: + - $CI_PROJECT_DIR/_dune_cache + policy: pull + before_script: + - . ./scripts/version.sh + - eval $(opam env) + - . ./scripts/ci/sccache-start.sh + script: + - make $MAKE_TARGETS + - ./scripts/ci/merge_coverage.sh + after_script: + - sccache --stop-server || true + variables: + ARCH: x86_64 + MAKE_TARGETS: test-nonproto-unit + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + DUNE_CACHE: enabled + DUNE_CACHE_STORAGE_MODE: hardlink + DUNE_CACHE_ROOT: $CI_PROJECT_DIR/_dune_cache + COVERAGE_OPTIONS: --instrument-with bisect_ppx + BISECT_FILE: $CI_PROJECT_DIR/_coverage_output/ + artifacts: + name: coverage-files-$CI_JOB_ID + expire_in: 1 day + paths: + - test_results + - $BISECT_FILE/$CI_JOB_NAME_SLUG.* + reports: + junit: test_results/*.xml + when: always + retry: 2 + +oc.unit:other-x86_64: + image: ${ci_image_name}/build:${ci_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - data-encoding/**/* + - etherlink/**/* + - irmin/**/* + - michelson_test_scripts/**/* + - resto/**/* + - src/**/* + - tezt/**/* + - tzt_reference_test_suite/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + dependencies: + - oc.docker:ci:amd64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + - key: dune-build-cache-$CI_PIPELINE_ID + paths: + - $CI_PROJECT_DIR/_dune_cache + policy: pull + before_script: + - . ./scripts/version.sh + - eval $(opam env) + - . ./scripts/ci/sccache-start.sh + script: + - make $MAKE_TARGETS + - ./scripts/ci/merge_coverage.sh + after_script: + - sccache --stop-server || true + variables: + ARCH: x86_64 + MAKE_TARGETS: test-other-unit + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + DUNE_CACHE: enabled + DUNE_CACHE_STORAGE_MODE: hardlink + DUNE_CACHE_ROOT: $CI_PROJECT_DIR/_dune_cache + COVERAGE_OPTIONS: --instrument-with bisect_ppx + BISECT_FILE: $CI_PROJECT_DIR/_coverage_output/ + artifacts: + name: coverage-files-$CI_JOB_ID + expire_in: 1 day + paths: + - test_results + - $BISECT_FILE/$CI_JOB_NAME_SLUG.* + reports: + junit: test_results/*.xml + when: always + retry: 2 + +oc.unit:proto-x86_64: + image: ${ci_image_name}/build:${ci_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - data-encoding/**/* + - etherlink/**/* + - irmin/**/* + - michelson_test_scripts/**/* + - resto/**/* + - src/**/* + - tezt/**/* + - tzt_reference_test_suite/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + dependencies: + - oc.docker:ci:amd64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + - key: dune-build-cache-$CI_PIPELINE_ID + paths: + - $CI_PROJECT_DIR/_dune_cache + policy: pull + before_script: + - . ./scripts/version.sh + - eval $(opam env) + - . ./scripts/ci/sccache-start.sh + script: + - make $MAKE_TARGETS + - ./scripts/ci/merge_coverage.sh + after_script: + - sccache --stop-server || true + variables: + ARCH: x86_64 + MAKE_TARGETS: test-proto-unit + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + DUNE_CACHE: enabled + DUNE_CACHE_STORAGE_MODE: hardlink + DUNE_CACHE_ROOT: $CI_PROJECT_DIR/_dune_cache + COVERAGE_OPTIONS: --instrument-with bisect_ppx + BISECT_FILE: $CI_PROJECT_DIR/_coverage_output/ + artifacts: + name: coverage-files-$CI_JOB_ID + expire_in: 1 day + paths: + - test_results + - $BISECT_FILE/$CI_JOB_NAME_SLUG.* + reports: + junit: test_results/*.xml + when: always + retry: 2 + +oc.unit:non-proto-arm64: + image: ${ci_image_name}/test:${ci_image_tag} + stage: test + tags: + - gcp_arm64 + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - data-encoding/**/* + - etherlink/**/* + - irmin/**/* + - michelson_test_scripts/**/* + - resto/**/* + - src/**/* + - tezt/**/* + - tzt_reference_test_suite/**/* + when: on_success + needs: + - oc.docker:ci:arm64 + - oc.build_arm64-released + - oc.build_arm64-exp-dev-extra + dependencies: + - oc.docker:ci:arm64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + before_script: + - . ./scripts/version.sh + - eval $(opam env) + - . ./scripts/ci/sccache-start.sh + script: + - make $MAKE_TARGETS + after_script: + - sccache --stop-server || true + variables: + ARCH: arm64 + MAKE_TARGETS: test-nonproto-unit test-webassembly + DISTRIBUTE_TESTS_TO_PARALLELS: "true" + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + artifacts: + name: $CI_JOB_NAME-$CI_COMMIT_SHA-${ARCH} + expire_in: 1 day + paths: + - test_results + reports: + junit: test_results/*.xml + when: always + retry: 2 + parallel: 2 + +oc.unit:webassembly-x86_64: + image: ${ci_image_name}/test:${ci_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - data-encoding/**/* + - etherlink/**/* + - irmin/**/* + - michelson_test_scripts/**/* + - resto/**/* + - src/**/* + - tezt/**/* + - tzt_reference_test_suite/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + dependencies: + - oc.docker:ci:amd64 + timeout: 20 minutes + before_script: + - . ./scripts/version.sh + - eval $(opam env) + script: + - make test-webassembly + +oc.unit:protocol_compiles: + image: ${ci_image_name}/build:${ci_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - data-encoding/**/* + - etherlink/**/* + - irmin/**/* + - michelson_test_scripts/**/* + - resto/**/* + - src/**/* + - tezt/**/* + - tzt_reference_test_suite/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + dependencies: + - oc.docker:ci:amd64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + before_script: + - . ./scripts/version.sh + - eval $(opam env) + - . ./scripts/ci/sccache-start.sh + script: + - dune build @runtest_compile_protocol + after_script: + - sccache --stop-server || true + variables: + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + +de.unit:x86_64: + image: ${ci_image_name}/test:${ci_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - data-encoding/** + when: on_success + needs: + - oc.docker:ci:amd64 + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + dependencies: + - oc.docker:ci:amd64 + before_script: + - eval $(opam env) + script: + - dune runtest data-encoding + +de.unit:arm64: + image: ${ci_image_name}/test:${ci_image_tag} + stage: test + tags: + - gcp_arm64 + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - data-encoding/** + when: on_success + needs: + - oc.docker:ci:arm64 + - oc.build_arm64-released + - oc.build_arm64-exp-dev-extra + dependencies: + - oc.docker:ci:arm64 + before_script: + - eval $(opam env) + script: + - dune runtest data-encoding + +resto.unit:x86_64: + image: ${ci_image_name}/test:${ci_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - resto/** + when: on_success + needs: + - oc.docker:ci:amd64 + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + dependencies: + - oc.docker:ci:amd64 + before_script: + - eval $(opam env) + script: + - dune runtest resto + +resto.unit:arm64: + image: ${ci_image_name}/test:${ci_image_tag} + stage: test + tags: + - gcp_arm64 + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - resto/** + when: on_success + needs: + - oc.docker:ci:arm64 + - oc.build_arm64-released + - oc.build_arm64-exp-dev-extra + dependencies: + - oc.docker:ci:arm64 + before_script: + - eval $(opam env) + script: + - dune runtest resto + +oc.install_opam_jammy: + image: ocaml/opam:ubuntu-22.04 + stage: test + tags: + - gcp + rules: + - when: manual + allow_failure: true + needs: + - trigger + dependencies: [] + allow_failure: true + timeout: 2 hours + script: + - ./docs/introduction/install-opam.sh + variables: + OPAMJOBS: "4" + +oc.compile_sources_doc_bookworm: + image: ocaml/opam:debian-12 + stage: test + tags: + - gcp + rules: + - changes: + - docs/introduction/compile-sources.sh + when: on_success + - when: manual + allow_failure: true + needs: + - trigger + dependencies: [] + script: + - ./docs/introduction/compile-sources.sh ${CI_MERGE_REQUEST_SOURCE_PROJECT_PATH:-tezos/tezos} + ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:-master} + variables: + CARGO_HOME: /home/opam/.cargo + CARGO_NET_OFFLINE: "false" + +tezt: + image: ${ci_image_name}/e2etest:${ci_image_tag} + stage: test + tags: + - gcp_tezt + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - data-encoding/**/* + - etherlink/**/* + - irmin/**/* + - michelson_test_scripts/**/* + - resto/**/* + - src/**/* + - tezt/**/* + - tzt_reference_test_suite/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - select_tezts + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + - oc.build_kernels + - oc.tezt:fetch-records + dependencies: + - oc.docker:ci:amd64 + - select_tezts + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + - oc.build_kernels + - oc.tezt:fetch-records + timeout: 40 minutes + before_script: + - . ./scripts/version.sh + - eval $(opam env) + script: + - echo "TESTS=\"${TESTS}\" JUNIT=\"${JUNIT}\" CI_NODE_INDEX=\"${CI_NODE_INDEX}\" + CI_NODE_TOTAL=\"${CI_NODE_TOTAL}\" TEZT_PARALLEL=\"${TEZT_PARALLEL}\" TEZT_VARIANT=\"${TEZT_VARIANT}\"" + - ./scripts/ci/tezt.sh "${TESTS}" --from-record tezt/records --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} + --list-tsv > selected_tezts.tsv + - ./scripts/ci/exit_code.sh timeout -k 60 1860 ./scripts/ci/tezt.sh "${TESTS}" --color + --log-buffer-size 5000 --log-file tezt.log --global-timeout 1800 --on-unknown-regression-files + fail --junit ${JUNIT} --from-record tezt/records --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} + --record tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json --job-count ${TEZT_PARALLEL} + --retry ${TEZT_RETRY} + - ./scripts/ci/merge_coverage.sh + variables: + JUNIT: tezt-junit.xml + TEZT_VARIANT: "" + TESTS: /ci_disabled && /memory_3k && /memory_4k && /time_sensitive && /slow && + /cloud && /flaky + TEZT_RETRY: "1" + TEZT_PARALLEL: "3" + BISECT_FILE: $CI_PROJECT_DIR/_coverage_output/ + artifacts: + name: coverage-files-$CI_JOB_ID + expire_in: 7 days + paths: + - selected_tezts.tsv + - tezt.log + - tezt-*.log + - tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json + - $JUNIT + - $BISECT_FILE/$CI_JOB_NAME_SLUG.* + reports: + junit: $JUNIT + when: always + retry: 2 + parallel: 100 + +tezt-memory-3k: + image: ${ci_image_name}/e2etest:${ci_image_tag} + stage: test + tags: + - gcp_tezt + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - data-encoding/**/* + - etherlink/**/* + - irmin/**/* + - michelson_test_scripts/**/* + - resto/**/* + - src/**/* + - tezt/**/* + - tzt_reference_test_suite/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - select_tezts + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + - oc.build_kernels + - oc.tezt:fetch-records + dependencies: + - oc.docker:ci:amd64 + - select_tezts + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + - oc.build_kernels + - oc.tezt:fetch-records + before_script: + - . ./scripts/version.sh + - eval $(opam env) + script: + - echo "TESTS=\"${TESTS}\" JUNIT=\"${JUNIT}\" CI_NODE_INDEX=\"${CI_NODE_INDEX}\" + CI_NODE_TOTAL=\"${CI_NODE_TOTAL}\" TEZT_PARALLEL=\"${TEZT_PARALLEL}\" TEZT_VARIANT=\"${TEZT_VARIANT}\"" + - ./scripts/ci/tezt.sh "${TESTS}" --from-record tezt/records --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} + --list-tsv > selected_tezts.tsv + - ./scripts/ci/exit_code.sh timeout -k 60 1860 ./scripts/ci/tezt.sh "${TESTS}" --color + --log-buffer-size 5000 --log-file tezt.log --global-timeout 1800 --on-unknown-regression-files + fail --junit ${JUNIT} --from-record tezt/records --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} + --record tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json --job-count ${TEZT_PARALLEL} + --retry ${TEZT_RETRY} + - ./scripts/ci/merge_coverage.sh + variables: + JUNIT: tezt-junit.xml + TEZT_VARIANT: -memory_3k + TESTS: memory_3k && /ci_disabled && /memory_4k && /time_sensitive && /slow && + /cloud + TEZT_RETRY: "1" + TEZT_PARALLEL: "1" + BISECT_FILE: $CI_PROJECT_DIR/_coverage_output/ + artifacts: + name: coverage-files-$CI_JOB_ID + expire_in: 7 days + paths: + - selected_tezts.tsv + - tezt.log + - tezt-*.log + - tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json + - $JUNIT + - $BISECT_FILE/$CI_JOB_NAME_SLUG.* + reports: + junit: $JUNIT + when: always + retry: 2 + parallel: 6 + +tezt-memory-4k: + image: ${ci_image_name}/e2etest:${ci_image_tag} + stage: test + tags: + - gcp_tezt + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - data-encoding/**/* + - etherlink/**/* + - irmin/**/* + - michelson_test_scripts/**/* + - resto/**/* + - src/**/* + - tezt/**/* + - tzt_reference_test_suite/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - select_tezts + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + - oc.build_kernels + - oc.tezt:fetch-records + dependencies: + - oc.docker:ci:amd64 + - select_tezts + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + - oc.build_kernels + - oc.tezt:fetch-records + before_script: + - . ./scripts/version.sh + - eval $(opam env) + script: + - echo "TESTS=\"${TESTS}\" JUNIT=\"${JUNIT}\" CI_NODE_INDEX=\"${CI_NODE_INDEX}\" + CI_NODE_TOTAL=\"${CI_NODE_TOTAL}\" TEZT_PARALLEL=\"${TEZT_PARALLEL}\" TEZT_VARIANT=\"${TEZT_VARIANT}\"" + - ./scripts/ci/tezt.sh "${TESTS}" --from-record tezt/records --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} + --list-tsv > selected_tezts.tsv + - ./scripts/ci/exit_code.sh timeout -k 60 1860 ./scripts/ci/tezt.sh "${TESTS}" --color + --log-buffer-size 5000 --log-file tezt.log --global-timeout 1800 --on-unknown-regression-files + fail --junit ${JUNIT} --from-record tezt/records --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} + --record tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json --job-count ${TEZT_PARALLEL} + --retry ${TEZT_RETRY} + - ./scripts/ci/merge_coverage.sh + variables: + JUNIT: tezt-junit.xml + TEZT_VARIANT: -memory_4k + TESTS: memory_4k && /ci_disabled && /memory_3k && /time_sensitive && /slow && + /cloud + TEZT_RETRY: "1" + TEZT_PARALLEL: "1" + BISECT_FILE: $CI_PROJECT_DIR/_coverage_output/ + artifacts: + name: coverage-files-$CI_JOB_ID + expire_in: 7 days + paths: + - selected_tezts.tsv + - tezt.log + - tezt-*.log + - tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json + - $JUNIT + - $BISECT_FILE/$CI_JOB_NAME_SLUG.* + reports: + junit: $JUNIT + when: always + retry: 2 + parallel: 4 + +tezt-time-sensitive: + image: ${ci_image_name}/e2etest:${ci_image_tag} + stage: test + tags: + - gcp_tezt + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - data-encoding/**/* + - etherlink/**/* + - irmin/**/* + - michelson_test_scripts/**/* + - resto/**/* + - src/**/* + - tezt/**/* + - tzt_reference_test_suite/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - select_tezts + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + - oc.build_kernels + - oc.tezt:fetch-records + dependencies: + - oc.docker:ci:amd64 + - select_tezts + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + - oc.build_kernels + - oc.tezt:fetch-records + before_script: + - . ./scripts/version.sh + - eval $(opam env) + script: + - echo "TESTS=\"${TESTS}\" JUNIT=\"${JUNIT}\" CI_NODE_INDEX=\"${CI_NODE_INDEX}\" + CI_NODE_TOTAL=\"${CI_NODE_TOTAL}\" TEZT_PARALLEL=\"${TEZT_PARALLEL}\" TEZT_VARIANT=\"${TEZT_VARIANT}\"" + - ./scripts/ci/tezt.sh "${TESTS}" --from-record tezt/records --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} + --list-tsv > selected_tezts.tsv + - ./scripts/ci/exit_code.sh timeout -k 60 1860 ./scripts/ci/tezt.sh "${TESTS}" --color + --log-buffer-size 5000 --log-file tezt.log --global-timeout 1800 --on-unknown-regression-files + fail --junit ${JUNIT} --from-record tezt/records --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} + --record tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json --job-count ${TEZT_PARALLEL} + --retry ${TEZT_RETRY} + - ./scripts/ci/merge_coverage.sh + variables: + JUNIT: tezt-junit.xml + TEZT_VARIANT: -time_sensitive + TESTS: time_sensitive && /ci_disabled && /memory_3k && /memory_4k && /slow && + /cloud + TEZT_RETRY: "1" + TEZT_PARALLEL: "1" + BISECT_FILE: $CI_PROJECT_DIR/_coverage_output/ + artifacts: + name: coverage-files-$CI_JOB_ID + expire_in: 7 days + paths: + - selected_tezts.tsv + - tezt.log + - tezt-*.log + - tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json + - $JUNIT + - $BISECT_FILE/$CI_JOB_NAME_SLUG.* + reports: + junit: $JUNIT + when: always + retry: 2 + +tezt-slow: + image: ${ci_image_name}/e2etest:${ci_image_tag} + stage: test + tags: + - gcp_tezt + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - data-encoding/**/* + - etherlink/**/* + - irmin/**/* + - michelson_test_scripts/**/* + - resto/**/* + - src/**/* + - tezt/**/* + - tzt_reference_test_suite/**/* + when: manual + allow_failure: true + needs: + - oc.docker:ci:amd64 + - select_tezts + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + - oc.build_kernels + - oc.tezt:fetch-records + dependencies: + - oc.docker:ci:amd64 + - select_tezts + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + - oc.build_kernels + - oc.tezt:fetch-records + before_script: + - . ./scripts/version.sh + - eval $(opam env) + script: + - echo "TESTS=\"${TESTS}\" JUNIT=\"${JUNIT}\" CI_NODE_INDEX=\"${CI_NODE_INDEX}\" + CI_NODE_TOTAL=\"${CI_NODE_TOTAL}\" TEZT_PARALLEL=\"${TEZT_PARALLEL}\" TEZT_VARIANT=\"${TEZT_VARIANT}\"" + - ./scripts/ci/tezt.sh "${TESTS}" --from-record tezt/records --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} + --list-tsv > selected_tezts.tsv + - ./scripts/ci/exit_code.sh timeout -k 60 1860 ./scripts/ci/tezt.sh "${TESTS}" --color + --log-buffer-size 5000 --log-file tezt.log --global-timeout 1800 --on-unknown-regression-files + fail --junit ${JUNIT} --from-record tezt/records --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} + --record tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json --job-count ${TEZT_PARALLEL} + --retry ${TEZT_RETRY} + variables: + JUNIT: tezt-junit.xml + TEZT_VARIANT: -slow + TESTS: slow && /ci_disabled && /memory_3k && /memory_4k && /time_sensitive && + /cloud && not (file = src/proto_019_PtParisA/lib_protocol/test/integration/test_adaptive_issuance_launch.ml) + TEZT_RETRY: "1" + TEZT_PARALLEL: "3" + artifacts: + expire_in: 7 days + paths: + - selected_tezts.tsv + - tezt.log + - tezt-*.log + - tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json + - $JUNIT + reports: + junit: $JUNIT + when: always + retry: 2 + parallel: 10 + +tezt-flaky: + image: ${ci_image_name}/e2etest:${ci_image_tag} + stage: test + tags: + - gcp_tezt + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - data-encoding/**/* + - etherlink/**/* + - irmin/**/* + - michelson_test_scripts/**/* + - resto/**/* + - src/**/* + - tezt/**/* + - tzt_reference_test_suite/**/* + when: manual + allow_failure: true + needs: + - oc.docker:ci:amd64 + - select_tezts + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + - oc.build_kernels + - oc.tezt:fetch-records + dependencies: + - oc.docker:ci:amd64 + - select_tezts + - oc.build_x86_64-released + - oc.build_x86_64-exp-dev-extra + - oc.build_kernels + - oc.tezt:fetch-records + before_script: + - . ./scripts/version.sh + - eval $(opam env) + script: + - echo "TESTS=\"${TESTS}\" JUNIT=\"${JUNIT}\" CI_NODE_INDEX=\"${CI_NODE_INDEX}\" + CI_NODE_TOTAL=\"${CI_NODE_TOTAL}\" TEZT_PARALLEL=\"${TEZT_PARALLEL}\" TEZT_VARIANT=\"${TEZT_VARIANT}\"" + - ./scripts/ci/tezt.sh "${TESTS}" --from-record tezt/records --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} + --list-tsv > selected_tezts.tsv + - ./scripts/ci/exit_code.sh timeout -k 60 1860 ./scripts/ci/tezt.sh "${TESTS}" --color + --log-buffer-size 5000 --log-file tezt.log --global-timeout 1800 --on-unknown-regression-files + fail --junit ${JUNIT} --from-record tezt/records --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} + --record tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json --job-count ${TEZT_PARALLEL} + --retry ${TEZT_RETRY} + - ./scripts/ci/merge_coverage.sh + variables: + JUNIT: tezt-junit.xml + TEZT_VARIANT: -flaky + TESTS: /ci_disabled && /memory_3k && /memory_4k && /time_sensitive && /slow && + /cloud && flaky + TEZT_RETRY: "3" + TEZT_PARALLEL: "1" + BISECT_FILE: $CI_PROJECT_DIR/_coverage_output/ + artifacts: + name: coverage-files-$CI_JOB_ID + expire_in: 7 days + paths: + - selected_tezts.tsv + - tezt.log + - tezt-*.log + - tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json + - $JUNIT + - $BISECT_FILE/$CI_JOB_NAME_SLUG.* + reports: + junit: $JUNIT + when: always + retry: 2 + +tezt:static-binaries: + image: ${ci_image_name}/e2etest:${ci_image_tag} + stage: test + tags: + - gcp + rules: + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - data-encoding/**/* + - etherlink/**/* + - irmin/**/* + - michelson_test_scripts/**/* + - resto/**/* + - src/**/* + - tezt/**/* + - tzt_reference_test_suite/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - select_tezts + - oc.build_x86_64-exp-dev-extra + - oc.build:static-x86_64-linux-binaries + - oc.tezt:fetch-records + dependencies: + - oc.docker:ci:amd64 + - select_tezts + - oc.build_x86_64-exp-dev-extra + - oc.build:static-x86_64-linux-binaries + - oc.tezt:fetch-records + before_script: + - mv octez-binaries/x86_64/octez-* . + script: + - echo "TESTS=\"${TESTS}\" JUNIT=\"${JUNIT}\" CI_NODE_INDEX=\"${CI_NODE_INDEX}\" + CI_NODE_TOTAL=\"${CI_NODE_TOTAL}\" TEZT_PARALLEL=\"${TEZT_PARALLEL}\" TEZT_VARIANT=\"${TEZT_VARIANT}\"" + - ./scripts/ci/tezt.sh "${TESTS}" --from-record tezt/records --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} + --list-tsv > selected_tezts.tsv + - ./scripts/ci/exit_code.sh timeout -k 60 1860 ./scripts/ci/tezt.sh "${TESTS}" --color + --log-buffer-size 5000 --log-file tezt.log --global-timeout 1800 --on-unknown-regression-files + fail --junit ${JUNIT} --from-record tezt/records --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} + --record tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json --job-count ${TEZT_PARALLEL} + --retry ${TEZT_RETRY} + variables: + JUNIT: tezt-junit.xml + TEZT_VARIANT: "" + TESTS: /ci_disabled && /memory_3k && /memory_4k && /time_sensitive && /slow && + /cloud && cli && /flaky + TEZT_RETRY: "1" + TEZT_PARALLEL: "3" + artifacts: + expire_in: 7 days + paths: + - selected_tezts.tsv + - tezt.log + - tezt-*.log + - tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json + - $JUNIT + reports: + junit: $JUNIT + when: always + +commit_titles: + image: ${ci_image_name}/prebuild:${ci_image_tag} + stage: test + tags: + - gcp + needs: + - oc.docker:ci:amd64 + - trigger + dependencies: + - oc.docker:ci:amd64 + allow_failure: + exit_codes: 65 + script: + - ./scripts/ci/check_commit_messages.sh || exit $? + +oc.unified_coverage: + image: ${ci_image_name}/e2etest:${ci_image_tag} + stage: test_coverage + tags: + - gcp + rules: + - if: $GITLAB_USER_LOGIN == "nomadic-margebot" || $CI_MERGE_REQUEST_ASSIGNEES =~ + /nomadic-margebot/ || $CI_MERGE_REQUEST_EVENT_TYPE == "merge_train" + when: never + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - data-encoding/**/* + - etherlink/**/* + - irmin/**/* + - michelson_test_scripts/**/* + - resto/**/* + - src/**/* + - tezt/**/* + - tzt_reference_test_suite/**/* + when: on_success + dependencies: + - oc.docker:ci:amd64 + - oc.unit:non-proto-x86_64 + - oc.unit:other-x86_64 + - oc.unit:proto-x86_64 + - tezt + - tezt-memory-3k + - tezt-memory-4k + - tezt-time-sensitive + - tezt-flaky + allow_failure: + exit_codes: 64 + script: + - ./scripts/ci/report_coverage.sh || exit $? + variables: + TEZOS_WITHOUT_OPAM: "true" + BISECT_FILE: $CI_PROJECT_DIR/_coverage_output/ + SLACK_COVERAGE_CHANNEL: C02PHBE7W73 + artifacts: + expire_in: 15 days + paths: + - _coverage_report/ + - $BISECT_FILE + reports: + coverage_report: + coverage_format: cobertura + path: _coverage_report/cobertura.xml + when: always + expose_as: Coverage report + coverage: '/Coverage: ([^%]+%)/' + +oc.install_python_bookworm: + image: debian:bookworm + stage: doc + tags: + - gcp + rules: + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--docs(?:$|,)/ + when: on_success + - changes: + - docs/developer/install-python-debian-ubuntu.sh + when: on_success + - when: manual + allow_failure: true + needs: + - trigger + dependencies: [] + script: + - ./docs/developer/install-python-debian-ubuntu.sh ${CI_MERGE_REQUEST_SOURCE_PROJECT_PATH:-tezos/tezos} + ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:-master} + +documentation:odoc: + image: ${ci_image_name}/test:${ci_image_tag} + stage: doc + tags: + - gcp + rules: + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--docs(?:$|,)/ + when: on_success + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - client-libs/**/* + - data-encoding/**/* + - docs/**/* + - dune + - dune-project + - dune-workspace + - etherlink/**/* + - irmin/**/* + - script-inputs/**/*/ + - scripts/**/*/ + - src/**/* + - tezt/**/* + - vendors/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - trigger + dependencies: + - oc.docker:ci:amd64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + before_script: + - eval $(opam env) + - . ./scripts/ci/sccache-start.sh + script: + - make -C docs odoc-lite + after_script: + - sccache --stop-server || true + variables: + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + artifacts: + expire_in: 1 hour + paths: + - docs/_build/api/odoc/ + - docs/odoc.log + when: always + +documentation:manuals: + image: ${ci_image_name}/test:${ci_image_tag} + stage: doc + tags: + - gcp + rules: + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--docs(?:$|,)/ + when: on_success + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - client-libs/**/* + - data-encoding/**/* + - docs/**/* + - dune + - dune-project + - dune-workspace + - etherlink/**/* + - irmin/**/* + - script-inputs/**/*/ + - scripts/**/*/ + - src/**/* + - tezt/**/* + - vendors/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - trigger + dependencies: + - oc.docker:ci:amd64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + before_script: + - eval $(opam env) + - . ./scripts/ci/sccache-start.sh + script: + - ./scripts/ci/documentation:manuals.sh + after_script: + - sccache --stop-server || true + variables: + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + artifacts: + expire_in: 1 week + paths: + - docs/*/octez-*.html + - docs/api/octez-*.txt + - docs/developer/metrics.csv + - docs/user/node-config.json + +documentation:docgen: + image: ${ci_image_name}/test:${ci_image_tag} + stage: doc + tags: + - gcp + rules: + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--docs(?:$|,)/ + when: on_success + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - client-libs/**/* + - data-encoding/**/* + - docs/**/* + - dune + - dune-project + - dune-workspace + - etherlink/**/* + - irmin/**/* + - script-inputs/**/*/ + - scripts/**/*/ + - src/**/* + - tezt/**/* + - vendors/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - trigger + dependencies: + - oc.docker:ci:amd64 + cache: + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + - key: sccache-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/_sccache + policy: pull-push + before_script: + - eval $(opam env) + - . ./scripts/ci/sccache-start.sh + script: + - make -C docs -j docexes-gen + after_script: + - sccache --stop-server || true + variables: + CARGO_NET_OFFLINE: "false" + SCCACHE_DIR: $CI_PROJECT_DIR/_sccache + artifacts: + expire_in: 1 week + paths: + - docs/alpha/rpc.rst + - docs/shell/rpc.rst + - docs/user/default-acl.json + - docs/api/errors.rst + - docs/shell/p2p_api.rst + +documentation:build_all: + image: ${ci_image_name}/test:${ci_image_tag} + stage: doc + tags: + - gcp + rules: + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--docs(?:$|,)/ + when: on_success + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - client-libs/**/* + - data-encoding/**/* + - docs/**/* + - dune + - dune-project + - dune-workspace + - etherlink/**/* + - irmin/**/* + - script-inputs/**/*/ + - scripts/**/*/ + - src/**/* + - tezt/**/* + - vendors/**/* + when: on_success + needs: + - oc.docker:ci:amd64 + - documentation:odoc + - documentation:manuals + - documentation:docgen + dependencies: + - oc.docker:ci:amd64 + - documentation:odoc + - documentation:manuals + - documentation:docgen + before_script: + - eval $(opam env) + - . $HOME/.venv/bin/activate + script: + - make -C docs -j sphinx + artifacts: + expire_in: 1 week + paths: + - docs/_build/ + expose_as: Documentation - excluding old protocols + +documentation:linkcheck: + image: ${ci_image_name}/test:${ci_image_tag} + stage: doc + tags: + - gcp + rules: + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--docs(?:$|,)/ + when: on_success + - changes: + - .gitlab-ci.yml + - .gitlab/**/* + - brassaia/**/* + - client-libs/**/* + - data-encoding/**/* + - docs/**/* + - dune + - dune-project + - dune-workspace + - etherlink/**/* + - irmin/**/* + - script-inputs/**/*/ + - scripts/**/*/ + - src/**/* + - tezt/**/* + - vendors/**/* + when: manual + allow_failure: true + needs: + - oc.docker:ci:amd64 + - documentation:manuals + - documentation:docgen + - documentation:build_all + dependencies: + - oc.docker:ci:amd64 + - documentation:manuals + - documentation:docgen + - documentation:build_all + allow_failure: true + before_script: + - . ./scripts/version.sh + - eval $(opam env) + - . $HOME/.venv/bin/activate + script: + - make -C docs redirectcheck + - make -C docs linkcheck + +oc.docker:amd64: + image: ${GCP_REGISTRY}/tezos/docker-images/ci-docker:v1.12.0 + stage: manual + tags: + - gcp + rules: + - when: manual + allow_failure: true + needs: + - oc.docker:rust-toolchain:amd64 + - oc.docker:ci:amd64 + dependencies: + - oc.docker:rust-toolchain:amd64 + - oc.docker:ci:amd64 + before_script: + - ./scripts/ci/docker_initialize.sh + script: + - ./scripts/ci/docker_release.sh + services: + - docker:${DOCKER_VERSION}-dind + variables: + DOCKER_VERSION: 24.0.6 + CI_DOCKER_HUB: "false" + DOCKER_BUILD_TARGET: with-evm-artifacts + IMAGE_ARCH_PREFIX: amd64_ + EXECUTABLE_FILES: script-inputs/released-executables script-inputs/experimental-executables + +oc.docker:arm64: + image: ${GCP_REGISTRY}/tezos/docker-images/ci-docker:v1.12.0 + stage: manual + tags: + - gcp_arm64 + rules: + - when: manual + allow_failure: true + needs: + - oc.docker:ci:arm64 + dependencies: + - oc.docker:ci:arm64 + before_script: + - ./scripts/ci/docker_initialize.sh + script: + - ./scripts/ci/docker_release.sh + services: + - docker:${DOCKER_VERSION}-dind + variables: + DOCKER_VERSION: 24.0.6 + CI_DOCKER_HUB: "false" + DOCKER_BUILD_TARGET: without-evm-artifacts + IMAGE_ARCH_PREFIX: arm64_ + EXECUTABLE_FILES: script-inputs/released-executables script-inputs/experimental-executables + +oc.build:rpm:amd64: + image: $DISTRIBUTION + stage: manual + tags: + - gcp + rules: + - when: manual + allow_failure: true + needs: [] + dependencies: [] + before_script: + - . ./scripts/version.sh + - ./scripts/ci/bin_packages_rpm_dependencies.sh + script: + - wget https://sh.rustup.rs/rustup-init.sh + - chmod +x rustup-init.sh + - ./rustup-init.sh --profile minimal --default-toolchain $recommended_rust_version + -y + - . $HOME/.cargo/env + - export OPAMYES="true" + - opam init --bare --disable-sandboxing + - make build-deps + - eval $(opam env) + - make $TARGET-$GROUP + - DISTRO=$(echo "$DISTRIBUTION" | cut -d':' -f1) + - RELEASE=$(echo "$DISTRIBUTION" | cut -d':' -f2) + - mkdir -p packages/$DISTRO/$RELEASE + - mv octez-*.* packages/$DISTRO/$RELEASE/ + variables: + TARGET: rpm + GROUP: A + OCTEZ_PKGMAINTAINER: nomadic-labs + BLST_PORTABLE: "yes" + ARCH: amd64 + CARGO_HOME: /root/.cargo + CARGO_NET_OFFLINE: "false" + artifacts: + name: ${TARGET}-$ARCH-$CI_COMMIT_REF_SLUG + expire_in: 1 day + paths: + - packages/ + when: on_success + parallel: + matrix: + - DISTRIBUTION: + - fedora:39 + - rockylinux:9.3 + +oc.build:homebrew: + image: debian:bookworm + stage: manual + tags: + - gcp + rules: + - when: manual + allow_failure: true + needs: [] + dependencies: [] + before_script: + - apt update && apt install -y curl git build-essential + - ./scripts/packaging/homebrew_install.sh + - eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" + - eval $(scripts/active_protocols.sh) + - sed "s|%%VERSION%%|0.0.0-dev| ; s|%%CI_MERGE_REQUEST_SOURCE_PROJECT_URL%%|$CI_MERGE_REQUEST_SOURCE_PROJECT_URL|; + s|%%CI_COMMIT_REF_NAME%%|$CI_COMMIT_REF_NAME|; s|%%CI_PROJECT_NAMESPACE%%|$CI_PROJECT_NAMESPACE|; + s|%%PROTO_CURRENT%%|$PROTO_CURRENT|; s|%%PROTO_NEXT%%|$PROTO_NEXT|" scripts/packaging/Formula/octez.rb.template + > scripts/packaging/Formula/octez.rb + script: + - apt install -y autoconf cmake libev-dev libffi-dev libgmp-dev libprotobuf-dev + libsqlite3-dev protobuf-compiler libhidapi-dev pkg-config zlib1g-dev + - brew install -v scripts/packaging/Formula/octez.rb + variables: + CARGO_NET_OFFLINE: "false" + +trigger:debian_repository_partial: + stage: manual + rules: + - when: manual + allow_failure: true + needs: [] + trigger: + include: .gitlab/ci/pipelines/debian_repository_partial.yml diff --git a/ci/bin/main.ml b/ci/bin/main.ml index 9ff2f0c1acaf..35edb16a9123 100644 --- a/ci/bin/main.ml +++ b/ci/bin/main.ml @@ -90,7 +90,14 @@ let () = in register "before_merging" - If.(on_tezos_namespace && merge_request) + If.(on_tezos_namespace && merge_request && not merge_train) + ~jobs:(Code_verification.jobs Before_merging) ; + (* The [merge_train] pipeline has the exact same jobs as the + [Before_merging] pipeline, but it auto-cancels on job failure. *) + register + "merge_train" + ~auto_cancel:{on_job_failure = true; on_new_commit = false} + If.(on_tezos_namespace && merge_request && merge_train) ~jobs:(Code_verification.jobs Before_merging) ; register "octez_latest_release" -- GitLab