From d46e08eda87bd4a3f77fdadf3a922b1c1e269088 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Tue, 12 Mar 2024 14:18:28 +0100 Subject: [PATCH 01/10] CI: Split CI configuration by pipeline type --- ci/bin/code_verification.ml | 227 +++++++ ci/bin/common.ml | 608 ++++++++++++++++++ ci/bin/main.ml | 1093 +------------------------------- ci/bin/master_branch.ml | 181 ++++++ ci/bin/octez_latest_release.ml | 26 + ci/bin/release_tag.ml | 139 ++++ 6 files changed, 1192 insertions(+), 1082 deletions(-) create mode 100644 ci/bin/code_verification.ml create mode 100644 ci/bin/common.ml create mode 100644 ci/bin/master_branch.ml create mode 100644 ci/bin/octez_latest_release.ml create mode 100644 ci/bin/release_tag.ml diff --git a/ci/bin/code_verification.ml b/ci/bin/code_verification.ml new file mode 100644 index 000000000000..607102afaadf --- /dev/null +++ b/ci/bin/code_verification.ml @@ -0,0 +1,227 @@ +(*****************************************************************************) +(* *) +(* SPDX-License-Identifier: MIT *) +(* Copyright (c) 2024 Nomadic Labs. *) +(* *) +(*****************************************************************************) + +(* This module defines the jobs of the [code_verification] pipeline. + + This pipeline comes in two variants: + + - The [before_merging] pipeline runs on merge requests. Jobs in + this pipeline are conditional on the set of [~changes] in the merge + request. The goal is to only run those jobs whose outcome is + affected by the merge request. + + - The [schedule_extended_test] pipeline runs daily on the [master] + branch. It contains a set of jobs that are too slow to run in merge + request pipelines and a large subset of the [before_merging] + pipeline in addition. This subset excludes jobs that are irrelevant + in a non-merge request context, like the commit title check. Jobs + in this pipeline should run [Always] -- unless they depend on + artifacts of another job in which case they should run + [On_success]. The goal of this pipeline is to catch any breaking + changes that might've slipped through the [before_merging] + pipeline. + + When adding new jobs to the [code_verification] pipeline, make sure + that it appears in both variants as applicable, with the + appropriate rules. *) + +open Gitlab_ci +open Gitlab_ci.Types +open Gitlab_ci.Util +open Tezos_ci +open Common + +(* Encodes the conditional [before_merging] pipeline and its unconditional variant + [schedule_extended_test]. *) +type code_verification_pipeline = Before_merging | Schedule_extended_test + +(* Encodes the conditional [before_merging] pipeline and its unconditional variant + [schedule_extended_test]. *) +let jobs pipeline_type = + (* Externalization *) + let job_external_split ?(before_merging_suffix = "before_merging") + ?(scheduled_suffix = "scheduled_extended_test") job = + job_external + ~filename_suffix: + (match pipeline_type with + | Before_merging -> before_merging_suffix + | Schedule_extended_test -> scheduled_suffix) + job + in + (* [make_rules] makes rules for jobs that are: + - automatic in scheduled pipelines; + - conditional in [before_merging] pipelines. + + If [label], [changes] and [manual] are omitted, then rules will + enable the job [On_success] in the [before_merging] + pipeline. This is safe, but prefer specifying a [changes] clause + if possible. *) + let make_rules ?label ?changes ?(manual = false) () = + match pipeline_type with + | Schedule_extended_test -> + (* The scheduled pipeline always runs all tests unconditionally. *) + [job_rule ~when_:Always ()] + | Before_merging -> + (* MR labels can be used to force tests to run. *) + (match label with + | Some label -> + [job_rule ~if_:Rules.(has_mr_label label) ~when_:On_success ()] + | None -> []) + (* Modifying some files can force tests to run. *) + @ (match changes with + | None -> [] + | Some changes -> [job_rule ~changes ~when_:On_success ()]) + (* For some tests, it can be relevant to have a manual trigger. *) + @ if manual then [job_rule ~when_:Manual ()] else [] + in + (* Stages *) + (* All stages should be empty, as explained below, until the full pipeline is generated. *) + let trigger, dependencies_needs_trigger = + match pipeline_type with + | Schedule_extended_test -> ([], Staged []) + | Before_merging -> + (* Define the [trigger] job + + §1: The purpose of this job is to launch the CI manually in certain cases. + The objective is not to run computing when it is not + necessary and the decision to do so belongs to the developer + + §2: We also perform some fast sanity checks. *) + let job_trigger = + job + ~__POS__ + ~image:Images.alpine + ~stage:Stages.trigger + ~allow_failure:No + ~rules: + [ + job_rule + ~if_:(If.not Rules.assigned_to_marge_bot) + ~allow_failure:No + ~when_:Manual + (); + job_rule ~when_:Always (); + ] + ~timeout:(Minutes 10) + ~name:"trigger" + [ + "echo 'Trigger pipeline!'"; + (* Check that [.gitlab-ci.yml]'s [build_deps_image_version] and + [scripts/version.sh]'s [opam_repository_tag] are the same. *) + "./scripts/ci/check_opam_repository_tag.sh"; + (* Check that the Alpine version of the trigger job's image + corresponds to the value in scripts/version.sh. *) + "./scripts/ci/check_alpine_version.sh"; + ] + |> job_external + in + (* TODO: put job_trigger here when full pipeline is generated *) + ([], Dependent [Optional job_trigger]) + in + let sanity = [] in + let job_docker_rust_toolchain = + job_docker_rust_toolchain + ~__POS__ + ~rules:(make_rules ~changes:changeset_octez_or_kernels ~manual:true ()) + ~dependencies:dependencies_needs_trigger + () + |> job_external_split + in + let build = + let build_arm_rules = make_rules ~label:"ci--arm64" ~manual:true () in + let _job_build_arm64_release : Tezos_ci.tezos_job = + job_build_arm64_release ~rules:build_arm_rules () |> job_external_split + in + let _job_build_arm64_exp_dev_extra : Tezos_ci.tezos_job = + job_build_arm64_exp_dev_extra ~rules:build_arm_rules () + |> job_external_split + in + let _job_static_x86_64_experimental = + job_build_static_binaries + ~__POS__ + ~arch:Amd64 + (* Even though not many tests depend on static executables, some + of those that do are limiting factors in the total duration + of pipelines. So we start this job as early as possible, + without waiting for sanity_ci. *) + ~dependencies:dependencies_needs_trigger + ~rules:(make_rules ~changes:changeset_octez ()) + () + |> job_external_split + in + (* TODO: The code is a bit convulted here because these jobs are + either in the build or in the manual stage depeneding on the + pipeline type. However, we can put them in the build stage on + [before_merging] pipelines as long as we're careful to put + [allow_failure: true]. *) + (match pipeline_type with + | Schedule_extended_test -> + let _job_build_dpkg_amd64 = job_build_dpkg_amd64 () |> job_external in + let _job_build_rpm_amd64 = job_build_rpm_amd64 () |> job_external in + () + | Before_merging -> ()) ; + (* TODO: include the jobs defined above when full pipeline is generated *) + [] + in + let packaging = [] in + let test = [] in + let doc = [] in + let manual = + match pipeline_type with + | Before_merging -> + let _job_docker_amd64_test_manual : Tezos_ci.tezos_job = + job_docker_build + ~__POS__ + ~external_:true + ~dependencies:(Dependent [Artifacts job_docker_rust_toolchain]) + ~arch:Amd64 + Test_manual + in + let _job_docker_arm64_test_manual : Tezos_ci.tezos_job = + job_docker_build + ~__POS__ + ~external_:true + ~dependencies:(Dependent [Artifacts job_docker_rust_toolchain]) + ~arch:Arm64 + Test_manual + in + let _job_build_dpkg_amd64_manual = + job_build_bin_package + ~__POS__ + ~name:"oc.build:dpkg:amd64" + ~target:Dpkg + ~arch:Tezos_ci.Amd64 + ~rules:[job_rule ~when_:Manual ()] + ~stage:Stages.manual + () + |> job_external ~directory:"build" ~filename_suffix:"manual" + in + let _job_build_rpm_amd64_manual = + job_build_bin_package + ~__POS__ + ~rules:[job_rule ~when_:Manual ()] + ~name:"oc.build:rpm:amd64" + ~target:Rpm + ~arch:Tezos_ci.Amd64 + ~stage:Stages.manual + () + |> job_external ~directory:"build" ~filename_suffix:"manual" + in + (* TODO: include the jobs defined above when full pipeline is generated *) + [] + (* No manual jobs on the scheduled pipeline *) + | Schedule_extended_test -> [] + in + (* Empty placeholder: this has the effect of not overwriting the pipeline file in question. + Once all the jobs in these pipelines are defined, we will return them here which + will cause the pipeline files to contain the definition of all those jobs. + + Until that time, all the jobs are written ot external files + (using {!job_external} or {!jobs_external}) and included by hand + in the files [.gitlab/ci/pipelines/before_merging.yml] and + [.gitlab/ci/pipelines/schedule_extended_test.yml]. *) + trigger @ sanity @ build @ packaging @ test @ doc @ manual diff --git a/ci/bin/common.ml b/ci/bin/common.ml new file mode 100644 index 000000000000..e7a1bb2e2771 --- /dev/null +++ b/ci/bin/common.ml @@ -0,0 +1,608 @@ +(*****************************************************************************) +(* *) +(* SPDX-License-Identifier: MIT *) +(* Copyright (c) 2024 Nomadic Labs. *) +(* *) +(*****************************************************************************) + +(* This module contains the definition of stages and Docker + images used by the Octez CI pipelines. + + It also defines: + - helpers for defining jobs; + - changesets shared by jobs; + - helpers for making jobs; + - jobs shared between pipelines *) + +open Gitlab_ci.Types +open Gitlab_ci.Util +open Tezos_ci + +(* Define [stages:] + + The "manual" stage exists to fix a UI problem that occurs when mixing + manual and non-manual jobs. *) +module Stages = struct + let trigger = Stage.register "trigger" + + let sanity = Stage.register "sanity" + + let build = Stage.register "build" + + let test = Stage.register "test" + + let test_coverage = Stage.register "test_coverage" + + let packaging = Stage.register "packaging" + + let doc = Stage.register "doc" + + let prepare_release = Stage.register "prepare_release" + + let publish_release_gitlab = Stage.register "publish_release_gitlab" + + let publish_release = Stage.register "publish_release" + + let publish_package_gitlab = Stage.register "publish_package_gitlab" + + let manual = Stage.register "manual" +end + +(* Get the [build_deps_image_version] from the environment, which is + typically set by sourcing [scripts/version.sh]. This is used to write + [build_deps_image_version] in the top-level [variables:], used to + specify the versions of the [build_deps] images. *) +let build_deps_image_version = + match Sys.getenv_opt "opam_repository_tag" with + | None -> + failwith + "Please set the environment variable [opam_repository_tag], by e.g. \ + sourcing [scripts/version.sh] before running." + | Some v -> v + +(* Get the [alpine_version] from the environment, which is typically + set by sourcing [scripts/version.sh]. This is used to set the tag + of the image {!Images.alpine}. *) +let alpine_version = + match Sys.getenv_opt "alpine_version" with + | None -> + failwith + "Please set the environment variable [alpine_version], by e.g. \ + sourcing [scripts/version.sh] before running." + | Some v -> v + +(* Register images. + + The set of registered images are written to + [.gitlab/ci/jobs/shared/images.yml] for interoperability with + hand-written .yml files. + + For documentation on the [runtime_X_dependencies] and the + [rust_toolchain] images, refer to + {{:https://gitlab.com/tezos/opam-repository/} + tezos/opam-repository}. *) +module Images = struct + let runtime_e2etest_dependencies = + Image.register + ~name:"runtime_e2etest_dependencies" + ~image_path: + "${build_deps_image_name}:runtime-e2etest-dependencies--${build_deps_image_version}" + + let runtime_build_test_dependencies = + Image.register + ~name:"runtime_build_test_dependencies" + ~image_path: + "${build_deps_image_name}:runtime-build-test-dependencies--${build_deps_image_version}" + + let runtime_build_dependencies = + Image.register + ~name:"runtime_build_dependencies" + ~image_path: + "${build_deps_image_name}:runtime-build-dependencies--${build_deps_image_version}" + + let runtime_prebuild_dependencies = + Image.register + ~name:"runtime_prebuild_dependencies" + ~image_path: + "${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version}" + + let client_libs_dependencies = + Image.register + ~name:"client_libs_dependencies" + ~image_path: + "${client_libs_dependencies_image_name}:${client_libs_dependencies_image_tag}" + + let rust_toolchain = + (* Warning: we are relying on ill-specified behavior from GitLab that allows + the expansion of dotenv variables (here: $rust_toolchain_image_tag) in + the image field. + See: https://gitlab.com/gitlab-org/gitlab-runner/-/issues/37361. *) + Image.register + ~name:"rust_toolchain" + ~image_path:"${rust_toolchain_image_name}:${rust_toolchain_image_tag}" + + (* Match GitLab executors version and directly use the Docker socket + The Docker daemon is already configured, experimental features are enabled + The following environment variables are already set: + - [BUILDKIT_PROGRESS] + - [DOCKER_DRIVER] + - [DOCKER_VERSION] + For more info, see {{:https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#use-docker-socket-binding}} here. + + This image is defined in {{:https://gitlab.com/tezos/docker-images/ci-docker}tezos/docker-images/ci-docker}. *) + let docker = + Image.register + ~name:"docker" + ~image_path:"${GCP_REGISTRY}/tezos/docker-images/ci-docker:v1.10.0" + + (* The Alpine version should be kept up to date with the version + used for the [build_deps_image_name] images and specified in the + variable [alpine_version] in [scripts/version.sh]. This is + checked by the jobs [trigger] and [sanity_ci]. *) + let alpine = + Image.register ~name:"alpine" ~image_path:("alpine:" ^ alpine_version) + + let debian_bookworm = + Image.register ~name:"debian_bookworm" ~image_path:"debian:bookworm" + + let fedora_39 = Image.register ~name:"fedora_39" ~image_path:"fedora:39" + + let ci_release = + Image.register + ~name:"ci_release" + ~image_path:"${GCP_REGISTRY}/tezos/docker-images/ci-release:v1.4.0" +end + +(** {2 Helpers} *) + +let before_script ?(take_ownership = false) ?(source_version = false) + ?(eval_opam = false) ?(init_python_venv = false) ?(install_js_deps = false) + before_script = + let toggle t x = if t then [x] else [] in + (* FIXME: https://gitlab.com/tezos/tezos/-/issues/2865 *) + toggle take_ownership "./scripts/ci/take_ownership.sh" + @ toggle source_version ". ./scripts/version.sh" + (* TODO: this must run in the before_script of all jobs that use the opam environment. + how to enforce? *) + @ toggle eval_opam "eval $(opam env)" + (* Load the environment poetry previously created in the docker image. + Give access to the Python dependencies/executables *) + @ toggle init_python_venv ". $HOME/.venv/bin/activate" + @ toggle install_js_deps ". ./scripts/install_build_deps.js.sh" + @ before_script + +(** Add variable for bisect_ppx instrumentation. + + This template should be extended by jobs that build OCaml targets + that should be instrumented for coverage output. This set of job + includes build jobs (like [oc.build_x86_64_*]). It also includes + OCaml unit test jobs like [oc.unit:*-x86_64] as they build the test + runners before their execution. *) +let enable_coverage_instrumentation : tezos_job -> tezos_job = + Tezos_ci.append_variables + [("COVERAGE_OPTIONS", "--instrument-with bisect_ppx")] + +(** Add variable specifying coverage trace storage. + + This function should be applied to jobs that either produce (like + test jobs) or consume (like the [unified_coverage] job) coverage + traces. In addition to specifying the location of traces, setting + this variable also _enables_ coverage trace output for + instrumented binaries. *) +let enable_coverage_location : tezos_job -> tezos_job = + Tezos_ci.append_variables + [("BISECT_FILE", "$CI_PROJECT_DIR/_coverage_output/")] + +let enable_coverage_report job : tezos_job = + job + |> Tezos_ci.add_artifacts + ~expose_as:"Coverage report" + ~reports: + (reports + ~coverage_report: + { + coverage_format = Cobertura; + path = "_coverage_report/cobertura.xml"; + } + ()) + ~expire_in:(Days 15) + ~when_:Always + ["_coverage_report/"; "$BISECT_FILE"] + |> Tezos_ci.append_variables [("SLACK_COVERAGE_CHANNEL", "C02PHBE7W73")] + +(** {2 Changesets} *) + +let changeset_octez = + [ + "src/**/*"; + "etherlink/**/*"; + "tezt/**/*"; + ".gitlab/**/*"; + ".gitlab-ci.yml"; + "michelson_test_scripts/**/*"; + "tzt_reference_test_suite/**/*"; + ] + +let changeset_octez_or_kernels = + ["images/**/*"; "scripts/ci/**/*"; "kernels.mk"; "etherlink.mk"] + @ changeset_octez + +let changeset_octez_docs = + [ + "scripts/**/*/"; + "script-inputs/**/*/"; + "src/**/*"; + "tezt/**/*"; + "vendors/**/*"; + "dune"; + "dune-project"; + "dune-workspace"; + "docs/**/*"; + ".gitlab/**/*"; + ".gitlab-ci.yml"; + ] + +let changeset_octez_docker_changes_or_master = + [ + "scripts/**/*"; + "script-inputs/**/*"; + "src/**/*"; + "tezt/**/*"; + "vendors/**/*"; + "dune"; + "dune-project"; + "dune-workspace"; + "opam"; + "Makefile"; + "kernels.mk"; + "build.Dockerfile"; + "Dockerfile"; + ".gitlab/**/*"; + ".gitlab-ci.yml"; + ] + +(** {2 Job makers} *) + +(** Helper to create jobs that uses the docker deamon. + + It: + - Sets the appropriate image. + - Activates the Docker daemon as a service. + - It sets up authentification with docker registries *) +let job_docker_authenticated ?(skip_docker_initialization = false) ?artifacts + ?variables ?rules ?dependencies ?arch ?when_ ?allow_failure ~__POS__ ~stage + ~name script : tezos_job = + let docker_version = "24.0.6" in + job + ?rules + ?dependencies + ?artifacts + ?arch + ?when_ + ?allow_failure + ~__POS__ + ~image:Images.docker + ~variables: + ([("DOCKER_VERSION", docker_version)] @ Option.value ~default:[] variables) + ~before_script: + (if not skip_docker_initialization then + ["./scripts/ci/docker_initialize.sh"] + else []) + ~services:[{name = "docker:${DOCKER_VERSION}-dind"}] + ~stage + ~name + script + +(* This version of the job builds both released and experimental executables. + It is used in the following pipelines: + - Before merging: check whether static executables still compile, + i.e. that we do pass the -static flag and that when we do it does compile + - Master branch: executables (including experimental ones) are used in some test networks + Variants: + - an arm64 variant exist, but is only used in the master branch pipeline + (no need to test that we pass the -static flag twice) + - released variants exist, that are used in release tag pipelines + (they do not build experimental executables) *) +let job_build_static_binaries ~__POS__ ~arch ?(release = false) ?rules + ?dependencies () : tezos_job = + let arch_string = match arch with Amd64 -> "x86_64" | Arm64 -> "arm64" in + let name = "oc.build:static-" ^ arch_string ^ "-linux-binaries" in + let artifacts = + (* Extend the lifespan to prevent failure for external tools using artifacts. *) + let expire_in = if release then Some (Days 90) else None in + artifacts ?expire_in ["octez-binaries/$ARCH/*"] + in + let executable_files = + "script-inputs/released-executables" + ^ if not release then " script-inputs/experimental-executables" else "" + in + job + ?rules + ?dependencies + ~__POS__ + ~stage:Stages.build + ~arch + ~name + ~image:Images.runtime_build_dependencies + ~before_script:(before_script ~take_ownership:true ~eval_opam:true []) + ~variables:[("ARCH", arch_string); ("EXECUTABLE_FILES", executable_files)] + ~artifacts + ["./scripts/ci/build_static_binaries.sh"] + +let job_docker_rust_toolchain ?rules ?dependencies ~__POS__ () = + job_docker_authenticated + ?rules + ?dependencies + ~__POS__ + ~skip_docker_initialization:true + ~stage:Stages.build + ~name:"oc.docker:rust-toolchain" + ~variables:[("CI_DOCKER_HUB", "false")] + ~artifacts: + (artifacts + ~reports:(reports ~dotenv:"rust_toolchain_image_tag.env" ()) + []) + ["./scripts/ci/docker_rust_toolchain_build.sh"] + +(** Type of Docker build jobs. + + The semantics of the type is summed up in this table: + + | | Release | Experimental | Test | Test_manual | + |-----------------------+------------+--------------+--------+-------------| + | Image registry | Docker hub | Docker hub | GitLab | GitLab | + | Experimental binaries | no | yes | yes | yes | + | EVM Kernels | no | On amd64 | no | On amd64 | + | Manual job | no | no | no | yes | + + - [Release] Docker builds include only released executables whereas other + types also includes experimental ones. + - [Test_manual] and [Experimental] Docker builds include the EVM kernels in + amd64 builds. + - [Release] and [Experimental] Docker builds are pushed to Docker hub, + whereas other types are pushed to the GitLab registry. + - [Test_manual] Docker builds are triggered manually, put in the stage + [manual] and their failure is allowed. The other types are in the build + stage, run [on_success] and are not allowed to fail. *) +type docker_build_type = Experimental | Release | Test | Test_manual + +(** Creates a Docker build job of the given [arch] and [docker_build_type]. + + If [external_] is set to true (default [false]), then the job is + also written to an external file. *) +let job_docker_build ?rules ?dependencies ~__POS__ ~arch ?(external_ = false) + docker_build_type : tezos_job = + let arch_string = match arch with Amd64 -> "amd64" | Arm64 -> "arm64" in + let variables = + [ + ( "DOCKER_BUILD_TARGET", + match (arch, docker_build_type) with + | Amd64, (Test_manual | Experimental) -> "with-evm-artifacts" + | _ -> "without-evm-artifacts" ); + ("IMAGE_ARCH_PREFIX", arch_string ^ "_"); + ( "CI_DOCKER_HUB", + Bool.to_string + (match docker_build_type with + | Release | Experimental -> true + | Test | Test_manual -> false) ); + ( "EXECUTABLE_FILES", + match docker_build_type with + | Release -> "script-inputs/released-executables" + | Test | Test_manual | Experimental -> + "script-inputs/released-executables \ + script-inputs/experimental-executables" ); + ] + in + let stage, when_, (allow_failure : allow_failure_job option) = + match docker_build_type with + | Test_manual -> (Stages.manual, Some Manual, Some Yes) + | _ -> (Stages.build, None, None) + in + let name = "oc.docker:" ^ arch_string in + let filename_suffix = + match docker_build_type with + | Release -> "release" + | Experimental -> "experimental" + | Test -> "test" + | Test_manual -> "test_manual" + in + let job = + job_docker_authenticated + ?when_ + ?allow_failure + ?rules + ?dependencies + ~__POS__ + ~stage + ~arch + ~name + ~variables + ["./scripts/ci/docker_release.sh"] + in + if external_ then job_external ~directory:"build" ~filename_suffix job + else job + +(* Note: here we rely on [$IMAGE_ARCH_PREFIX] to be empty. + Otherwise, [$DOCKER_IMAGE_TAG] would contain [$IMAGE_ARCH_PREFIX] too. + [$IMAGE_ARCH_PREFIX] is only used when building Docker images, + here we handle all architectures so there is no such variable. *) +let job_docker_merge_manifests ~__POS__ ~ci_docker_hub ~job_docker_amd64 + ~job_docker_arm64 : tezos_job = + job_docker_authenticated + ~__POS__ + ~stage:Stages.prepare_release + ~name:"docker:merge_manifests" + (* This job merges the images produced in the jobs + [docker:{amd64,arm64}] into a single multi-architecture image, and + so must be run after these jobs. *) + ~dependencies:(Dependent [Job job_docker_amd64; Job job_docker_arm64]) + ~variables:[("CI_DOCKER_HUB", Bool.to_string ci_docker_hub)] + ["./scripts/ci/docker_merge_manifests.sh"] + +type bin_package_target = Dpkg | Rpm + +let job_build_bin_package ?rules ~__POS__ ~name ?(stage = Stages.build) ~arch + ~target () : tezos_job = + let arch_string = match arch with Amd64 -> "amd64" | Arm64 -> "arm64" in + let target_string = match target with Dpkg -> "dpkg" | Rpm -> "rpm" in + let image = + match target with Dpkg -> Images.debian_bookworm | Rpm -> Images.fedora_39 + in + let artifacts = + let artifact_path = + "octez-*." ^ match target with Dpkg -> "deb" | Rpm -> "rpm" + in + artifacts + ~expire_in:(Days 1) + ~when_:On_success + ~name:"${TARGET}-$ARCH-$CI_COMMIT_REF_SLUG" + [artifact_path] + in + let before_script = + ". ./scripts/version.sh" + :: + (match target with + | Dpkg -> + [ + "apt update"; + "apt-get install -y rsync git m4 build-essential patch unzip wget \ + opam jq bc autoconf cmake libev-dev libffi-dev libgmp-dev \ + libhidapi-dev pkg-config zlib1g-dev libprotobuf-dev \ + protobuf-compiler libsqlite3-dev jq"; + ] + | Rpm -> + [ + "dnf update -y"; + "dnf install -y libev-devel gmp-devel hidapi-devel libffi-devel \ + zlib-devel libpq-devel m4 perl git pkg-config rpmdevtools \ + python3-devel python3-setuptools wget opam rsync which cargo \ + autoconf mock systemd systemd-rpm-macros cmake python3-wheel \ + python3-tox-current-env gcc-c++ protobuf-compiler protobuf-devel \ + sqlite-devel jq"; + ]) + in + job + ?rules + ~__POS__ + ~name + ~arch + ~image + ~stage + ~dependencies:(Dependent []) + ~variables: + [ + ("TARGET", target_string); + ("OCTEZ_PKGMAINTAINER", "nomadic-labs"); + ("BLST_PORTABLE", "yes"); + ("ARCH", arch_string); + ] + ~artifacts + ~before_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"; + ] + +let job_build_dpkg_amd64 : unit -> tezos_job = + job_build_bin_package + ~__POS__ + ~name:"oc.build:dpkg:amd64" + ~target:Dpkg + ~arch:Amd64 + +let job_build_rpm_amd64 : unit -> tezos_job = + job_build_bin_package + ~__POS__ + ~name:"oc.build:rpm:amd64" + ~target:Rpm + ~arch:Amd64 + +let job_build_dynamic_binaries ?rules ~__POS__ ~arch ?(release = false) + ?dependencies () = + let arch_string = match arch with Amd64 -> "x86_64" | Arm64 -> "arm64" in + let name = + sf + "oc.build_%s-%s" + arch_string + (if release then "released" else "exp-dev-extra") + in + let executable_files = + if release then "script-inputs/released-executables" + else "script-inputs/experimental-executables script-inputs/dev-executables" + in + let build_extra = + match (release, arch) with + | true, _ -> None + | false, Amd64 -> + Some + [ + "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"; + ] + | false, Arm64 -> + Some + [ + "src/bin_tps_evaluation/main_tps_evaluation.exe"; + "src/bin_octogram/octogram_main.exe tezt/tests/main.exe"; + ] + in + let variables = + [("ARCH", arch_string); ("EXECUTABLE_FILES", executable_files)] + @ + match build_extra with + | Some build_extra -> [("BUILD_EXTRA", String.concat " " build_extra)] + | None -> [] + in + let artifacts = + artifacts + ~name:"build-$ARCH-$CI_COMMIT_REF_SLUG" + ~when_:On_success + ~expire_in:(Days 1) + (* TODO: [paths] can be refined based on [release] *) + [ + "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"; + ] + in + let job = + job + ?rules + ?dependencies + ~__POS__ + ~stage:Stages.build + ~arch + ~name + ~image:Images.runtime_build_dependencies + ~before_script: + (before_script + ~take_ownership:true + ~source_version:true + ~eval_opam:true + []) + ~variables + ~artifacts + ["./scripts/ci/build_full_unreleased.sh"] + in + (* Disable coverage for arm64 *) + if arch = Amd64 then enable_coverage_instrumentation job else job + +(** {2 Shared jobs} *) + +let job_build_arm64_release ?rules () : tezos_job = + job_build_dynamic_binaries ?rules ~__POS__ ~arch:Arm64 ~release:true () + +let job_build_arm64_exp_dev_extra ?rules () : tezos_job = + job_build_dynamic_binaries ?rules ~__POS__ ~arch:Arm64 ~release:false () diff --git a/ci/bin/main.ml b/ci/bin/main.ml index e4b9c0b4194c..035a4edaa4c0 100644 --- a/ci/bin/main.ml +++ b/ci/bin/main.ml @@ -20,66 +20,13 @@ let () = Tezos_ci.Cli.init () (* Sets up the [default:] top-level configuration element. *) let default = default ~interruptible:true () -(* Define [stages:] - - The "manual" stage exists to fix a UI problem that occurs when mixing - manual and non-manual jobs. *) -module Stages = struct - let trigger = Stage.register "trigger" - - let _sanity = Stage.register "sanity" - - let build = Stage.register "build" - - let _test = Stage.register "test" - - let test_coverage = Stage.register "test_coverage" - - let _packaging = Stage.register "packaging" - - let doc = Stage.register "doc" - - let prepare_release = Stage.register "prepare_release" - - let publish_release_gitlab = Stage.register "publish_release_gitlab" - - let publish_release = Stage.register "publish_release" - - let publish_package_gitlab = Stage.register "publish_package_gitlab" - - let manual = Stage.register "manual" -end - -(* Get the [build_deps_image_version] from the environment, which is - typically set by sourcing [scripts/version.sh]. This is used to write - [build_deps_image_version] in the top-level [variables:], used to - specify the versions of the [build_deps] images. *) -let build_deps_image_version = - match Sys.getenv_opt "opam_repository_tag" with - | None -> - failwith - "Please set the environment variable [opam_repository_tag], by e.g. \ - sourcing [scripts/version.sh] before running." - | Some v -> v - -(* Get the [alpine_version] from the environment, which is typically - set by sourcing [scripts/version.sh]. This is used to set the tag - of the image {!Images.alpine}. *) -let alpine_version = - match Sys.getenv_opt "alpine_version" with - | None -> - failwith - "Please set the environment variable [alpine_version], by e.g. \ - sourcing [scripts/version.sh] before running." - | Some v -> v - (* Top-level [variables:] *) let variables : variables = [ (* /!\ CI_REGISTRY is overriden to use a private Docker registry mirror in AWS ECR in GitLab namespaces `nomadic-labs` and `tezos` /!\ This value MUST be the same as `opam_repository_tag` in `scripts/version.sh` *) - ("build_deps_image_version", build_deps_image_version); + ("build_deps_image_version", Common.build_deps_image_version); ("build_deps_image_name", "${GCP_REGISTRY}/tezos/opam-repository"); ( "rust_toolchain_image_name", "${GCP_REGISTRY}/${CI_PROJECT_PATH}/rust-toolchain" ); @@ -109,156 +56,6 @@ let variables : variables = ("FF_KUBERNETES_HONOR_ENTRYPOINT", "false"); ] -(* Register images. - - The set of registered images are written to - [.gitlab/ci/jobs/shared/images.yml] for interoperability with - hand-written .yml files. - - For documentation on the [runtime_X_dependencies] and the - [rust_toolchain] images, refer to - {{:https://gitlab.com/tezos/opam-repository/} - tezos/opam-repository}. *) -module Images = struct - let _runtime_e2etest_dependencies = - Image.register - ~name:"runtime_e2etest_dependencies" - ~image_path: - "${build_deps_image_name}:runtime-e2etest-dependencies--${build_deps_image_version}" - - let runtime_build_test_dependencies = - Image.register - ~name:"runtime_build_test_dependencies" - ~image_path: - "${build_deps_image_name}:runtime-build-test-dependencies--${build_deps_image_version}" - - let runtime_build_dependencies = - Image.register - ~name:"runtime_build_dependencies" - ~image_path: - "${build_deps_image_name}:runtime-build-dependencies--${build_deps_image_version}" - - let _runtime_prebuild_dependencies = - Image.register - ~name:"runtime_prebuild_dependencies" - ~image_path: - "${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version}" - - let _client_libs_dependencies = - Image.register - ~name:"client_libs_dependencies" - ~image_path: - "${client_libs_dependencies_image_name}:${client_libs_dependencies_image_tag}" - - let rust_toolchain = - (* Warning: we are relying on ill-specified behavior from GitLab that allows - the expansion of dotenv variables (here: $rust_toolchain_image_tag) in - the image field. - See: https://gitlab.com/gitlab-org/gitlab-runner/-/issues/37361. *) - Image.register - ~name:"rust_toolchain" - ~image_path:"${rust_toolchain_image_name}:${rust_toolchain_image_tag}" - - (* Match GitLab executors version and directly use the Docker socket - The Docker daemon is already configured, experimental features are enabled - The following environment variables are already set: - - [BUILDKIT_PROGRESS] - - [DOCKER_DRIVER] - - [DOCKER_VERSION] - For more info, see {{:https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#use-docker-socket-binding}} here. - - This image is defined in {{:https://gitlab.com/tezos/docker-images/ci-docker}tezos/docker-images/ci-docker}. *) - let docker = - Image.register - ~name:"docker" - ~image_path:"${GCP_REGISTRY}/tezos/docker-images/ci-docker:v1.10.0" - - (* The Alpine version should be kept up to date with the version - used for the [build_deps_image_name] images and specified in the - variable [alpine_version] in [scripts/version.sh]. This is - checked by the jobs [trigger] and [sanity_ci]. *) - let alpine = - Image.register ~name:"alpine" ~image_path:("alpine:" ^ alpine_version) - - let debian_bookworm = - Image.register ~name:"debian_bookworm" ~image_path:"debian:bookworm" - - let fedora_39 = Image.register ~name:"fedora_39" ~image_path:"fedora:39" - - let ci_release = - Image.register - ~name:"ci_release" - ~image_path:"${GCP_REGISTRY}/tezos/docker-images/ci-release:v1.4.0" -end - -let before_script ?(take_ownership = false) ?(source_version = false) - ?(eval_opam = false) ?(init_python_venv = false) ?(install_js_deps = false) - before_script = - let toggle t x = if t then [x] else [] in - (* FIXME: https://gitlab.com/tezos/tezos/-/issues/2865 *) - toggle take_ownership "./scripts/ci/take_ownership.sh" - @ toggle source_version ". ./scripts/version.sh" - (* TODO: this must run in the before_script of all jobs that use the opam environment. - how to enforce? *) - @ toggle eval_opam "eval $(opam env)" - (* Load the environment poetry previously created in the docker image. - Give access to the Python dependencies/executables *) - @ toggle init_python_venv ". $HOME/.venv/bin/activate" - @ toggle install_js_deps ". ./scripts/install_build_deps.js.sh" - @ before_script - -(** Add variable for bisect_ppx instrumentation. - - This template should be extended by jobs that build OCaml targets - that should be instrumented for coverage output. This set of job - includes build jobs (like [oc.build_x86_64_*]). It also includes - OCaml unit test jobs like [oc.unit:*-x86_64] as they build the test - runners before their execution. *) -let enable_coverage_instrumentation : tezos_job -> tezos_job = - Tezos_ci.append_variables - [("COVERAGE_OPTIONS", "--instrument-with bisect_ppx")] - -(** Add variable specifying coverage trace storage. - - This function should be applied to jobs that either produce (like - test jobs) or consume (like the [unified_coverage] job) coverage - traces. In addition to specifying the location of traces, setting - this variable also _enables_ coverage trace output for - instrumented binaries. *) -let enable_coverage_location : tezos_job -> tezos_job = - Tezos_ci.append_variables - [("BISECT_FILE", "$CI_PROJECT_DIR/_coverage_output/")] - -let changeset_octez = - [ - "src/**/*"; - "etherlink/**/*"; - "tezt/**/*"; - ".gitlab/**/*"; - ".gitlab-ci.yml"; - "michelson_test_scripts/**/*"; - "tzt_reference_test_suite/**/*"; - ] - -let changeset_octez_or_kernels = - ["images/**/*"; "scripts/ci/**/*"; "kernels.mk"; "etherlink.mk"] - @ changeset_octez - -let changeset_octez_docs = - [ - "scripts/**/*/"; - "script-inputs/**/*/"; - "src/**/*"; - "tezt/**/*"; - "vendors/**/*"; - "dune"; - "dune-project"; - "dune-workspace"; - "docs/**/*"; - ".gitlab/**/*"; - ".gitlab-ci.yml"; - ] - (* Dummy job. This fixes the "configuration must contain at least one @@ -273,718 +70,6 @@ let job_dummy : job = ~script:[{|echo "This job will never execute"|}] () -(** Helper to create jobs that uses the docker deamon. - - It: - - Sets the appropriate image. - - Activates the Docker daemon as a service. - - It sets up authentification with docker registries *) -let job_docker_authenticated ?(skip_docker_initialization = false) ?artifacts - ?variables ?rules ?dependencies ?arch ?when_ ?allow_failure ~__POS__ ~stage - ~name script : Tezos_ci.tezos_job = - let docker_version = "24.0.6" in - job - ?rules - ?dependencies - ?artifacts - ?arch - ?when_ - ?allow_failure - ~__POS__ - ~image:Images.docker - ~variables: - ([("DOCKER_VERSION", docker_version)] @ Option.value ~default:[] variables) - ~before_script: - (if not skip_docker_initialization then - ["./scripts/ci/docker_initialize.sh"] - else []) - ~services:[{name = "docker:${DOCKER_VERSION}-dind"}] - ~stage - ~name - script - -let job_docker_promote_to_latest ~ci_docker_hub : tezos_job = - job_docker_authenticated - ~__POS__ - ~stage:Stages.publish_release - ~name:"docker:promote_to_latest" - ~variables:[("CI_DOCKER_HUB", Bool.to_string ci_docker_hub)] - ["./scripts/ci/docker_promote_to_latest.sh"] - -(* This version of the job builds both released and experimental executables. - It is used in the following pipelines: - - Before merging: check whether static executables still compile, - i.e. that we do pass the -static flag and that when we do it does compile - - Master branch: executables (including experimental ones) are used in some test networks - Variants: - - an arm64 variant exist, but is only used in the master branch pipeline - (no need to test that we pass the -static flag twice) - - released variants exist, that are used in release tag pipelines - (they do not build experimental executables) *) -let job_build_static_binaries ~__POS__ ~arch ?(release = false) ?rules - ?dependencies () : Tezos_ci.tezos_job = - let arch_string = - match arch with Tezos_ci.Amd64 -> "x86_64" | Arm64 -> "arm64" - in - let name = "oc.build:static-" ^ arch_string ^ "-linux-binaries" in - let artifacts = - (* Extend the lifespan to prevent failure for external tools using artifacts. *) - let expire_in = if release then Some (Days 90) else None in - artifacts ?expire_in ["octez-binaries/$ARCH/*"] - in - let executable_files = - "script-inputs/released-executables" - ^ if not release then " script-inputs/experimental-executables" else "" - in - job - ?rules - ?dependencies - ~__POS__ - ~stage:Stages.build - ~arch - ~name - ~image:Images.runtime_build_dependencies - ~before_script:(before_script ~take_ownership:true ~eval_opam:true []) - ~variables:[("ARCH", arch_string); ("EXECUTABLE_FILES", executable_files)] - ~artifacts - ["./scripts/ci/build_static_binaries.sh"] - -let job_docker_rust_toolchain ?rules ?dependencies ~__POS__ () = - job_docker_authenticated - ?rules - ?dependencies - ~__POS__ - ~skip_docker_initialization:true - ~stage:Stages.build - ~name:"oc.docker:rust-toolchain" - ~variables:[("CI_DOCKER_HUB", "false")] - ~artifacts: - (artifacts - ~reports:(reports ~dotenv:"rust_toolchain_image_tag.env" ()) - []) - ["./scripts/ci/docker_rust_toolchain_build.sh"] - -(** Type of Docker build jobs. - - The semantics of the type is summed up in this table: - - | | Release | Experimental | Test | Test_manual | - |-----------------------+------------+--------------+--------+-------------| - | Image registry | Docker hub | Docker hub | GitLab | GitLab | - | Experimental binaries | no | yes | yes | yes | - | EVM Kernels | no | On amd64 | no | On amd64 | - | Manual job | no | no | no | yes | - - - [Release] Docker builds include only released executables whereas other - types also includes experimental ones. - - [Test_manual] and [Experimental] Docker builds include the EVM kernels in - amd64 builds. - - [Release] and [Experimental] Docker builds are pushed to Docker hub, - whereas other types are pushed to the GitLab registry. - - [Test_manual] Docker builds are triggered manually, put in the stage - [manual] and their failure is allowed. The other types are in the build - stage, run [on_success] and are not allowed to fail. *) -type docker_build_type = Experimental | Release | Test | Test_manual - -(** Creates a Docker build job of the given [arch] and [docker_build_type]. - - If [external_] is set to true (default [false]), then the job is - also written to an external file. *) -let job_docker_build ?rules ?dependencies ~__POS__ ~arch ?(external_ = false) - docker_build_type : Tezos_ci.tezos_job = - let arch_string = - match arch with Tezos_ci.Amd64 -> "amd64" | Arm64 -> "arm64" - in - let variables = - [ - ( "DOCKER_BUILD_TARGET", - match (arch, docker_build_type) with - | Amd64, (Test_manual | Experimental) -> "with-evm-artifacts" - | _ -> "without-evm-artifacts" ); - ("IMAGE_ARCH_PREFIX", arch_string ^ "_"); - ( "CI_DOCKER_HUB", - Bool.to_string - (match docker_build_type with - | Release | Experimental -> true - | Test | Test_manual -> false) ); - ( "EXECUTABLE_FILES", - match docker_build_type with - | Release -> "script-inputs/released-executables" - | Test | Test_manual | Experimental -> - "script-inputs/released-executables \ - script-inputs/experimental-executables" ); - ] - in - let stage, when_, (allow_failure : allow_failure_job option) = - match docker_build_type with - | Test_manual -> (Stages.manual, Some Manual, Some Yes) - | _ -> (Stages.build, None, None) - in - let name = "oc.docker:" ^ arch_string in - let filename_suffix = - match docker_build_type with - | Release -> "release" - | Experimental -> "experimental" - | Test -> "test" - | Test_manual -> "test_manual" - in - let job = - job_docker_authenticated - ?when_ - ?allow_failure - ?rules - ?dependencies - ~__POS__ - ~stage - ~arch - ~name - ~variables - ["./scripts/ci/docker_release.sh"] - in - if external_ then job_external ~directory:"build" ~filename_suffix job - else job - -let changeset_octez_docker_changes_or_master = - [ - "scripts/**/*"; - "script-inputs/**/*"; - "src/**/*"; - "tezt/**/*"; - "vendors/**/*"; - "dune"; - "dune-project"; - "dune-workspace"; - "opam"; - "Makefile"; - "kernels.mk"; - "build.Dockerfile"; - "Dockerfile"; - ".gitlab/**/*"; - ".gitlab-ci.yml"; - ] - -let rules_octez_docker_changes_or_master = - [ - job_rule ~if_:Rules.on_master ~when_:Always (); - job_rule ~changes:changeset_octez_docker_changes_or_master (); - ] - -(* Note: here we rely on [$IMAGE_ARCH_PREFIX] to be empty. - Otherwise, [$DOCKER_IMAGE_TAG] would contain [$IMAGE_ARCH_PREFIX] too. - [$IMAGE_ARCH_PREFIX] is only used when building Docker images, - here we handle all architectures so there is no such variable. *) -let job_docker_merge_manifests ~__POS__ ~ci_docker_hub ~job_docker_amd64 - ~job_docker_arm64 : Tezos_ci.tezos_job = - job_docker_authenticated - ~__POS__ - ~stage:Stages.prepare_release - ~name:"docker:merge_manifests" - (* This job merges the images produced in the jobs - [docker:{amd64,arm64}] into a single multi-architecture image, and - so must be run after these jobs. *) - ~dependencies:(Dependent [Job job_docker_amd64; Job job_docker_arm64]) - ~variables:[("CI_DOCKER_HUB", Bool.to_string ci_docker_hub)] - ["./scripts/ci/docker_merge_manifests.sh"] - -type bin_package_target = Dpkg | Rpm - -let job_build_bin_package ?rules ~__POS__ ~name ?(stage = Stages.build) ~arch - ~target () : Tezos_ci.tezos_job = - let arch_string = - match arch with Tezos_ci.Amd64 -> "amd64" | Arm64 -> "arm64" - in - let target_string = match target with Dpkg -> "dpkg" | Rpm -> "rpm" in - let image = - match target with Dpkg -> Images.debian_bookworm | Rpm -> Images.fedora_39 - in - let artifacts = - let artifact_path = - "octez-*." ^ match target with Dpkg -> "deb" | Rpm -> "rpm" - in - artifacts - ~expire_in:(Days 1) - ~when_:On_success - ~name:"${TARGET}-$ARCH-$CI_COMMIT_REF_SLUG" - [artifact_path] - in - let before_script = - ". ./scripts/version.sh" - :: - (match target with - | Dpkg -> - [ - "apt update"; - "apt-get install -y rsync git m4 build-essential patch unzip wget \ - opam jq bc autoconf cmake libev-dev libffi-dev libgmp-dev \ - libhidapi-dev pkg-config zlib1g-dev libprotobuf-dev \ - protobuf-compiler libsqlite3-dev jq"; - ] - | Rpm -> - [ - "dnf update -y"; - "dnf install -y libev-devel gmp-devel hidapi-devel libffi-devel \ - zlib-devel libpq-devel m4 perl git pkg-config rpmdevtools \ - python3-devel python3-setuptools wget opam rsync which cargo \ - autoconf mock systemd systemd-rpm-macros cmake python3-wheel \ - python3-tox-current-env gcc-c++ protobuf-compiler protobuf-devel \ - sqlite-devel jq"; - ]) - in - job - ?rules - ~__POS__ - ~name - ~arch - ~image - ~stage - ~dependencies:(Dependent []) - ~variables: - [ - ("TARGET", target_string); - ("OCTEZ_PKGMAINTAINER", "nomadic-labs"); - ("BLST_PORTABLE", "yes"); - ("ARCH", arch_string); - ] - ~artifacts - ~before_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"; - ] - -let job_build_dpkg_amd64 : unit -> tezos_job = - job_build_bin_package - ~__POS__ - ~name:"oc.build:dpkg:amd64" - ~target:Dpkg - ~arch:Tezos_ci.Amd64 - -let job_build_rpm_amd64 : unit -> tezos_job = - job_build_bin_package - ~__POS__ - ~name:"oc.build:rpm:amd64" - ~target:Rpm - ~arch:Tezos_ci.Amd64 - -(** Type of release tag pipelines. - - The semantics of the type is summed up in this table: - - | | Release_tag | Beta_release_tag | Non_release_tag | - |-----------------------+-------------+------------------+-----------------| - | GitLab release type | Release | Release | Create | - | Experimental binaries | No | No | No | - | Docker build type | Release | Release | Release | - | Publishes to opam | Yes | No | No | - - - All release tag pipelines types publish [Release] type Docker builds. - - No release tag pipelines include experimental binaries. - - [Release_tag] and [Beta_release_tag] pipelines creates GitLab - and publishes releases. [Non_release_tag] pipelines creates the - GitLab release but do not publish them. - - Only [Release_tag] pipelines publish to opam. *) -type release_tag_pipeline_type = - | Release_tag - | Beta_release_tag - | Non_release_tag - -(** Create a release tag pipeline of type {!release_tag_pipeline_type}. - - If [test] is true (default is [false]), then the Docker images are - built of the [Test] type and are published to the GitLab registry - instead of Docker hub. *) -let release_tag_pipeline ?(test = false) release_tag_pipeline_type = - let job_docker_rust_toolchain = job_docker_rust_toolchain ~__POS__ () in - let job_docker_amd64 = - job_docker_build - ~__POS__ - ~dependencies:(Dependent [Artifacts job_docker_rust_toolchain]) - ~arch:Amd64 - (if test then Test else Release) - in - let job_docker_arm64 = - job_docker_build - ~__POS__ - ~dependencies:(Dependent [Artifacts job_docker_rust_toolchain]) - ~arch:Arm64 - (if test then Test else Release) - in - let job_docker_merge = - job_docker_merge_manifests - ~__POS__ - ~ci_docker_hub:(not test) - ~job_docker_amd64 - ~job_docker_arm64 - in - let job_static_arm64_release = - job_build_static_binaries ~__POS__ ~arch:Arm64 ~release:true () - in - let job_static_x86_64_release = - job_build_static_binaries ~__POS__ ~arch:Amd64 ~release:true () - in - let job_gitlab_release ~dependencies : Tezos_ci.tezos_job = - job - ~__POS__ - ~image:Images.ci_release - ~stage:Stages.publish_release_gitlab - ~interruptible:false - ~dependencies - ~name:"gitlab:release" - [ - "./scripts/ci/restrict_export_to_octez_source.sh"; - "./scripts/ci/gitlab-release.sh"; - ] - in - let job_gitlab_publish ~dependencies : Tezos_ci.tezos_job = - job - ~__POS__ - ~image:Images.ci_release - ~stage:Stages.publish_package_gitlab - ~interruptible:false - ~dependencies - ~name:"gitlab:publish" - ["${CI_PROJECT_DIR}/scripts/ci/create_gitlab_package.sh"] - in - let job_build_dpkg_amd64 = job_build_dpkg_amd64 () in - let job_build_rpm_amd64 = job_build_rpm_amd64 () in - let job_gitlab_release_or_publish = - let dependencies = - Dependent - [ - Artifacts job_static_x86_64_release; - Artifacts job_static_arm64_release; - Artifacts job_build_dpkg_amd64; - Artifacts job_build_rpm_amd64; - ] - in - match release_tag_pipeline_type with - | Non_release_tag -> job_gitlab_publish ~dependencies - | _ -> job_gitlab_release ~dependencies - in - let job_opam_release : Tezos_ci.tezos_job = - job - ~__POS__ - ~image:Images.runtime_build_test_dependencies - ~stage:Stages.publish_release - ~interruptible:false - ~name:"opam:release" - ["./scripts/ci/opam-release.sh"] - in - [ - job_docker_rust_toolchain; - job_static_x86_64_release; - job_static_arm64_release; - job_docker_amd64; - job_docker_arm64; - job_build_dpkg_amd64; - job_build_rpm_amd64; - job_docker_merge; - job_gitlab_release_or_publish; - ] - @ - match (test, release_tag_pipeline_type) with - | false, Release_tag -> [job_opam_release] - | _ -> [] - -let arm64_build_extra = - [ - "src/bin_tps_evaluation/main_tps_evaluation.exe"; - "src/bin_octogram/octogram_main.exe tezt/tests/main.exe"; - ] - -let amd64_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"; - ] - -let job_build_dynamic_binaries ?rules ~__POS__ ~arch ?(release = false) - ?dependencies () = - let arch_string = match arch with Amd64 -> "x86_64" | Arm64 -> "arm64" in - let name = - sf - "oc.build_%s-%s" - arch_string - (if release then "released" else "exp-dev-extra") - in - let executable_files = - if release then "script-inputs/released-executables" - else "script-inputs/experimental-executables script-inputs/dev-executables" - in - let build_extra = - match (release, arch) with - | true, _ -> None - | false, Amd64 -> Some amd64_build_extra - | false, Arm64 -> Some arm64_build_extra - in - let variables = - [("ARCH", arch_string); ("EXECUTABLE_FILES", executable_files)] - @ - match build_extra with - | Some build_extra -> [("BUILD_EXTRA", String.concat " " build_extra)] - | None -> [] - in - let artifacts = - artifacts - ~name:"build-$ARCH-$CI_COMMIT_REF_SLUG" - ~when_:On_success - ~expire_in:(Days 1) - (* TODO: [paths] can be refined based on [release] *) - [ - "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"; - ] - in - let job = - job - ?rules - ?dependencies - ~__POS__ - ~stage:Stages.build - ~arch - ~name - ~image:Images.runtime_build_dependencies - ~before_script: - (before_script - ~take_ownership:true - ~source_version:true - ~eval_opam:true - []) - ~variables - ~artifacts - ["./scripts/ci/build_full_unreleased.sh"] - in - (* Disable coverage for arm64 *) - if arch = Amd64 then enable_coverage_instrumentation job else job - -(* Write external files for build_arm64_jobs. - - Used in external pipelines [before_merging] and [schedule_extended_test]. *) -let job_build_arm64_release ?rules () : tezos_job = - job_build_dynamic_binaries ?rules ~__POS__ ~arch:Arm64 ~release:true () - -let job_build_arm64_exp_dev_extra ?rules () : tezos_job = - job_build_dynamic_binaries ?rules ~__POS__ ~arch:Arm64 ~release:false () - -let enable_coverage_report job : tezos_job = - job - |> Tezos_ci.add_artifacts - ~expose_as:"Coverage report" - ~reports: - (reports - ~coverage_report: - { - coverage_format = Cobertura; - path = "_coverage_report/cobertura.xml"; - } - ()) - ~expire_in:(Days 15) - ~when_:Always - ["_coverage_report/"; "$BISECT_FILE"] - |> Tezos_ci.append_variables [("SLACK_COVERAGE_CHANNEL", "C02PHBE7W73")] - -type code_verification_pipeline = Before_merging | Schedule_extended_test - -(* Encodes the conditional [before_merging] pipeline and its unconditional variant - [schedule_extended_test]. *) -let code_verification_pipeline pipeline_type = - (* Externalization *) - let job_external_split ?(before_merging_suffix = "before_merging") - ?(scheduled_suffix = "scheduled_extended_test") job = - job_external - ~filename_suffix: - (match pipeline_type with - | Before_merging -> before_merging_suffix - | Schedule_extended_test -> scheduled_suffix) - job - in - (* [make_rules] makes rules for jobs that are: - - automatic in scheduled pipelines; - - conditional in [before_merging] pipelines. - - If [label], [changes] and [manual] are omitted, then rules will - enable the job [On_success] in the [before_merging] - pipeline. This is safe, but prefer specifying a [changes] clause - if possible. *) - let make_rules ?label ?changes ?(manual = false) () = - match pipeline_type with - | Schedule_extended_test -> - (* The scheduled pipeline always runs all tests unconditionally. *) - [job_rule ~when_:Always ()] - | Before_merging -> - (* MR labels can be used to force tests to run. *) - (match label with - | Some label -> - [job_rule ~if_:Rules.(has_mr_label label) ~when_:On_success ()] - | None -> []) - (* Modifying some files can force tests to run. *) - @ (match changes with - | None -> [] - | Some changes -> [job_rule ~changes ~when_:On_success ()]) - (* For some tests, it can be relevant to have a manual trigger. *) - @ if manual then [job_rule ~when_:Manual ()] else [] - in - (* Stages *) - (* All stages should be empty, as explained below, until the full pipeline is generated. *) - let trigger, dependencies_needs_trigger = - match pipeline_type with - | Schedule_extended_test -> ([], Staged []) - | Before_merging -> - (* Define the [trigger] job - - §1: The purpose of this job is to launch the CI manually in certain cases. - The objective is not to run computing when it is not - necessary and the decision to do so belongs to the developer - - §2: We also perform some fast sanity checks. *) - let job_trigger = - job - ~__POS__ - ~image:Images.alpine - ~stage:Stages.trigger - ~allow_failure:No - ~rules: - [ - job_rule - ~if_:(If.not Rules.assigned_to_marge_bot) - ~allow_failure:No - ~when_:Manual - (); - job_rule ~when_:Always (); - ] - ~timeout:(Minutes 10) - ~name:"trigger" - [ - "echo 'Trigger pipeline!'"; - (* Check that [.gitlab-ci.yml]'s [build_deps_image_version] and - [scripts/version.sh]'s [opam_repository_tag] are the same. *) - "./scripts/ci/check_opam_repository_tag.sh"; - (* Check that the Alpine version of the trigger job's image - corresponds to the value in scripts/version.sh. *) - "./scripts/ci/check_alpine_version.sh"; - ] - |> job_external - in - (* TODO: put job_trigger here when full pipeline is generated *) - ([], Dependent [Optional job_trigger]) - in - let sanity = [] in - let job_docker_rust_toolchain = - job_docker_rust_toolchain - ~__POS__ - ~rules:(make_rules ~changes:changeset_octez_or_kernels ~manual:true ()) - ~dependencies:dependencies_needs_trigger - () - |> job_external_split - in - let build = - let build_arm_rules = make_rules ~label:"ci--arm64" ~manual:true () in - let _job_build_arm64_release : Tezos_ci.tezos_job = - job_build_arm64_release ~rules:build_arm_rules () |> job_external_split - in - let _job_build_arm64_exp_dev_extra : Tezos_ci.tezos_job = - job_build_arm64_exp_dev_extra ~rules:build_arm_rules () - |> job_external_split - in - let _job_static_x86_64_experimental = - job_build_static_binaries - ~__POS__ - ~arch:Amd64 - (* Even though not many tests depend on static executables, some - of those that do are limiting factors in the total duration - of pipelines. So we start this job as early as possible, - without waiting for sanity_ci. *) - ~dependencies:dependencies_needs_trigger - ~rules:(make_rules ~changes:changeset_octez ()) - () - |> job_external_split - in - (* TODO: The code is a bit convulted here because these jobs are - either in the build or in the manual stage depeneding on the - pipeline type. However, we can put them in the build stage on - [before_merging] pipelines as long as we're careful to put - [allow_failure: true]. *) - (match pipeline_type with - | Schedule_extended_test -> - let _job_build_dpkg_amd64 = job_build_dpkg_amd64 () |> job_external in - let _job_build_rpm_amd64 = job_build_rpm_amd64 () |> job_external in - () - | Before_merging -> ()) ; - (* TODO: include the jobs defined above when full pipeline is generated *) - [] - in - let packaging = [] in - let test = [] in - let doc = [] in - let manual = - match pipeline_type with - | Before_merging -> - let _job_docker_amd64_test_manual : Tezos_ci.tezos_job = - job_docker_build - ~__POS__ - ~external_:true - ~dependencies:(Dependent [Artifacts job_docker_rust_toolchain]) - ~arch:Amd64 - Test_manual - in - let _job_docker_arm64_test_manual : Tezos_ci.tezos_job = - job_docker_build - ~__POS__ - ~external_:true - ~dependencies:(Dependent [Artifacts job_docker_rust_toolchain]) - ~arch:Arm64 - Test_manual - in - let _job_build_dpkg_amd64_manual = - job_build_bin_package - ~__POS__ - ~name:"oc.build:dpkg:amd64" - ~target:Dpkg - ~arch:Tezos_ci.Amd64 - ~rules:[job_rule ~when_:Manual ()] - ~stage:Stages.manual - () - |> job_external ~directory:"build" ~filename_suffix:"manual" - in - let _job_build_rpm_amd64_manual = - job_build_bin_package - ~__POS__ - ~rules:[job_rule ~when_:Manual ()] - ~name:"oc.build:rpm:amd64" - ~target:Rpm - ~arch:Tezos_ci.Amd64 - ~stage:Stages.manual - () - |> job_external ~directory:"build" ~filename_suffix:"manual" - in - (* TODO: include the jobs defined above when full pipeline is generated *) - [] - (* No manual jobs on the scheduled pipeline *) - | Schedule_extended_test -> [] - in - (* Empty place-holder: this has the effect of not overwriting the pipeline file in question. - Once all the jobs in these pipelines are defined, we will return them here which - will cause the pipeline files to contain the definition of all those jobs. - - Until that time, all the jobs are written ot external files - (using {!job_external} or {!jobs_external}) and included by hand - in the files [.gitlab/ci/pipelines/before_merging.yml] and - [.gitlab/ci/pipelines/schedule_extended_test.yml]. *) - trigger @ sanity @ build @ packaging @ test @ doc @ manual - (* Register pipelines types. Pipelines types are used to generate workflow rules and includes of the files where the jobs of the pipeline is defined. At the moment, all these pipelines are defined @@ -1009,199 +94,43 @@ let () = register "before_merging" If.(on_tezos_namespace && merge_request) - ~jobs:(code_verification_pipeline Before_merging) ; + ~jobs:(Code_verification.jobs Before_merging) ; register "octez_latest_release" - ~jobs:[job_docker_promote_to_latest ~ci_docker_hub:true] + ~jobs:(Octez_latest_release.jobs ()) If.(on_tezos_namespace && push && on_branch "latest-release") ; register "octez_latest_release_test" If.(not_on_tezos_namespace && push && on_branch "latest-release-test") - ~jobs:[job_docker_promote_to_latest ~ci_docker_hub:false] ; + ~jobs:(Octez_latest_release.jobs ~test:true ()) ; register "master_branch" If.(on_tezos_namespace && push && on_branch "master") - ~jobs: - (let job_docker_rust_toolchain = - job_docker_rust_toolchain - ~__POS__ - ~rules:[job_rule ~when_:Always ()] - () - in - let job_docker_amd64_experimental : tezos_job = - job_docker_build - ~__POS__ - ~dependencies:(Dependent [Artifacts job_docker_rust_toolchain]) - ~rules:rules_octez_docker_changes_or_master - ~arch:Amd64 - Experimental - in - let job_docker_arm64_experimental : tezos_job = - job_docker_build - ~__POS__ - ~dependencies:(Dependent [Artifacts job_docker_rust_toolchain]) - ~rules:rules_octez_docker_changes_or_master - ~arch:Arm64 - Experimental - in - let job_docker_merge_manifests = - job_docker_merge_manifests - ~__POS__ - ~ci_docker_hub:true - (* TODO: In theory, actually uses either release or - experimental variant of docker jobs depending on - pipeline. In practice, this does not matter as these jobs - have the same name in the generated files - ([oc.build:ARCH]). However, when the merge_manifest jobs - are created directly in the appropriate pipeline, the - correcty variant must be used. *) - ~job_docker_amd64:job_docker_amd64_experimental - ~job_docker_arm64:job_docker_arm64_experimental - in - let job_static_arm64 = - job_build_static_binaries - ~__POS__ - ~arch:Arm64 - ~rules:[job_rule ~when_:Always ()] - () - in - let job_static_x86_64 = - job_build_static_binaries - ~__POS__ - ~arch:Amd64 - ~rules:[job_rule ~when_:Always ()] - () - in - let job_unified_coverage_default : tezos_job = - job - ~__POS__ - ~image:Images.runtime_build_test_dependencies - ~name:"oc.unified_coverage" - ~stage:Stages.test_coverage - ~variables: - [ - ("PROJECT", Predefined_vars.(show ci_project_path)); - ("DEFAULT_BRANCH", Predefined_vars.(show ci_commit_sha)); - ] - ~allow_failure:Yes - ~before_script: - ((* sets COVERAGE_OUTPUT *) - before_script ~source_version:true []) - ~when_:Always - ~coverage:"/Coverage: ([^%]+%)/" - [ - (* On the project default branch, we fetch coverage from the last merged MR *) - "mkdir -p _coverage_report"; - "dune exec scripts/ci/download_coverage/download.exe -- -a \ - from=last-merged-pipeline --info --log-file \ - _coverage_report/download_coverage.log"; - "./scripts/ci/report_coverage.sh"; - ] - |> enable_coverage_location |> enable_coverage_report - in - let job_publish_documentation : tezos_job = - job - ~__POS__ - ~name:"publish:documentation" - ~image:Images.runtime_build_test_dependencies - ~stage:Stages.doc - ~dependencies:(Dependent []) - ~before_script: - (before_script - ~eval_opam:true - (* Load the environment poetry previously created in the docker image. - Give access to the Python dependencies/executables. *) - ~init_python_venv:true - [ - {|echo "${CI_PK_GITLAB_DOC}" > ~/.ssh/id_ed25519|}; - {|echo "${CI_KH}" > ~/.ssh/known_hosts|}; - {|chmod 400 ~/.ssh/id_ed25519|}; - ]) - ~interruptible:false - ~rules:[job_rule ~changes:changeset_octez_docs ~when_:On_success ()] - ["./scripts/ci/doc_publish.sh"] - in - (* Smart Rollup: Kernel SDK - - See [src/kernel_sdk/RELEASE.md] for more information. *) - let job_publish_kernel_sdk : tezos_job = - job - ~__POS__ - ~name:"publish_kernel_sdk" - ~image:Images.rust_toolchain - ~stage:Stages.manual - ~rules: - [ - (* This job is in the last stage {!Stages.manual} so we - can disallow failure without blocking the pipeline. - Furthermore, unlike other manual jobs, this is not - an "optional" job for which failures are - tolerated. *) - job_rule ~when_:Manual ~allow_failure:No (); - ] - ~allow_failure:Yes - ~dependencies:(Dependent [Artifacts job_docker_rust_toolchain]) - ~interruptible:false - ~variables: - [("CARGO_HOME", Predefined_vars.(show ci_project_dir) // "cargo")] - ~cache:[{key = "kernels"; paths = ["cargo/"]}] - [ - "make -f kernels.mk publish-sdk-deps"; - (* Manually set SSL_CERT_DIR as default setting points to empty dir *) - "SSL_CERT_DIR=/etc/ssl/certs CC=clang make -f kernels.mk \ - publish-sdk"; - ] - in - (* arm builds are manual on the master branch pipeline *) - let build_arm_rules = [job_rule ~when_:Manual ~allow_failure:Yes ()] in - let job_build_arm64_release = - job_build_arm64_release ~rules:build_arm_rules () - in - let job_build_arm64_exp_dev_extra = - job_build_arm64_exp_dev_extra ~rules:build_arm_rules () - in - [ - (* Stage: build *) - job_docker_rust_toolchain; - job_static_x86_64; - job_static_arm64; - job_build_arm64_release; - job_build_arm64_exp_dev_extra; - job_docker_amd64_experimental; - job_docker_arm64_experimental; - (* Stage: test_coverage *) - job_unified_coverage_default; - (* Stage: doc *) - job_publish_documentation; - (* Stage: prepare_release *) - job_docker_merge_manifests; - (* Stage: manual *) - job_publish_kernel_sdk; - ]) ; + ~jobs:Master_branch.jobs ; register "octez_release_tag" If.(on_tezos_namespace && push && has_tag_match octez_release_tag_re) - ~jobs:(release_tag_pipeline Release_tag) ; + ~jobs:(Release_tag.jobs Release_tag) ; register "octez_beta_release_tag" If.(on_tezos_namespace && push && has_tag_match octez_beta_release_tag_re) - ~jobs:(release_tag_pipeline Beta_release_tag) ; + ~jobs:(Release_tag.jobs Beta_release_tag) ; register "octez_release_tag_test" If.(not_on_tezos_namespace && push && has_any_octez_release_tag) - ~jobs:(release_tag_pipeline ~test:true Release_tag) ; + ~jobs:(Release_tag.jobs ~test:true Release_tag) ; register "non_release_tag" If.(on_tezos_namespace && push && has_non_release_tag) - ~jobs:(release_tag_pipeline Non_release_tag) ; + ~jobs:(Release_tag.jobs Non_release_tag) ; register "non_release_tag_test" If.(not_on_tezos_namespace && push && has_non_release_tag) - ~jobs:(release_tag_pipeline ~test:true Non_release_tag) ; + ~jobs:(Release_tag.jobs ~test:true Non_release_tag) ; register "schedule_extended_test" schedule_extended_tests - ~jobs:(code_verification_pipeline Schedule_extended_test) + ~jobs:(Code_verification.jobs Schedule_extended_test) (* Split pipelines and writes image templates *) let config () = diff --git a/ci/bin/master_branch.ml b/ci/bin/master_branch.ml new file mode 100644 index 000000000000..b7783f1c91f9 --- /dev/null +++ b/ci/bin/master_branch.ml @@ -0,0 +1,181 @@ +(*****************************************************************************) +(* *) +(* SPDX-License-Identifier: MIT *) +(* Copyright (c) 2024 Nomadic Labs. *) +(* *) +(*****************************************************************************) + +(* This module defines the jobs of the [master_branch] pipeline. + + This pipeline runs for each merge on the [master] branch. To goal + of this pipeline is to publish artifacts for the development + version of Octez, including: + + - docker images, + - static binaries, and + - documentation. *) + +open Common +open Gitlab_ci +open Gitlab_ci.Util +open Tezos_ci + +let jobs = + let job_docker_rust_toolchain = + job_docker_rust_toolchain ~__POS__ ~rules:[job_rule ~when_:Always ()] () + in + let rules_octez_docker_changes_or_master = + [ + job_rule ~if_:Rules.on_master ~when_:Always (); + job_rule ~changes:changeset_octez_docker_changes_or_master (); + ] + in + let job_docker_amd64_experimental : tezos_job = + job_docker_build + ~__POS__ + ~dependencies:(Dependent [Artifacts job_docker_rust_toolchain]) + ~rules:rules_octez_docker_changes_or_master + ~arch:Amd64 + Experimental + in + let job_docker_arm64_experimental : tezos_job = + job_docker_build + ~__POS__ + ~dependencies:(Dependent [Artifacts job_docker_rust_toolchain]) + ~rules:rules_octez_docker_changes_or_master + ~arch:Arm64 + Experimental + in + let job_docker_merge_manifests = + job_docker_merge_manifests + ~__POS__ + ~ci_docker_hub:true + (* TODO: In theory, actually uses either release or + experimental variant of docker jobs depending on + pipeline. In practice, this does not matter as these jobs + have the same name in the generated files + ([oc.build:ARCH]). However, when the merge_manifest jobs + are created directly in the appropriate pipeline, the + correcty variant must be used. *) + ~job_docker_amd64:job_docker_amd64_experimental + ~job_docker_arm64:job_docker_arm64_experimental + in + let job_static_arm64 = + job_build_static_binaries + ~__POS__ + ~arch:Arm64 + ~rules:[job_rule ~when_:Always ()] + () + in + let job_static_x86_64 = + job_build_static_binaries + ~__POS__ + ~arch:Amd64 + ~rules:[job_rule ~when_:Always ()] + () + in + let job_unified_coverage_default : tezos_job = + job + ~__POS__ + ~image:Images.runtime_build_test_dependencies + ~name:"oc.unified_coverage" + ~stage:Stages.test_coverage + ~variables: + [ + ("PROJECT", Predefined_vars.(show ci_project_path)); + ("DEFAULT_BRANCH", Predefined_vars.(show ci_commit_sha)); + ] + ~allow_failure:Yes + ~before_script: + ((* sets COVERAGE_OUTPUT *) + before_script ~source_version:true []) + ~when_:Always + ~coverage:"/Coverage: ([^%]+%)/" + [ + (* On the project default branch, we fetch coverage from the last merged MR *) + "mkdir -p _coverage_report"; + "dune exec scripts/ci/download_coverage/download.exe -- -a \ + from=last-merged-pipeline --info --log-file \ + _coverage_report/download_coverage.log"; + "./scripts/ci/report_coverage.sh"; + ] + |> enable_coverage_location |> enable_coverage_report + in + let job_publish_documentation : tezos_job = + job + ~__POS__ + ~name:"publish:documentation" + ~image:Images.runtime_build_test_dependencies + ~stage:Stages.doc + ~dependencies:(Dependent []) + ~before_script: + (before_script + ~eval_opam:true + (* Load the environment poetry previously created in the docker image. + Give access to the Python dependencies/executables. *) + ~init_python_venv:true + [ + {|echo "${CI_PK_GITLAB_DOC}" > ~/.ssh/id_ed25519|}; + {|echo "${CI_KH}" > ~/.ssh/known_hosts|}; + {|chmod 400 ~/.ssh/id_ed25519|}; + ]) + ~interruptible:false + ~rules:[job_rule ~changes:changeset_octez_docs ~when_:On_success ()] + ["./scripts/ci/doc_publish.sh"] + in + (* Smart Rollup: Kernel SDK + + See [src/kernel_sdk/RELEASE.md] for more information. *) + let job_publish_kernel_sdk : tezos_job = + job + ~__POS__ + ~name:"publish_kernel_sdk" + ~image:Images.rust_toolchain + ~stage:Stages.manual + ~rules: + [ + (* This job is in the last stage {!Stages.manual} so we + can disallow failure without blocking the pipeline. + Furthermore, unlike other manual jobs, this is not + an "optional" job for which failures are + tolerated. *) + job_rule ~when_:Manual ~allow_failure:No (); + ] + ~allow_failure:Yes + ~dependencies:(Dependent [Artifacts job_docker_rust_toolchain]) + ~interruptible:false + ~variables: + [("CARGO_HOME", Predefined_vars.(show ci_project_dir) // "cargo")] + ~cache:[{key = "kernels"; paths = ["cargo/"]}] + [ + "make -f kernels.mk publish-sdk-deps"; + (* Manually set SSL_CERT_DIR as default setting points to empty dir *) + "SSL_CERT_DIR=/etc/ssl/certs CC=clang make -f kernels.mk publish-sdk"; + ] + in + (* arm builds are manual on the master branch pipeline *) + let build_arm_rules = [job_rule ~when_:Manual ~allow_failure:Yes ()] in + let job_build_arm64_release = + job_build_arm64_release ~rules:build_arm_rules () + in + let job_build_arm64_exp_dev_extra = + job_build_arm64_exp_dev_extra ~rules:build_arm_rules () + in + [ + (* Stage: build *) + job_docker_rust_toolchain; + job_static_x86_64; + job_static_arm64; + job_build_arm64_release; + job_build_arm64_exp_dev_extra; + job_docker_amd64_experimental; + job_docker_arm64_experimental; + (* Stage: test_coverage *) + job_unified_coverage_default; + (* Stage: doc *) + job_publish_documentation; + (* Stage: prepare_release *) + job_docker_merge_manifests; + (* Stage: manual *) + job_publish_kernel_sdk; + ] diff --git a/ci/bin/octez_latest_release.ml b/ci/bin/octez_latest_release.ml new file mode 100644 index 000000000000..ab0370b55ef1 --- /dev/null +++ b/ci/bin/octez_latest_release.ml @@ -0,0 +1,26 @@ +(*****************************************************************************) +(* *) +(* SPDX-License-Identifier: MIT *) +(* Copyright (c) 2024 Nomadic Labs. *) +(* *) +(*****************************************************************************) + +(* This module defines the jobs of the [latest_release] pipeline. + + This pipeline runs on each push to the [latest_release] branch. The + goal of this pipeline to update the [latest] Docker tag of the + Octez Docker distribution. *) + +open Tezos_ci +open Common + +let job_docker_promote_to_latest ~ci_docker_hub : tezos_job = + job_docker_authenticated + ~__POS__ + ~stage:Stages.publish_release + ~name:"docker:promote_to_latest" + ~variables:[("CI_DOCKER_HUB", Bool.to_string ci_docker_hub)] + ["./scripts/ci/docker_promote_to_latest.sh"] + +let jobs ?(test = false) () = + [job_docker_promote_to_latest ~ci_docker_hub:(not test)] diff --git a/ci/bin/release_tag.ml b/ci/bin/release_tag.ml new file mode 100644 index 000000000000..b86f8fcde44d --- /dev/null +++ b/ci/bin/release_tag.ml @@ -0,0 +1,139 @@ +(*****************************************************************************) +(* *) +(* SPDX-License-Identifier: MIT *) +(* Copyright (c) 2024 Nomadic Labs. *) +(* *) +(*****************************************************************************) + +(* This module defines the jobs of the [release_tag] family of pipelines. + + These pipeline runs on each pushes to the various release tags (see + [main.ml] for the set of regular expressions that define the + language of release tags). + + The goal of these pipelines is to create + {{:https://gitlab.com/tezos/tezos/-/releases}Octez releases on + GitLab}, the associated artifacts, and to push releases to opam. *) + +open Tezos_ci +open Common + +(** Type of release tag pipelines. + + The semantics of the type is summed up in this table: + + | | Release_tag | Beta_release_tag | Non_release_tag | + |-----------------------+-------------+------------------+-----------------| + | GitLab release type | Release | Release | Create | + | Experimental binaries | No | No | No | + | Docker build type | Release | Release | Release | + | Publishes to opam | Yes | No | No | + + - All release tag pipelines types publish [Release] type Docker builds. + - No release tag pipelines include experimental binaries. + - [Release_tag] and [Beta_release_tag] pipelines creates GitLab + and publishes releases. [Non_release_tag] pipelines creates the + GitLab release but do not publish them. + - Only [Release_tag] pipelines publish to opam. *) +type release_tag_pipeline_type = + | Release_tag + | Beta_release_tag + | Non_release_tag + +(** Create a release tag pipeline of type {!release_tag_pipeline_type}. + + If [test] is true (default is [false]), then the Docker images are + built of the [Test] type and are published to the GitLab registry + instead of Docker hub. *) +let jobs ?(test = false) release_tag_pipeline_type = + let job_docker_rust_toolchain = job_docker_rust_toolchain ~__POS__ () in + let job_docker_amd64 = + job_docker_build + ~__POS__ + ~dependencies:(Dependent [Artifacts job_docker_rust_toolchain]) + ~arch:Amd64 + (if test then Test else Release) + in + let job_docker_arm64 = + job_docker_build + ~__POS__ + ~dependencies:(Dependent [Artifacts job_docker_rust_toolchain]) + ~arch:Arm64 + (if test then Test else Release) + in + let job_docker_merge = + job_docker_merge_manifests + ~__POS__ + ~ci_docker_hub:(not test) + ~job_docker_amd64 + ~job_docker_arm64 + in + let job_static_arm64_release = + job_build_static_binaries ~__POS__ ~arch:Arm64 ~release:true () + in + let job_static_x86_64_release = + job_build_static_binaries ~__POS__ ~arch:Amd64 ~release:true () + in + let job_gitlab_release ~dependencies : Tezos_ci.tezos_job = + job + ~__POS__ + ~image:Images.ci_release + ~stage:Stages.publish_release_gitlab + ~interruptible:false + ~dependencies + ~name:"gitlab:release" + [ + "./scripts/ci/restrict_export_to_octez_source.sh"; + "./scripts/ci/gitlab-release.sh"; + ] + in + let job_gitlab_publish ~dependencies : Tezos_ci.tezos_job = + job + ~__POS__ + ~image:Images.ci_release + ~stage:Stages.publish_package_gitlab + ~interruptible:false + ~dependencies + ~name:"gitlab:publish" + ["${CI_PROJECT_DIR}/scripts/ci/create_gitlab_package.sh"] + in + let job_build_dpkg_amd64 = job_build_dpkg_amd64 () in + let job_build_rpm_amd64 = job_build_rpm_amd64 () in + let job_gitlab_release_or_publish = + let dependencies = + Dependent + [ + Artifacts job_static_x86_64_release; + Artifacts job_static_arm64_release; + Artifacts job_build_dpkg_amd64; + Artifacts job_build_rpm_amd64; + ] + in + match release_tag_pipeline_type with + | Non_release_tag -> job_gitlab_publish ~dependencies + | _ -> job_gitlab_release ~dependencies + in + let job_opam_release : Tezos_ci.tezos_job = + job + ~__POS__ + ~image:Images.runtime_build_test_dependencies + ~stage:Stages.publish_release + ~interruptible:false + ~name:"opam:release" + ["./scripts/ci/opam-release.sh"] + in + [ + job_docker_rust_toolchain; + job_static_x86_64_release; + job_static_arm64_release; + job_docker_amd64; + job_docker_arm64; + job_build_dpkg_amd64; + job_build_rpm_amd64; + job_docker_merge; + job_gitlab_release_or_publish; + ] + @ + match (test, release_tag_pipeline_type) with + | false, Release_tag -> [job_opam_release] + | _ -> [] -- GitLab From 0a59d17ca9138a3ee3942a6f065dd63ae4777ed6 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Fri, 15 Mar 2024 10:26:31 +0100 Subject: [PATCH 02/10] [ci/makefile]: remove redundant parenthesis --- ci/makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ci/makefile b/ci/makefile index f050b0b7dd52..627a8b19c2c1 100644 --- a/ci/makefile +++ b/ci/makefile @@ -1,26 +1,26 @@ .PHONY: all all: # Regenerate GitLab CI configuration. - (cd .. && . ./scripts/version.sh && dune exec ci/bin/main.exe) + cd .. && . ./scripts/version.sh && dune exec ci/bin/main.exe .PHONY: verbose verbose: # Regenerate GitLab CI configuration with verbose output. - (cd .. && . ./scripts/version.sh && dune exec ci/bin/main.exe -- --verbose) + cd .. && . ./scripts/version.sh && dune exec ci/bin/main.exe -- --verbose .PHONY: inline-source-info inline-source-info: # Regenerate GitLab CI configuration, inlining source information in generated files. - (cd .. && . ./scripts/version.sh && dune exec ci/bin/main.exe -- --inline-source-info) + cd .. && . ./scripts/version.sh && dune exec ci/bin/main.exe -- --inline-source-info .PHONY: verbose remove-extra-files: # Regenerate GitLab CI configuration and remove any non-generated files. - (cd .. && . ./scripts/version.sh && dune exec ci/bin/main.exe -- --remove-extra-files) + cd .. && . ./scripts/version.sh && dune exec ci/bin/main.exe -- --remove-extra-files .PHONY: docker-do-% docker-do-%: - @( cd .. \ + @cd .. \ && . ./scripts/version.sh \ && docker run -it -w$$(pwd) -v$$(pwd):$$(pwd) --entrypoint opam \ registry.gitlab.com/tezos/opam-repository:runtime-build-dependencies--$${opam_repository_tag} exec -- \ - make -C ci $* ) + make -C ci $* .PHONY: docker-all docker-all: docker-do-all # Build the target 'all' using the 'runtime-build-dependencies' Docker image. -- GitLab From e9fe5c47aa4628b57cb5304d20017ae3526dbca8 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 14 Mar 2024 12:23:03 +0100 Subject: [PATCH 03/10] [ci/makefile]: fix phony declaration --- ci/makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/makefile b/ci/makefile index 627a8b19c2c1..1b1e182f5d22 100644 --- a/ci/makefile +++ b/ci/makefile @@ -10,7 +10,7 @@ verbose: # Regenerate GitLab CI configuration with verbose output. inline-source-info: # Regenerate GitLab CI configuration, inlining source information in generated files. cd .. && . ./scripts/version.sh && dune exec ci/bin/main.exe -- --inline-source-info -.PHONY: verbose +.PHONY: remove-extra-files remove-extra-files: # Regenerate GitLab CI configuration and remove any non-generated files. cd .. && . ./scripts/version.sh && dune exec ci/bin/main.exe -- --remove-extra-files -- GitLab From 18301000d80d9e526c697c4f560510be5464c39a Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 14 Mar 2024 11:59:01 +0100 Subject: [PATCH 04/10] CIAO: improve generation check error messages --- ci/bin/tezos_ci.ml | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/ci/bin/tezos_ci.ml b/ci/bin/tezos_ci.ml index 044cf3761419..7db3b692999c 100644 --- a/ci/bin/tezos_ci.ml +++ b/ci/bin/tezos_ci.ml @@ -595,12 +595,15 @@ let check_files ~remove_extra_files ?(exclude = fun _ -> false) () = not ((remove_extra_files || String_set.is_empty error_not_generated) && String_set.is_empty error_generated_and_excluded) - then + then ( Cli.error "Please modify ci/bin/main.ml to either generate the above file(s)\n\ - or declare them in the 'exclude' function (but not both).\n\ - If this file is a leftover from some previous work on the CI\n\ - system then simply remove with 'make -C ci remove-extra-files' or with:\n\n\ - \ rm %s" - (error_not_generated |> String_set.elements |> String.concat " ") ; + or declare them in the 'exclude' function (but not both)." ; + if not (remove_extra_files || String_set.is_empty error_not_generated) then + Cli.error + "If this file is a leftover from some previous work on the CI\n\ + system then simply remove with 'make -C ci remove-extra-files' or \ + with:\n\n\ + \ rm %s" + (error_not_generated |> String_set.elements |> String.concat " ")) ; if !Cli.has_error then exit 1 -- GitLab From 490d0d5084a8518d04e282850d7b81c3b21eddd9 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 14 Mar 2024 11:59:24 +0100 Subject: [PATCH 05/10] CI: generate [sanity_ci] --- .gitlab/ci/jobs/sanity/sanity_ci.yml | 25 ++++++++++++------------ ci/bin/code_verification.ml | 29 +++++++++++++++++++++++++++- ci/bin/main.ml | 1 - 3 files changed, 41 insertions(+), 14 deletions(-) diff --git a/.gitlab/ci/jobs/sanity/sanity_ci.yml b/.gitlab/ci/jobs/sanity/sanity_ci.yml index 1953d5c94cd1..03fbc48c8a15 100644 --- a/.gitlab/ci/jobs/sanity/sanity_ci.yml +++ b/.gitlab/ci/jobs/sanity/sanity_ci.yml @@ -1,16 +1,17 @@ +# This file was automatically generated, do not edit. +# Edit file ci/bin/main.ml instead. + sanity_ci: - extends: - - .default_settings_template - - .image_template__runtime_build_dependencies + image: ${build_deps_image_name}:runtime-build-dependencies--${build_deps_image_version} stage: sanity + tags: + - gcp + dependencies: [] before_script: - - ./scripts/ci/take_ownership.sh - - eval $(opam env) + - ./scripts/ci/take_ownership.sh + - eval $(opam env) script: - - make -C manifest check - - ./scripts/lint.sh --check-gitlab-ci-yml - # Check that the opam-repo images' Alpine version corresponds to - # the value in scripts/version.sh. - - ./scripts/ci/check_alpine_version.sh - # Check that .gitlab-ci.yml is up to date - - make -C ci check + - make -C manifest check + - ./scripts/lint.sh --check-gitlab-ci-yml + - ./scripts/ci/check_alpine_version.sh + - make -C ci check diff --git a/ci/bin/code_verification.ml b/ci/bin/code_verification.ml index 607102afaadf..7baae519e2ee 100644 --- a/ci/bin/code_verification.ml +++ b/ci/bin/code_verification.ml @@ -52,6 +52,13 @@ let jobs pipeline_type = | Schedule_extended_test -> scheduled_suffix) job in + (* Used to externalize jobs that are the same on both pipelines. They're only written once. + Beware: there is no check that the two jobs are actually identical. *) + let job_external_once job = + match pipeline_type with + | Before_merging -> job_external job + | Schedule_extended_test -> job + in (* [make_rules] makes rules for jobs that are: - automatic in scheduled pipelines; - conditional in [before_merging] pipelines. @@ -122,7 +129,27 @@ let jobs pipeline_type = (* TODO: put job_trigger here when full pipeline is generated *) ([], Dependent [Optional job_trigger]) in - let sanity = [] in + let sanity = + let _job_sanity_ci : tezos_job = + job + ~__POS__ + ~name:"sanity_ci" + ~image:Images.runtime_build_dependencies + ~stage:Stages.sanity + ~before_script:(before_script ~take_ownership:true ~eval_opam:true []) + [ + "make -C manifest check"; + "./scripts/lint.sh --check-gitlab-ci-yml"; + (* Check that the opam-repo images' Alpine version corresponds to + the value in scripts/version.sh. *) + "./scripts/ci/check_alpine_version.sh"; + (* Check that .gitlab-ci.yml is up to date. *) + "make -C ci check"; + ] + |> job_external_once + in + [] + in let job_docker_rust_toolchain = job_docker_rust_toolchain ~__POS__ diff --git a/ci/bin/main.ml b/ci/bin/main.ml index 035a4edaa4c0..8cdf47088a26 100644 --- a/ci/bin/main.ml +++ b/ci/bin/main.ml @@ -195,7 +195,6 @@ let () = | ".gitlab/ci/jobs/sanity/docker:hadolint-before_merging.yml" | ".gitlab/ci/jobs/sanity/docker:hadolint-schedule_extended_test.yml" | ".gitlab/ci/jobs/sanity/docker:hadolint.yml" - | ".gitlab/ci/jobs/sanity/sanity_ci.yml" | ".gitlab/ci/jobs/shared/images.yml" | ".gitlab/ci/jobs/shared/templates.yml" | ".gitlab/ci/jobs/test/commit_titles.yml" -- GitLab From 57714c2a16128c7683da08fc24be47e9e7e5fa7c Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Wed, 6 Mar 2024 11:35:52 +0100 Subject: [PATCH 06/10] CI: refactor, add explicit [when:] to hadolint job rule --- .gitlab/ci/jobs/sanity/docker:hadolint-before_merging.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab/ci/jobs/sanity/docker:hadolint-before_merging.yml b/.gitlab/ci/jobs/sanity/docker:hadolint-before_merging.yml index a5ad35760140..91a4d16ee042 100644 --- a/.gitlab/ci/jobs/sanity/docker:hadolint-before_merging.yml +++ b/.gitlab/ci/jobs/sanity/docker:hadolint-before_merging.yml @@ -9,3 +9,4 @@ docker:hadolint-before_merging: - changes: - build.Dockerfile - Dockerfile + when: on_success -- GitLab From a052a4c789276cd384826af99364eae15290fb37 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 14 Mar 2024 12:02:06 +0100 Subject: [PATCH 07/10] CI: generate [docker:hadolint] --- .../sanity/docker:hadolint-before_merging.yml | 21 ++++++++++++------- ...docker:hadolint-schedule_extended_test.yml | 14 ++++++++++--- .gitlab/ci/jobs/sanity/docker:hadolint.yml | 11 ---------- .gitlab/ci/jobs/shared/images.yml | 2 ++ ci/bin/code_verification.ml | 16 ++++++++++++++ ci/bin/common.ml | 5 +++++ ci/bin/main.ml | 3 --- 7 files changed, 47 insertions(+), 25 deletions(-) delete mode 100644 .gitlab/ci/jobs/sanity/docker:hadolint.yml diff --git a/.gitlab/ci/jobs/sanity/docker:hadolint-before_merging.yml b/.gitlab/ci/jobs/sanity/docker:hadolint-before_merging.yml index 91a4d16ee042..0338b3a6bb2d 100644 --- a/.gitlab/ci/jobs/sanity/docker:hadolint-before_merging.yml +++ b/.gitlab/ci/jobs/sanity/docker:hadolint-before_merging.yml @@ -1,12 +1,17 @@ -include: .gitlab/ci/jobs/sanity/docker:hadolint.yml +# This file was automatically generated, do not edit. +# Edit file ci/bin/main.ml instead. docker:hadolint-before_merging: - extends: - - .docker:hadolint + image: hadolint/hadolint:2.9.3-debian stage: sanity + tags: + - gcp rules: - # Only run on merge requests when Dockerfiles have changed - - changes: - - build.Dockerfile - - Dockerfile - when: on_success + - changes: + - build.Dockerfile + - Dockerfile + when: on_success + dependencies: [] + script: + - hadolint build.Dockerfile + - hadolint Dockerfile diff --git a/.gitlab/ci/jobs/sanity/docker:hadolint-schedule_extended_test.yml b/.gitlab/ci/jobs/sanity/docker:hadolint-schedule_extended_test.yml index 031b42c93a30..3cef2fe7ac57 100644 --- a/.gitlab/ci/jobs/sanity/docker:hadolint-schedule_extended_test.yml +++ b/.gitlab/ci/jobs/sanity/docker:hadolint-schedule_extended_test.yml @@ -1,6 +1,14 @@ -include: .gitlab/ci/jobs/sanity/docker:hadolint.yml +# This file was automatically generated, do not edit. +# Edit file ci/bin/main.ml instead. docker:hadolint-schedule_extended_test: - extends: - - .docker:hadolint + image: hadolint/hadolint:2.9.3-debian stage: sanity + tags: + - gcp + rules: + - when: always + dependencies: [] + script: + - hadolint build.Dockerfile + - hadolint Dockerfile diff --git a/.gitlab/ci/jobs/sanity/docker:hadolint.yml b/.gitlab/ci/jobs/sanity/docker:hadolint.yml deleted file mode 100644 index e618d499d25d..000000000000 --- a/.gitlab/ci/jobs/sanity/docker:hadolint.yml +++ /dev/null @@ -1,11 +0,0 @@ -# Templates in this file have almost all the elements of jobs: everything but `rules`. -# They are intended to be extended into one MR pipeline job and one scheduled pipeline -# job. See other files in this directory extending these templates. - -.docker:hadolint: - extends: - - .default_settings_template - image: hadolint/hadolint:2.9.3-debian - script: - - hadolint build.Dockerfile - - hadolint Dockerfile diff --git a/.gitlab/ci/jobs/shared/images.yml b/.gitlab/ci/jobs/shared/images.yml index befd69a4fdc2..1525e775d9c9 100644 --- a/.gitlab/ci/jobs/shared/images.yml +++ b/.gitlab/ci/jobs/shared/images.yml @@ -13,6 +13,8 @@ image: ${GCP_REGISTRY}/tezos/docker-images/ci-docker:v1.10.0 .image_template__fedora_39: image: fedora:39 +.image_template__hadolint: + image: hadolint/hadolint:2.9.3-debian .image_template__runtime_build_dependencies: image: ${build_deps_image_name}:runtime-build-dependencies--${build_deps_image_version} .image_template__runtime_build_test_dependencies: diff --git a/ci/bin/code_verification.ml b/ci/bin/code_verification.ml index 7baae519e2ee..d8d99008f2f2 100644 --- a/ci/bin/code_verification.ml +++ b/ci/bin/code_verification.ml @@ -148,6 +148,22 @@ let jobs pipeline_type = ] |> job_external_once in + let _job_docker_hadolint = + job + ~rules:(make_rules ~changes:changeset_hadolint_docker_files ()) + ~__POS__ + ~name: + (* TODO: I'm not sure it makes sense to have different names for the same job *) + ("docker:hadolint-" + ^ + match pipeline_type with + | Before_merging -> "before_merging" + | Schedule_extended_test -> "schedule_extended_test") + ~image:Images.hadolint + ~stage:Stages.sanity + ["hadolint build.Dockerfile"; "hadolint Dockerfile"] + |> job_external + in [] in let job_docker_rust_toolchain = diff --git a/ci/bin/common.ml b/ci/bin/common.ml index e7a1bb2e2771..bdee2c69afa7 100644 --- a/ci/bin/common.ml +++ b/ci/bin/common.ml @@ -151,6 +151,9 @@ module Images = struct Image.register ~name:"ci_release" ~image_path:"${GCP_REGISTRY}/tezos/docker-images/ci-release:v1.4.0" + + let hadolint = + Image.register ~name:"hadolint" ~image_path:"hadolint/hadolint:2.9.3-debian" end (** {2 Helpers} *) @@ -261,6 +264,8 @@ let changeset_octez_docker_changes_or_master = ".gitlab-ci.yml"; ] +let changeset_hadolint_docker_files = ["build.Dockerfile"; "Dockerfile"] + (** {2 Job makers} *) (** Helper to create jobs that uses the docker deamon. diff --git a/ci/bin/main.ml b/ci/bin/main.ml index 8cdf47088a26..cf6213090a57 100644 --- a/ci/bin/main.ml +++ b/ci/bin/main.ml @@ -192,9 +192,6 @@ let () = | ".gitlab/ci/jobs/packaging/debian_repository.yml" | ".gitlab/ci/jobs/packaging/opam:prepare.yml" | ".gitlab/ci/jobs/packaging/opam_package.yml" - | ".gitlab/ci/jobs/sanity/docker:hadolint-before_merging.yml" - | ".gitlab/ci/jobs/sanity/docker:hadolint-schedule_extended_test.yml" - | ".gitlab/ci/jobs/sanity/docker:hadolint.yml" | ".gitlab/ci/jobs/shared/images.yml" | ".gitlab/ci/jobs/shared/templates.yml" | ".gitlab/ci/jobs/test/commit_titles.yml" -- GitLab From 8734e614778c09bb94abd9ed2881cb77f3f579d3 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Fri, 1 Mar 2024 15:27:25 +0100 Subject: [PATCH 08/10] CI-in-OCaml: add function for writing sets of jobs to external file --- ci/bin/tezos_ci.ml | 6 ++++++ ci/bin/tezos_ci.mli | 14 ++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/ci/bin/tezos_ci.ml b/ci/bin/tezos_ci.ml index 7db3b692999c..0eff2db4ac8b 100644 --- a/ci/bin/tezos_ci.ml +++ b/ci/bin/tezos_ci.ml @@ -452,6 +452,12 @@ let job_external ?directory ?filename_suffix (tezos_job : tezos_job) : tezos_job to_file ~filename config ; tezos_job +let jobs_external ~path (tezos_jobs : tezos_job list) : tezos_job list = + let filename = sf ".gitlab/ci/jobs/%s" path in + let config = List.map (fun {job; _} -> Gitlab_ci.Types.Job job) tezos_jobs in + to_file ~filename config ; + tezos_jobs + let add_artifacts ?name ?expose_as ?reports ?expire_in ?when_ paths (tezos_job : tezos_job) = map_job tezos_job @@ fun (job : Gitlab_ci.Types.job) -> diff --git a/ci/bin/tezos_ci.mli b/ci/bin/tezos_ci.mli index e3927fa82fd1..64edb68fe1fc 100644 --- a/ci/bin/tezos_ci.mli +++ b/ci/bin/tezos_ci.mli @@ -245,6 +245,20 @@ val job : val job_external : ?directory:string -> ?filename_suffix:string -> tezos_job -> tezos_job +(** Generates a set of jobs to the same external file. + + This function is meant to be used in the transition to CI-in-OCaml. + It writes {!header} and the given jobs to the file + [.gitlab/ci/jobs/PATH]. + + The use case is the same as [job_external] but for cases where it + is impractical to split a set of jobs into one file per job + (e.g. opam package test jobs). + + The returned set of jobs is the same as the input, for ease of + chaining. *) +val jobs_external : path:string -> tezos_job list -> tezos_job list + (** Adds artifacts to a job without overriding, if possible, existing artifacts. - If the job already has an artifact with [old_name] and [name] is given, then -- GitLab From f9f977ad48e27012d0540e714399c65463a72112 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Fri, 12 Jan 2024 10:18:37 +0100 Subject: [PATCH 09/10] Manifest: write opam packages to test to [script-inputs] --- manifest/manifest.ml | 74 +++-------------------- script-inputs/ci-opam-package-tests | 93 +++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+), 67 deletions(-) create mode 100644 script-inputs/ci-opam-package-tests diff --git a/manifest/manifest.ml b/manifest/manifest.ml index 92acba4e2f1f..3d96b8dcfe34 100644 --- a/manifest/manifest.ml +++ b/manifest/manifest.ml @@ -3950,47 +3950,7 @@ let packages_dir, release, remove_extra_files, manifezt = in (!packages_dir, release, !remove_extra_files, manifezt) -let print_opam_job_rules fmt batch_index pipeline_type marge_restriction = - Format.fprintf - fmt - {|@..rules_template__trigger_%s_opam_batch_%d: - rules: - # Run on scheduled builds. - - if: '$CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS"' - when: delayed - start_in: %s - # Run when there is label on the merge request - - if: '$CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/' - when: delayed - start_in: %d minutes - # Run on merge requests when opam changes are detected. - - if: '%s' - changes: - - "**/dune" - - "**/dune.inc" - - "**/*.dune.inc" - - "**/dune-project" - - "**/dune-workspace" - - "**/*.opam" - - .gitlab/ci/jobs/packaging/opam:prepare.yml - - .gitlab/ci/jobs/packaging/opam_package.yml - - manifest/manifest.ml - - manifest/main.ml - - scripts/opam-prepare-repo.sh - - scripts/version.sh - when: delayed - start_in: %d minutes - - when: never # default -|} - pipeline_type - batch_index - (string_of_int batch_index ^ " " - ^ if batch_index = 1 then "minute" else "minutes") - batch_index - marge_restriction - batch_index - -let generate_opam_ci opam_release_graph = +let generate_opam_ci_input opam_release_graph = (* We only need to test released packages, since those are the only one that will need to pass the public Opam CI. *) let contain_executables package = @@ -4046,38 +4006,18 @@ let generate_opam_ci opam_release_graph = List.sort by_name l in (* Now [packages] is a list of [batch_index, package_name] - where [batch_index] is 0 for packages that we do not need to test. *) - write ".gitlab/ci/jobs/packaging/opam_package.yml" @@ fun fmt -> - pp_do_not_edit ~comment_start:"#" fmt () ; - (* Output one template per batch. *) - let marge_restriction_exec = - "$CI_PIPELINE_SOURCE == \"merge_request_event\"" - in - let marge_restriction_all = - marge_restriction_exec ^ " && $GITLAB_USER_LOGIN == \"nomadic-margebot\"" - in - for batch_index = 1 to batch_count do - print_opam_job_rules fmt batch_index "exec" marge_restriction_exec ; - print_opam_job_rules fmt batch_index "all" marge_restriction_all - done ; - - (* Output one job per released package. *) + where [batch_index] is 0 for packages that we do not need to test. + Write the set of packages and whether they are executables to [script-inputs], + for consumption by the CI generator. *) + write "script-inputs/ci-opam-package-tests" @@ fun fmt -> let output_job (batch_index, package_name, is_executable) = if batch_index > 0 then Format.fprintf fmt - {|@.opam:%s: - extends: - - .opam_template - - .rules_template__trigger_%s_opam_batch_%d - variables: - package: %s -|} + "%s\t%s\t%d\n" package_name (if is_executable then "exec" else "all") batch_index - package_name - else Format.fprintf fmt "@.# Ignoring unreleased package %s.\n" package_name in List.iter output_job packages @@ -4546,7 +4486,7 @@ let generate ~make_tezt_exe ~tezt_exe_deps ~default_profile ~add_to_meta_package generate_dune_project_files () ; generate_package_json_file () ; let opam_release_graph = compute_opam_release_graph () in - generate_opam_ci opam_release_graph ; + generate_opam_ci_input opam_release_graph ; generate_executable_list "script-inputs/released-executables" Released ; generate_executable_list "script-inputs/experimental-executables" diff --git a/script-inputs/ci-opam-package-tests b/script-inputs/ci-opam-package-tests new file mode 100644 index 000000000000..bc72357d243a --- /dev/null +++ b/script-inputs/ci-opam-package-tests @@ -0,0 +1,93 @@ +bls12-381 all 7 +octez-accuser-Proxford exec 1 +octez-accuser-PtParisA exec 1 +octez-alcotezt all 7 +octez-baker-Proxford exec 1 +octez-baker-PtParisA exec 1 +octez-client exec 1 +octez-codec exec 1 +octez-crawler all 4 +octez-dac-client exec 1 +octez-dac-node exec 1 +octez-distributed-internal all 7 +octez-distributed-lwt-internal all 7 +octez-injector all 2 +octez-internal-libs all 7 +octez-l2-libs all 6 +octez-libs all 7 +octez-node exec 1 +octez-node-config all 4 +octez-proto-libs all 6 +octez-protocol-000-Ps9mPmXa-libs all 2 +octez-protocol-001-PtCJ7pwo-libs all 2 +octez-protocol-002-PsYLVpVv-libs all 2 +octez-protocol-003-PsddFKi3-libs all 3 +octez-protocol-004-Pt24m4xi-libs all 3 +octez-protocol-005-PsBabyM1-libs all 3 +octez-protocol-006-PsCARTHA-libs all 3 +octez-protocol-007-PsDELPH1-libs all 3 +octez-protocol-008-PtEdo2Zk-libs all 3 +octez-protocol-009-PsFLoren-libs all 3 +octez-protocol-010-PtGRANAD-libs all 3 +octez-protocol-011-PtHangz2-libs all 3 +octez-protocol-012-Psithaca-libs all 3 +octez-protocol-013-PtJakart-libs all 3 +octez-protocol-014-PtKathma-libs all 3 +octez-protocol-015-PtLimaPt-libs all 3 +octez-protocol-016-PtMumbai-libs all 2 +octez-protocol-017-PtNairob-libs all 2 +octez-protocol-018-Proxford-libs all 2 +octez-protocol-019-PtParisA-libs all 2 +octez-protocol-alpha-libs all 2 +octez-protocol-compiler exec 6 +octez-proxy-server exec 1 +octez-rpc-process all 3 +octez-shell-libs all 6 +octez-signer exec 4 +octez-smart-rollup-node exec 1 +octez-smart-rollup-node-Proxford all 1 +octez-smart-rollup-node-PtNairob all 2 +octez-smart-rollup-node-PtParisA all 1 +octez-smart-rollup-node-alpha all 2 +octez-smart-rollup-node-lib all 2 +octez-smart-rollup-wasm-debugger exec 1 +octez-smart-rollup-wasm-debugger-lib all 2 +octez-smart-rollup-wasm-debugger-plugin all 7 +octez-version exec 6 +tezos-benchmark all 6 +tezos-client-demo-counter all 4 +tezos-client-genesis all 4 +tezos-dac-client-lib all 4 +tezos-dac-lib all 4 +tezos-dac-node-lib all 2 +tezos-dal-node-lib all 4 +tezos-dal-node-services all 6 +tezos-openapi all 7 +tezos-protocol-000-Ps9mPmXa all 4 +tezos-protocol-001-PtCJ7pwo all 4 +tezos-protocol-002-PsYLVpVv all 4 +tezos-protocol-003-PsddFKi3 all 4 +tezos-protocol-004-Pt24m4xi all 4 +tezos-protocol-005-PsBABY5H all 4 +tezos-protocol-005-PsBabyM1 all 5 +tezos-protocol-006-PsCARTHA all 5 +tezos-protocol-007-PsDELPH1 all 5 +tezos-protocol-008-PtEdo2Zk all 5 +tezos-protocol-008-PtEdoTez all 5 +tezos-protocol-009-PsFLoren all 5 +tezos-protocol-010-PtGRANAD all 5 +tezos-protocol-011-PtHangz2 all 5 +tezos-protocol-012-Psithaca all 5 +tezos-protocol-013-PtJakart all 5 +tezos-protocol-014-PtKathma all 5 +tezos-protocol-015-PtLimaPt all 5 +tezos-protocol-016-PtMumbai all 5 +tezos-protocol-017-PtNairob all 5 +tezos-protocol-018-Proxford all 6 +tezos-protocol-019-PtParisA all 6 +tezos-protocol-alpha all 6 +tezos-protocol-demo-counter all 6 +tezos-protocol-demo-noops all 6 +tezos-protocol-genesis all 6 +tezos-proxy-server-config all 6 +tezt-tezos all 7 -- GitLab From 4494c4295d2c2ea8fc444cdff3a8828361dc2429 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 14 Mar 2024 12:23:43 +0100 Subject: [PATCH 10/10] CI: generate [opam:*] jobs --- .gitlab/ci/jobs/packaging/opam:prepare.yml | 104 +- .gitlab/ci/jobs/packaging/opam_package.yml | 6367 +++++++++++++++++--- ci/bin/code_verification.ml | 139 +- ci/bin/common.ml | 30 + ci/bin/main.ml | 2 - ci/lib_gitlab_ci/base.ml | 9 + ci/makefile | 12 +- 7 files changed, 5803 insertions(+), 860 deletions(-) diff --git a/.gitlab/ci/jobs/packaging/opam:prepare.yml b/.gitlab/ci/jobs/packaging/opam:prepare.yml index 4506eba1c20b..2711564ee7ac 100644 --- a/.gitlab/ci/jobs/packaging/opam:prepare.yml +++ b/.gitlab/ci/jobs/packaging/opam:prepare.yml @@ -1,72 +1,46 @@ -# This template is used by the opam test jobs defined in -# .gitlab/ci/jobs/packaging/opam_package.yml -.opam_template: - extends: - - .default_settings_template - - .image_template__runtime_prebuild_dependencies - # FIXME: https://gitlab.com/nomadic-labs/tezos/-/issues/663 - # FIXME: https://gitlab.com/nomadic-labs/tezos/-/issues/664 - # At the time of writing, the opam tests were quite flaky. - # Therefore, a retry was added. This should be removed once the - # underlying tests have been fixed. - - .oc.template__retry_flaky - stage: packaging - needs: [opam:prepare] - dependencies: [opam:prepare] - before_script: - - eval $(opam env) - - mkdir -p $CI_PROJECT_DIR/opam_logs - # Start sccache. If sccache fails to start, it will set - # RUSTC_WRAPPER to "", inhibiting sccache in the rest of the - # script. - - . ./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: - # Stores logs in opam_logs for artifacts and outputs an excerpt on - # failure. [after_script] runs in a separate shell and so requires - # a second opam environment initialization. - - sccache --stop-server || true - - eval $(opam env) - - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh - artifacts: - paths: - - opam_logs/ - expire_in: 1 week - when: always - variables: - # See `.gitlab-ci.yml` for details on `RUNTEZTALIAS` - RUNTEZTALIAS: "true" - # We store caches in _build for two reasons: (1) the _build - # folder is excluded from opam's rsync. (2) gitlab ci cache - # requires that cached files are in a sub-folder of the checkout. - SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache - SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log - SCCACHE_LOG: debug - # Disable timeout - SCCACHE_IDLE_TIMEOUT: 0 - RUSTC_WRAPPER: "sccache" - cache: - key: opam-sccache - paths: - - _build/_sccache +# This file was automatically generated, do not edit. +# Edit file ci/bin/main.ml instead. opam:prepare: - extends: - - .default_settings_template - - .image_template__runtime_prebuild_dependencies - - .needs__trigger - - .rules_template__trigger_exec_opam_batch_1 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 1 minute + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 1 minute + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: delayed + start_in: 1 minute + - when: never + needs: + - job: trigger + optional: true + dependencies: [] before_script: - - eval $(opam env) + - 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" + - 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-repo-for-release/ diff --git a/.gitlab/ci/jobs/packaging/opam_package.yml b/.gitlab/ci/jobs/packaging/opam_package.yml index 90041059978c..4dfd2c27334c 100644 --- a/.gitlab/ci/jobs/packaging/opam_package.yml +++ b/.gitlab/ci/jobs/packaging/opam_package.yml @@ -1,1159 +1,5954 @@ # This file was automatically generated, do not edit. -# Edit file manifest/main.ml instead. - -.rules_template__trigger_exec_opam_batch_1: - rules: - # Run on scheduled builds. - - if: '$CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS"' - when: delayed - start_in: 1 minute - # Run when there is label on the merge request - - if: '$CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/' - when: delayed - start_in: 1 minutes - # Run on merge requests when opam changes are detected. - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - changes: - - "**/dune" - - "**/dune.inc" - - "**/*.dune.inc" - - "**/dune-project" - - "**/dune-workspace" - - "**/*.opam" - - .gitlab/ci/jobs/packaging/opam:prepare.yml - - .gitlab/ci/jobs/packaging/opam_package.yml - - manifest/manifest.ml - - manifest/main.ml - - scripts/opam-prepare-repo.sh - - scripts/version.sh - when: delayed - start_in: 1 minutes - - when: never # default - -.rules_template__trigger_all_opam_batch_1: - rules: - # Run on scheduled builds. - - if: '$CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS"' - when: delayed - start_in: 1 minute - # Run when there is label on the merge request - - if: '$CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/' - when: delayed - start_in: 1 minutes - # Run on merge requests when opam changes are detected. - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot"' - changes: - - "**/dune" - - "**/dune.inc" - - "**/*.dune.inc" - - "**/dune-project" - - "**/dune-workspace" - - "**/*.opam" - - .gitlab/ci/jobs/packaging/opam:prepare.yml - - .gitlab/ci/jobs/packaging/opam_package.yml - - manifest/manifest.ml - - manifest/main.ml - - scripts/opam-prepare-repo.sh - - scripts/version.sh - when: delayed - start_in: 1 minutes - - when: never # default - -.rules_template__trigger_exec_opam_batch_2: - rules: - # Run on scheduled builds. - - if: '$CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS"' - when: delayed - start_in: 2 minutes - # Run when there is label on the merge request - - if: '$CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/' - when: delayed - start_in: 2 minutes - # Run on merge requests when opam changes are detected. - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - changes: - - "**/dune" - - "**/dune.inc" - - "**/*.dune.inc" - - "**/dune-project" - - "**/dune-workspace" - - "**/*.opam" - - .gitlab/ci/jobs/packaging/opam:prepare.yml - - .gitlab/ci/jobs/packaging/opam_package.yml - - manifest/manifest.ml - - manifest/main.ml - - scripts/opam-prepare-repo.sh - - scripts/version.sh - when: delayed - start_in: 2 minutes - - when: never # default - -.rules_template__trigger_all_opam_batch_2: - rules: - # Run on scheduled builds. - - if: '$CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS"' - when: delayed - start_in: 2 minutes - # Run when there is label on the merge request - - if: '$CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/' - when: delayed - start_in: 2 minutes - # Run on merge requests when opam changes are detected. - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot"' - changes: - - "**/dune" - - "**/dune.inc" - - "**/*.dune.inc" - - "**/dune-project" - - "**/dune-workspace" - - "**/*.opam" - - .gitlab/ci/jobs/packaging/opam:prepare.yml - - .gitlab/ci/jobs/packaging/opam_package.yml - - manifest/manifest.ml - - manifest/main.ml - - scripts/opam-prepare-repo.sh - - scripts/version.sh - when: delayed - start_in: 2 minutes - - when: never # default - -.rules_template__trigger_exec_opam_batch_3: - rules: - # Run on scheduled builds. - - if: '$CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS"' - when: delayed - start_in: 3 minutes - # Run when there is label on the merge request - - if: '$CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/' - when: delayed - start_in: 3 minutes - # Run on merge requests when opam changes are detected. - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - changes: - - "**/dune" - - "**/dune.inc" - - "**/*.dune.inc" - - "**/dune-project" - - "**/dune-workspace" - - "**/*.opam" - - .gitlab/ci/jobs/packaging/opam:prepare.yml - - .gitlab/ci/jobs/packaging/opam_package.yml - - manifest/manifest.ml - - manifest/main.ml - - scripts/opam-prepare-repo.sh - - scripts/version.sh - when: delayed - start_in: 3 minutes - - when: never # default - -.rules_template__trigger_all_opam_batch_3: - rules: - # Run on scheduled builds. - - if: '$CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS"' - when: delayed - start_in: 3 minutes - # Run when there is label on the merge request - - if: '$CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/' - when: delayed - start_in: 3 minutes - # Run on merge requests when opam changes are detected. - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot"' - changes: - - "**/dune" - - "**/dune.inc" - - "**/*.dune.inc" - - "**/dune-project" - - "**/dune-workspace" - - "**/*.opam" - - .gitlab/ci/jobs/packaging/opam:prepare.yml - - .gitlab/ci/jobs/packaging/opam_package.yml - - manifest/manifest.ml - - manifest/main.ml - - scripts/opam-prepare-repo.sh - - scripts/version.sh - when: delayed - start_in: 3 minutes - - when: never # default - -.rules_template__trigger_exec_opam_batch_4: - rules: - # Run on scheduled builds. - - if: '$CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS"' - when: delayed - start_in: 4 minutes - # Run when there is label on the merge request - - if: '$CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/' - when: delayed - start_in: 4 minutes - # Run on merge requests when opam changes are detected. - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - changes: - - "**/dune" - - "**/dune.inc" - - "**/*.dune.inc" - - "**/dune-project" - - "**/dune-workspace" - - "**/*.opam" - - .gitlab/ci/jobs/packaging/opam:prepare.yml - - .gitlab/ci/jobs/packaging/opam_package.yml - - manifest/manifest.ml - - manifest/main.ml - - scripts/opam-prepare-repo.sh - - scripts/version.sh - when: delayed - start_in: 4 minutes - - when: never # default - -.rules_template__trigger_all_opam_batch_4: - rules: - # Run on scheduled builds. - - if: '$CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS"' - when: delayed - start_in: 4 minutes - # Run when there is label on the merge request - - if: '$CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/' - when: delayed - start_in: 4 minutes - # Run on merge requests when opam changes are detected. - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot"' - changes: - - "**/dune" - - "**/dune.inc" - - "**/*.dune.inc" - - "**/dune-project" - - "**/dune-workspace" - - "**/*.opam" - - .gitlab/ci/jobs/packaging/opam:prepare.yml - - .gitlab/ci/jobs/packaging/opam_package.yml - - manifest/manifest.ml - - manifest/main.ml - - scripts/opam-prepare-repo.sh - - scripts/version.sh - when: delayed - start_in: 4 minutes - - when: never # default - -.rules_template__trigger_exec_opam_batch_5: - rules: - # Run on scheduled builds. - - if: '$CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS"' - when: delayed - start_in: 5 minutes - # Run when there is label on the merge request - - if: '$CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/' - when: delayed - start_in: 5 minutes - # Run on merge requests when opam changes are detected. - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - changes: - - "**/dune" - - "**/dune.inc" - - "**/*.dune.inc" - - "**/dune-project" - - "**/dune-workspace" - - "**/*.opam" - - .gitlab/ci/jobs/packaging/opam:prepare.yml - - .gitlab/ci/jobs/packaging/opam_package.yml - - manifest/manifest.ml - - manifest/main.ml - - scripts/opam-prepare-repo.sh - - scripts/version.sh - when: delayed - start_in: 5 minutes - - when: never # default - -.rules_template__trigger_all_opam_batch_5: - rules: - # Run on scheduled builds. - - if: '$CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS"' - when: delayed - start_in: 5 minutes - # Run when there is label on the merge request - - if: '$CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/' - when: delayed - start_in: 5 minutes - # Run on merge requests when opam changes are detected. - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot"' - changes: - - "**/dune" - - "**/dune.inc" - - "**/*.dune.inc" - - "**/dune-project" - - "**/dune-workspace" - - "**/*.opam" - - .gitlab/ci/jobs/packaging/opam:prepare.yml - - .gitlab/ci/jobs/packaging/opam_package.yml - - manifest/manifest.ml - - manifest/main.ml - - scripts/opam-prepare-repo.sh - - scripts/version.sh - when: delayed - start_in: 5 minutes - - when: never # default - -.rules_template__trigger_exec_opam_batch_6: - rules: - # Run on scheduled builds. - - if: '$CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS"' - when: delayed - start_in: 6 minutes - # Run when there is label on the merge request - - if: '$CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/' - when: delayed - start_in: 6 minutes - # Run on merge requests when opam changes are detected. - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - changes: - - "**/dune" - - "**/dune.inc" - - "**/*.dune.inc" - - "**/dune-project" - - "**/dune-workspace" - - "**/*.opam" - - .gitlab/ci/jobs/packaging/opam:prepare.yml - - .gitlab/ci/jobs/packaging/opam_package.yml - - manifest/manifest.ml - - manifest/main.ml - - scripts/opam-prepare-repo.sh - - scripts/version.sh - when: delayed - start_in: 6 minutes - - when: never # default - -.rules_template__trigger_all_opam_batch_6: - rules: - # Run on scheduled builds. - - if: '$CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS"' - when: delayed - start_in: 6 minutes - # Run when there is label on the merge request - - if: '$CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/' - when: delayed - start_in: 6 minutes - # Run on merge requests when opam changes are detected. - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot"' - changes: - - "**/dune" - - "**/dune.inc" - - "**/*.dune.inc" - - "**/dune-project" - - "**/dune-workspace" - - "**/*.opam" - - .gitlab/ci/jobs/packaging/opam:prepare.yml - - .gitlab/ci/jobs/packaging/opam_package.yml - - manifest/manifest.ml - - manifest/main.ml - - scripts/opam-prepare-repo.sh - - scripts/version.sh - when: delayed - start_in: 6 minutes - - when: never # default - -.rules_template__trigger_exec_opam_batch_7: - rules: - # Run on scheduled builds. - - if: '$CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS"' - when: delayed - start_in: 7 minutes - # Run when there is label on the merge request - - if: '$CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/' - when: delayed - start_in: 7 minutes - # Run on merge requests when opam changes are detected. - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - changes: - - "**/dune" - - "**/dune.inc" - - "**/*.dune.inc" - - "**/dune-project" - - "**/dune-workspace" - - "**/*.opam" - - .gitlab/ci/jobs/packaging/opam:prepare.yml - - .gitlab/ci/jobs/packaging/opam_package.yml - - manifest/manifest.ml - - manifest/main.ml - - scripts/opam-prepare-repo.sh - - scripts/version.sh - when: delayed - start_in: 7 minutes - - when: never # default - -.rules_template__trigger_all_opam_batch_7: - rules: - # Run on scheduled builds. - - if: '$CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS"' - when: delayed - start_in: 7 minutes - # Run when there is label on the merge request - - if: '$CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/' - when: delayed - start_in: 7 minutes - # Run on merge requests when opam changes are detected. - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot"' - changes: - - "**/dune" - - "**/dune.inc" - - "**/*.dune.inc" - - "**/dune-project" - - "**/dune-workspace" - - "**/*.opam" - - .gitlab/ci/jobs/packaging/opam:prepare.yml - - .gitlab/ci/jobs/packaging/opam_package.yml - - manifest/manifest.ml - - manifest/main.ml - - scripts/opam-prepare-repo.sh - - scripts/version.sh - when: delayed - start_in: 7 minutes - - when: never # default +# Edit file ci/bin/main.ml instead. opam:bls12-381: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_7 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 7 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 7 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 7 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: bls12-381 - -# Ignoring unreleased package gitlab_ci. - -# Ignoring unreleased package internal-devtools. - -# Ignoring unreleased package internal-devtools_proto-context-du. - -# Ignoring unreleased package kaitai. - -# Ignoring unreleased package kaitai-of-data-encoding. + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-accuser-Proxford: - extends: - - .opam_template - - .rules_template__trigger_exec_opam_batch_1 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 1 minute + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 1 minute + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: delayed + start_in: 1 minute + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-accuser-Proxford + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-accuser-PtParisA: - extends: - - .opam_template - - .rules_template__trigger_exec_opam_batch_1 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 1 minute + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 1 minute + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: delayed + start_in: 1 minute + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-accuser-PtParisA - -# Ignoring unreleased package octez-accuser-alpha. + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-alcotezt: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_7 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 7 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 7 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 7 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-alcotezt + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-baker-Proxford: - extends: - - .opam_template - - .rules_template__trigger_exec_opam_batch_1 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 1 minute + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 1 minute + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: delayed + start_in: 1 minute + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-baker-Proxford + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-baker-PtParisA: - extends: - - .opam_template - - .rules_template__trigger_exec_opam_batch_1 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 1 minute + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 1 minute + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: delayed + start_in: 1 minute + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-baker-PtParisA - -# Ignoring unreleased package octez-baker-alpha. + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-client: - extends: - - .opam_template - - .rules_template__trigger_exec_opam_batch_1 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 1 minute + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 1 minute + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: delayed + start_in: 1 minute + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-client + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-codec: - extends: - - .opam_template - - .rules_template__trigger_exec_opam_batch_1 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 1 minute + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 1 minute + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: delayed + start_in: 1 minute + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-codec - -# Ignoring unreleased package octez-codec-kaitai. + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-crawler: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_4 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 4 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 4 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 4 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-crawler + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-dac-client: - extends: - - .opam_template - - .rules_template__trigger_exec_opam_batch_1 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 1 minute + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 1 minute + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: delayed + start_in: 1 minute + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-dac-client + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-dac-node: - extends: - - .opam_template - - .rules_template__trigger_exec_opam_batch_1 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 1 minute + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 1 minute + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: delayed + start_in: 1 minute + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-dac-node - -# Ignoring unreleased package octez-dal-node. + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-distributed-internal: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_7 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 7 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 7 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 7 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-distributed-internal + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-distributed-lwt-internal: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_7 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 7 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 7 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 7 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-distributed-lwt-internal - -# Ignoring unreleased package octez-evm-node. - -# Ignoring unreleased package octez-evm-node-libs. - -# Ignoring unreleased package octez-evm-node-tests. + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-injector: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_2 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 2 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 2 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 2 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-injector - -# Ignoring unreleased package octez-injector-server. + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-internal-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_7 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 7 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 7 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 7 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-internal-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-l2-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_6 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 6 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 6 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 6 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-l2-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_7 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 7 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 7 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 7 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-node: - extends: - - .opam_template - - .rules_template__trigger_exec_opam_batch_1 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 1 minute + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 1 minute + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: delayed + start_in: 1 minute + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-node + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-node-config: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_4 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 4 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 4 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 4 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-node-config + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-proto-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_6 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 6 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 6 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 6 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-proto-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-protocol-000-Ps9mPmXa-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_2 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 2 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 2 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 2 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-protocol-000-Ps9mPmXa-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-protocol-001-PtCJ7pwo-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_2 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 2 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 2 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 2 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-protocol-001-PtCJ7pwo-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-protocol-002-PsYLVpVv-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_2 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 2 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 2 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 2 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-protocol-002-PsYLVpVv-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-protocol-003-PsddFKi3-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_3 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 3 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 3 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 3 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-protocol-003-PsddFKi3-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-protocol-004-Pt24m4xi-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_3 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 3 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 3 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 3 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-protocol-004-Pt24m4xi-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-protocol-005-PsBabyM1-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_3 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 3 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 3 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 3 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-protocol-005-PsBabyM1-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-protocol-006-PsCARTHA-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_3 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 3 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 3 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 3 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-protocol-006-PsCARTHA-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-protocol-007-PsDELPH1-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_3 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 3 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 3 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 3 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-protocol-007-PsDELPH1-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-protocol-008-PtEdo2Zk-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_3 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 3 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 3 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 3 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-protocol-008-PtEdo2Zk-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-protocol-009-PsFLoren-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_3 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 3 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 3 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 3 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-protocol-009-PsFLoren-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-protocol-010-PtGRANAD-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_3 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 3 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 3 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 3 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-protocol-010-PtGRANAD-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-protocol-011-PtHangz2-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_3 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 3 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 3 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 3 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-protocol-011-PtHangz2-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-protocol-012-Psithaca-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_3 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 3 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 3 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 3 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-protocol-012-Psithaca-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-protocol-013-PtJakart-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_3 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 3 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 3 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 3 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-protocol-013-PtJakart-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-protocol-014-PtKathma-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_3 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 3 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 3 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 3 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-protocol-014-PtKathma-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-protocol-015-PtLimaPt-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_3 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 3 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 3 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 3 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-protocol-015-PtLimaPt-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-protocol-016-PtMumbai-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_2 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 2 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 2 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 2 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-protocol-016-PtMumbai-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-protocol-017-PtNairob-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_2 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 2 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 2 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 2 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-protocol-017-PtNairob-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-protocol-018-Proxford-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_2 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 2 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 2 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 2 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-protocol-018-Proxford-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-protocol-019-PtParisA-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_2 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 2 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 2 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 2 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-protocol-019-PtParisA-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-protocol-alpha-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_2 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 2 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 2 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 2 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-protocol-alpha-libs + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-protocol-compiler: - extends: - - .opam_template - - .rules_template__trigger_exec_opam_batch_6 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 6 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 6 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: delayed + start_in: 6 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-protocol-compiler + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-proxy-server: - extends: - - .opam_template - - .rules_template__trigger_exec_opam_batch_1 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 1 minute + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 1 minute + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: delayed + start_in: 1 minute + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-proxy-server - -# Ignoring unreleased package octez-risc-v-pvm. - -# Ignoring unreleased package octez-risc-v-pvm-test. + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-rpc-process: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_3 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 3 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 3 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 3 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-rpc-process + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-shell-libs: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_6 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 6 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 6 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 6 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-shell-libs - -# Ignoring unreleased package octez-shell-tests. + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-signer: - extends: - - .opam_template - - .rules_template__trigger_exec_opam_batch_4 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 4 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 4 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: delayed + start_in: 4 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-signer + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-smart-rollup-node: - extends: - - .opam_template - - .rules_template__trigger_exec_opam_batch_1 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 1 minute + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 1 minute + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: delayed + start_in: 1 minute + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-smart-rollup-node + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-smart-rollup-node-Proxford: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_1 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 1 minute + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 1 minute + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 1 minute + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-smart-rollup-node-Proxford + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-smart-rollup-node-PtNairob: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_2 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 2 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 2 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 2 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-smart-rollup-node-PtNairob + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-smart-rollup-node-PtParisA: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_1 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 1 minute + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 1 minute + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 1 minute + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-smart-rollup-node-PtParisA + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-smart-rollup-node-alpha: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_2 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 2 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 2 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 2 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-smart-rollup-node-alpha + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-smart-rollup-node-lib: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_2 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 2 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 2 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 2 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-smart-rollup-node-lib + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-smart-rollup-wasm-debugger: - extends: - - .opam_template - - .rules_template__trigger_exec_opam_batch_1 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 1 minute + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 1 minute + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: delayed + start_in: 1 minute + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-smart-rollup-wasm-debugger + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-smart-rollup-wasm-debugger-lib: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_2 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 2 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 2 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 2 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-smart-rollup-wasm-debugger-lib + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-smart-rollup-wasm-debugger-plugin: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_7 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 7 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 7 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 7 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-smart-rollup-wasm-debugger-plugin - -# Ignoring unreleased package octez-snoop. - -# Ignoring unreleased package octez-store-tests. - -# Ignoring unreleased package octez-testnet-scenarios. + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:octez-version: - extends: - - .opam_template - - .rules_template__trigger_exec_opam_batch_6 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 6 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 6 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: delayed + start_in: 6 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: octez-version - -# Ignoring unreleased package octogram. + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-benchmark: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_6 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 6 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 6 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 6 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-benchmark - -# Ignoring unreleased package tezos-benchmark-018-Proxford. - -# Ignoring unreleased package tezos-benchmark-019-PtParisA. - -# Ignoring unreleased package tezos-benchmark-alpha. - -# Ignoring unreleased package tezos-benchmark-examples. - -# Ignoring unreleased package tezos-benchmark-tests. - -# Ignoring unreleased package tezos-benchmark-type-inference-018-Proxford. - -# Ignoring unreleased package tezos-benchmark-type-inference-019-PtParisA. - -# Ignoring unreleased package tezos-benchmark-type-inference-alpha. - -# Ignoring unreleased package tezos-benchmarks-proto-018-Proxford. - -# Ignoring unreleased package tezos-benchmarks-proto-019-PtParisA. - -# Ignoring unreleased package tezos-benchmarks-proto-alpha. + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-client-demo-counter: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_4 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 4 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 4 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 4 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-client-demo-counter + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-client-genesis: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_4 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 4 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 4 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 4 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-client-genesis + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-dac-client-lib: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_4 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 4 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 4 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 4 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-dac-client-lib + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-dac-lib: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_4 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 4 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 4 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 4 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-dac-lib - -# Ignoring unreleased package tezos-dac-lib-test. + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-dac-node-lib: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_2 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 2 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 2 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 2 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-dac-node-lib - -# Ignoring unreleased package tezos-dac-node-lib-test. + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-dal-node-lib: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_4 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 4 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 4 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 4 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-dal-node-lib + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-dal-node-services: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_6 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 6 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 6 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 6 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-dal-node-services - -# Ignoring unreleased package tezos-injector-018-Proxford. - -# Ignoring unreleased package tezos-injector-019-PtParisA. - -# Ignoring unreleased package tezos-injector-alpha. - -# Ignoring unreleased package tezos-lazy-containers-tests. - -# Ignoring unreleased package tezos-micheline-rewriting. + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-openapi: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_7 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 7 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 7 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 7 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-openapi + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-000-Ps9mPmXa: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_4 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 4 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 4 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 4 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-000-Ps9mPmXa + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-001-PtCJ7pwo: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_4 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 4 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 4 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 4 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-001-PtCJ7pwo + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-002-PsYLVpVv: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_4 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 4 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 4 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 4 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-002-PsYLVpVv + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-003-PsddFKi3: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_4 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 4 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 4 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 4 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-003-PsddFKi3 + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-004-Pt24m4xi: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_4 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 4 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 4 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 4 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-004-Pt24m4xi + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-005-PsBABY5H: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_4 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 4 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 4 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 4 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-005-PsBABY5H + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-005-PsBabyM1: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_5 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 5 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 5 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 5 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-005-PsBabyM1 + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-006-PsCARTHA: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_5 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 5 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 5 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 5 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-006-PsCARTHA + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-007-PsDELPH1: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_5 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 5 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 5 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 5 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-007-PsDELPH1 + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-008-PtEdo2Zk: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_5 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 5 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 5 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 5 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-008-PtEdo2Zk + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-008-PtEdoTez: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_5 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 5 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 5 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 5 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-008-PtEdoTez + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-009-PsFLoren: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_5 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 5 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 5 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 5 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-009-PsFLoren + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-010-PtGRANAD: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_5 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 5 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 5 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 5 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-010-PtGRANAD + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-011-PtHangz2: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_5 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 5 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 5 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 5 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-011-PtHangz2 + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-012-Psithaca: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_5 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 5 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 5 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 5 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-012-Psithaca + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-013-PtJakart: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_5 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 5 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 5 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 5 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-013-PtJakart + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-014-PtKathma: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_5 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 5 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 5 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 5 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-014-PtKathma + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-015-PtLimaPt: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_5 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 5 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 5 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 5 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-015-PtLimaPt + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-016-PtMumbai: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_5 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 5 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 5 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 5 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-016-PtMumbai + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-017-PtNairob: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_5 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 5 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 5 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 5 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-017-PtNairob + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-018-Proxford: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_6 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 6 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 6 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 6 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-018-Proxford - -# Ignoring unreleased package tezos-protocol-018-Proxford-tests. + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-019-PtParisA: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_6 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 6 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 6 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 6 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-019-PtParisA - -# Ignoring unreleased package tezos-protocol-019-PtParisA-tests. + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-alpha: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_6 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 6 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 6 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 6 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-alpha - -# Ignoring unreleased package tezos-protocol-alpha-tests. + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-demo-counter: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_6 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 6 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 6 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 6 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-demo-counter + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-demo-noops: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_6 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 6 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 6 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 6 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-demo-noops + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-protocol-genesis: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_6 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 6 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 6 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 6 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-protocol-genesis + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezos-proxy-server-config: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_6 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 6 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 6 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 6 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezos-proxy-server-config - -# Ignoring unreleased package tezos-sc-rollup-node-test. - -# Ignoring unreleased package tezos-scoru-wasm-regressions. - -# Ignoring unreleased package tezos-smart-rollup-node-lib-test. - -# Ignoring unreleased package tezos-tooling. - -# Ignoring unreleased package tezos-tps-evaluation. - -# Ignoring unreleased package tezos-tree-encoding-test. - -# Ignoring unreleased package tezt-etherlink. - -# Ignoring unreleased package tezt-risc-v-sandbox. + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 opam:tezt-tezos: - extends: - - .opam_template - - .rules_template__trigger_all_opam_batch_7 + image: ${build_deps_image_name}:runtime-prebuild-dependencies--${build_deps_image_version} + stage: packaging + tags: + - gcp + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $TZ_SCHEDULE_KIND == "EXTENDED_TESTS" + when: delayed + start_in: 7 minutes + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 7 minutes + - changes: + - '**/dune' + - '**/dune.inc' + - '**/*.dune.inc' + - '**/dune-project' + - '**/dune-workspace' + - '**/*.opam' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/manifest.ml + - manifest/main.ml + - scripts/opam-prepare-repo.sh + - scripts/version.sh + if: $CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "nomadic-margebot" + when: delayed + start_in: 7 minutes + - when: never + needs: + - opam:prepare + dependencies: + - opam:prepare + cache: + key: opam-sccache + paths: + - _build/_sccache + 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: + - sccache --stop-server || true + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh variables: + RUNTEZTALIAS: "true" package: tezt-tezos - -# Ignoring unreleased package tezt-tx-kernel. + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + RUSTC_WRAPPER: sccache + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + SCCACHE_LOG: debug + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 diff --git a/ci/bin/code_verification.ml b/ci/bin/code_verification.ml index d8d99008f2f2..b743e455672a 100644 --- a/ci/bin/code_verification.ml +++ b/ci/bin/code_verification.ml @@ -35,6 +35,110 @@ open Gitlab_ci.Util open Tezos_ci open Common +type opam_package_group = Executable | All + +type opam_package = { + name : string; + group : opam_package_group; + batch_index : int; +} + +let opam_rules ~only_marge_bot ?batch_index () = + let when_ = + match batch_index with + | Some batch_index -> Delayed (Minutes batch_index) + | None -> On_success + in + [ + job_rule ~if_:Rules.schedule_extended_tests ~when_ (); + job_rule ~if_:(Rules.has_mr_label "ci--opam") ~when_ (); + job_rule + ~if_: + (if only_marge_bot then + If.(Rules.merge_request && Rules.triggered_by_marge_bot) + else Rules.merge_request) + ~changes:changeset_opam_jobs + ~when_ + (); + job_rule ~when_:Never (); + ] + +let job_opam_package ?dependencies {name; group; batch_index} : tezos_job = + job + ?dependencies + ~__POS__ + ~name:("opam:" ^ name) + ~image:Images.runtime_prebuild_dependencies + ~stage:Stages.packaging + (* FIXME: https://gitlab.com/nomadic-labs/tezos/-/issues/663 + FIXME: https://gitlab.com/nomadic-labs/tezos/-/issues/664 + At the time of writing, the opam tests were quite flaky. + Therefore, a retry was added. This should be removed once the + underlying tests have been fixed. *) + ~retry:2 + ~rules:(opam_rules ~only_marge_bot:(group = All) ~batch_index ()) + ~variables: + [ + (* See [.gitlab-ci.yml] for details on [RUNTEZTALIAS] *) + ("RUNTEZTALIAS", "true"); + ("package", name); + ] + ~before_script: + (before_script + ~eval_opam:true + [ + "mkdir -p $CI_PROJECT_DIR/opam_logs"; + ". ./scripts/ci/sccache-start.sh"; + ]) + [ + "opam remote add dev-repo ./_opam-repo-for-release"; + "opam install --yes ${package}.dev"; + "opam reinstall --yes --with-test ${package}.dev"; + ] + (* Stores logs in opam_logs for artifacts and outputs an excerpt on + failure. [after_script] runs in a separate shell and so requires + a second opam environment initialization. *) + ~after_script: + [ + "sccache --stop-server || true"; + "eval $(opam env)"; + "OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh"; + ] + ~artifacts:(artifacts ~expire_in:(Weeks 1) ~when_:Always ["opam_logs/"]) + ~cache:[{key = "opam-sccache"; paths = ["_build/_sccache"]}] + |> (* We store caches in [_build] for two reasons: (1) the [_build] + folder is excluded from opam's rsync. (2) gitlab ci cache + requires that cached files are in a sub-folder of the checkout. *) + enable_sccache + ~error_log:"$CI_PROJECT_DIR/opam_logs/sccache.log" + ~idle_timeout:"0" + ~log:"debug" + ~dir:"$CI_PROJECT_DIR/_build/_sccache" + +let ci_opam_package_tests = "script-inputs/ci-opam-package-tests" + +let read_opam_packages = + Fun.flip List.filter_map (read_lines_from_file ci_opam_package_tests) + @@ fun line -> + let fail () = + failwith + (sf "failed to parse %S: invalid line: %S" ci_opam_package_tests line) + in + if line = "" then None + else + match String.split_on_char '\t' line with + | [name; group; batch_index] -> + let batch_index = + match int_of_string_opt batch_index with + | Some i -> i + | None -> fail () + in + let group = + match group with "exec" -> Executable | "all" -> All | _ -> fail () + in + Some {name; group; batch_index} + | _ -> fail () + (* Encodes the conditional [before_merging] pipeline and its unconditional variant [schedule_extended_test]. *) type code_verification_pipeline = Before_merging | Schedule_extended_test @@ -59,6 +163,12 @@ let jobs pipeline_type = | Before_merging -> job_external job | Schedule_extended_test -> job in + (* as [job_external_once] but for sets of jobs *) + let jobs_external_once ~path jobs = + match pipeline_type with + | Before_merging -> jobs_external ~path jobs + | Schedule_extended_test -> jobs + in (* [make_rules] makes rules for jobs that are: - automatic in scheduled pipelines; - conditional in [before_merging] pipelines. @@ -210,7 +320,34 @@ let jobs pipeline_type = (* TODO: include the jobs defined above when full pipeline is generated *) [] in - let packaging = [] in + let packaging = + let job_opam_prepare : tezos_job = + job + ~__POS__ + ~name:"opam:prepare" + ~image:Images.runtime_prebuild_dependencies + ~stage:Stages.packaging + ~dependencies:dependencies_needs_trigger + ~before_script:(before_script ~eval_opam:true []) + ~artifacts:(artifacts ["_opam-repo-for-release/"]) + ~rules:(opam_rules ~only_marge_bot:false ~batch_index:1 ()) + [ + "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\""; + ] + |> job_external_once + in + let (_jobs_opam_packages : tezos_job list) = + read_opam_packages + |> List.map + (job_opam_package + ~dependencies:(Dependent [Artifacts job_opam_prepare])) + |> jobs_external_once ~path:"packaging/opam_package.yml" + in + [] + in let test = [] in let doc = [] in let manual = diff --git a/ci/bin/common.ml b/ci/bin/common.ml index bdee2c69afa7..5725bcfa2213 100644 --- a/ci/bin/common.ml +++ b/ci/bin/common.ml @@ -213,6 +213,19 @@ let enable_coverage_report job : tezos_job = ["_coverage_report/"; "$BISECT_FILE"] |> Tezos_ci.append_variables [("SLACK_COVERAGE_CHANNEL", "C02PHBE7W73")] +(** Add variable enabling sccache. + + This function should be applied to jobs that build rust files and + which has a configured sccache Gitlab CI cache. *) +let enable_sccache ?error_log ?idle_timeout ?log + ?(dir = "$CI_PROJECT_DIR/_sccache") : tezos_job -> tezos_job = + let opt_var name = function Some value -> [(name, value)] | None -> [] in + Tezos_ci.append_variables + ([("SCCACHE_DIR", dir); ("RUSTC_WRAPPER", "sccache")] + @ opt_var "SCCACHE_ERROR_LOG" error_log + @ opt_var "SCCACHE_IDLE_TIMEOUT" idle_timeout + @ opt_var "SCCACHE_LOG" log) + (** {2 Changesets} *) let changeset_octez = @@ -266,6 +279,23 @@ let changeset_octez_docker_changes_or_master = let changeset_hadolint_docker_files = ["build.Dockerfile"; "Dockerfile"] +(* The set of [changes:] that trigger opam jobs *) +let changeset_opam_jobs = + [ + "**/dune"; + "**/dune.inc"; + "**/*.dune.inc"; + "**/dune-project"; + "**/dune-workspace"; + "**/*.opam"; + ".gitlab/ci/jobs/packaging/opam:prepare.yml"; + ".gitlab/ci/jobs/packaging/opam_package.yml"; + "manifest/manifest.ml"; + "manifest/main.ml"; + "scripts/opam-prepare-repo.sh"; + "scripts/version.sh"; + ] + (** {2 Job makers} *) (** Helper to create jobs that uses the docker deamon. diff --git a/ci/bin/main.ml b/ci/bin/main.ml index cf6213090a57..622c3c2b8661 100644 --- a/ci/bin/main.ml +++ b/ci/bin/main.ml @@ -190,8 +190,6 @@ let () = | ".gitlab/ci/jobs/doc/documentation:linkcheck.yml" | ".gitlab/ci/jobs/doc/oc.install_python.yml" | ".gitlab/ci/jobs/packaging/debian_repository.yml" - | ".gitlab/ci/jobs/packaging/opam:prepare.yml" - | ".gitlab/ci/jobs/packaging/opam_package.yml" | ".gitlab/ci/jobs/shared/images.yml" | ".gitlab/ci/jobs/shared/templates.yml" | ".gitlab/ci/jobs/test/commit_titles.yml" diff --git a/ci/lib_gitlab_ci/base.ml b/ci/lib_gitlab_ci/base.ml index c0d2055584d8..29ebaa625d30 100644 --- a/ci/lib_gitlab_ci/base.ml +++ b/ci/lib_gitlab_ci/base.ml @@ -33,6 +33,15 @@ let with_open_in file read_f = close_in chan ; raise x +let read_lines_from_file path = + with_open_in path @@ fun ch -> + let rec loop acc = + match input_line ch with + | exception End_of_file -> List.rev acc + | line -> loop (line :: acc) + in + loop [] + let write_file filename ~contents = with_open_out filename @@ fun ch -> output_string ch contents diff --git a/ci/makefile b/ci/makefile index 1b1e182f5d22..2d59cd24dea8 100644 --- a/ci/makefile +++ b/ci/makefile @@ -1,18 +1,18 @@ .PHONY: all -all: # Regenerate GitLab CI configuration. - cd .. && . ./scripts/version.sh && dune exec ci/bin/main.exe +all: # Regenerate GitLab CI configuration. + cd .. && ${MAKE} -C manifest && . ./scripts/version.sh && dune exec ci/bin/main.exe .PHONY: verbose verbose: # Regenerate GitLab CI configuration with verbose output. - cd .. && . ./scripts/version.sh && dune exec ci/bin/main.exe -- --verbose + cd .. && ${MAKE} -C manifest && . ./scripts/version.sh && dune exec ci/bin/main.exe -- --verbose .PHONY: inline-source-info inline-source-info: # Regenerate GitLab CI configuration, inlining source information in generated files. - cd .. && . ./scripts/version.sh && dune exec ci/bin/main.exe -- --inline-source-info + cd .. && ${MAKE} -C manifest && . ./scripts/version.sh && dune exec ci/bin/main.exe -- --inline-source-info .PHONY: remove-extra-files remove-extra-files: # Regenerate GitLab CI configuration and remove any non-generated files. - cd .. && . ./scripts/version.sh && dune exec ci/bin/main.exe -- --remove-extra-files + cd .. && ${MAKE} -C manifest && . ./scripts/version.sh && dune exec ci/bin/main.exe -- --remove-extra-files .PHONY: docker-do-% docker-do-%: @@ -20,7 +20,7 @@ docker-do-%: && . ./scripts/version.sh \ && docker run -it -w$$(pwd) -v$$(pwd):$$(pwd) --entrypoint opam \ registry.gitlab.com/tezos/opam-repository:runtime-build-dependencies--$${opam_repository_tag} exec -- \ - make -C ci $* + make --always-make -C ci $* # --always-make to not mix build artifacts from host and guest system. .PHONY: docker-all docker-all: docker-do-all # Build the target 'all' using the 'runtime-build-dependencies' Docker image. -- GitLab