From 1c2e492db35251be538a087f741b683966549d73 Mon Sep 17 00:00:00 2001 From: Killian Delarue Date: Mon, 18 Mar 2024 11:50:34 +0100 Subject: [PATCH 1/4] CI: Rename jobs to octez_jobs in release_tag --- ci/bin/main.ml | 14 +++++++------- ci/bin/release_tag.ml | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ci/bin/main.ml b/ci/bin/main.ml index 172315d05b77..7935d11c9bb4 100644 --- a/ci/bin/main.ml +++ b/ci/bin/main.ml @@ -75,9 +75,9 @@ let job_dummy : job = pipeline is defined. At the moment, all these pipelines are defined manually in .yml, but will eventually be generated. *) let () = - (* Matches release tags, e.g. [v1.2.3] or [v1.2.3-rc4]. *) + (* Matches Octez release tags, e.g. [octez-v1.2.3] or [octez-v1.2.3-rc4]. *) let octez_release_tag_re = "/^octez-v\\d+\\.\\d+(?:\\-rc\\d+)?$/" in - (* Matches beta release tags, e.g. [v1.2.3-beta5]. *) + (* Matches Octez beta release tags, e.g. [octez-v1.2.3-beta5]. *) let octez_beta_release_tag_re = "/^octez-v\\d+\\.\\d+\\-beta\\d*$/" in let open Rules in let open Pipeline in @@ -110,23 +110,23 @@ let () = register "octez_release_tag" If.(on_tezos_namespace && push && has_tag_match octez_release_tag_re) - ~jobs:(Release_tag.jobs Release_tag) ; + ~jobs:(Release_tag.octez_jobs Release_tag) ; register "octez_beta_release_tag" If.(on_tezos_namespace && push && has_tag_match octez_beta_release_tag_re) - ~jobs:(Release_tag.jobs Beta_release_tag) ; + ~jobs:(Release_tag.octez_jobs Beta_release_tag) ; register "octez_release_tag_test" If.(not_on_tezos_namespace && push && has_any_octez_release_tag) - ~jobs:(Release_tag.jobs ~test:true Release_tag) ; + ~jobs:(Release_tag.octez_jobs ~test:true Release_tag) ; register "non_release_tag" If.(on_tezos_namespace && push && has_non_release_tag) - ~jobs:(Release_tag.jobs Non_release_tag) ; + ~jobs:(Release_tag.octez_jobs Non_release_tag) ; register "non_release_tag_test" If.(not_on_tezos_namespace && push && has_non_release_tag) - ~jobs:(Release_tag.jobs ~test:true Non_release_tag) ; + ~jobs:(Release_tag.octez_jobs ~test:true Non_release_tag) ; register "schedule_extended_test" schedule_extended_tests diff --git a/ci/bin/release_tag.ml b/ci/bin/release_tag.ml index 8f44fc274520..d63c0a62bfcf 100644 --- a/ci/bin/release_tag.ml +++ b/ci/bin/release_tag.ml @@ -40,12 +40,12 @@ type release_tag_pipeline_type = | Beta_release_tag | Non_release_tag -(** Create a release tag pipeline of type {!release_tag_pipeline_type}. +(** Create an Octez 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 octez_jobs ?(test = false) release_tag_pipeline_type = let job_docker_amd64 = job_docker_build ~__POS__ ~arch:Amd64 (if test then Test else Release) in -- GitLab From 0095702ef87d2344bf7f5304a09f35cb7ab1bc6c Mon Sep 17 00:00:00 2001 From: Killian Delarue Date: Mon, 18 Mar 2024 14:19:42 +0100 Subject: [PATCH 2/4] CI, Release: Introduce etherlink_jobs in release_tag --- .gitlab-ci.yml | 28 ++++++++++++++++--- .../ci/pipelines/etherlink_release_tag.yml | 13 +++++++++ .../pipelines/etherlink_release_tag_test.yml | 13 +++++++++ ci/bin/release_tag.ml | 14 ++++++++++ 4 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 .gitlab/ci/pipelines/etherlink_release_tag.yml create mode 100644 .gitlab/ci/pipelines/etherlink_release_tag_test.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d027fafcd284..395ef8cf3422 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -38,15 +38,25 @@ workflow: variables: PIPELINE_TYPE: octez_release_tag_test when: always + - if: $CI_PROJECT_NAMESPACE == "tezos" && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG + =~ /^etherlink-v\d+\.\d+(?:\-rc\d+)?$/ + variables: + PIPELINE_TYPE: etherlink_release_tag + when: always + - if: $CI_PROJECT_NAMESPACE != "tezos" && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG + =~ /^etherlink-v\d+\.\d+(?:\-rc\d+)?$/ + variables: + PIPELINE_TYPE: etherlink_release_tag_test + when: always - if: $CI_PROJECT_NAMESPACE == "tezos" && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG != null && $CI_COMMIT_TAG !~ /^octez-v\d+\.\d+(?:\-rc\d+)?$/ && $CI_COMMIT_TAG - !~ /^octez-v\d+\.\d+\-beta\d*$/ + !~ /^octez-v\d+\.\d+\-beta\d*$/ && $CI_COMMIT_TAG !~ /^etherlink-v\d+\.\d+(?:\-rc\d+)?$/ variables: PIPELINE_TYPE: non_release_tag when: always - if: $CI_PROJECT_NAMESPACE != "tezos" && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG != null && $CI_COMMIT_TAG !~ /^octez-v\d+\.\d+(?:\-rc\d+)?$/ && $CI_COMMIT_TAG - !~ /^octez-v\d+\.\d+\-beta\d*$/ + !~ /^octez-v\d+\.\d+\-beta\d*$/ && $CI_COMMIT_TAG !~ /^etherlink-v\d+\.\d+(?:\-rc\d+)?$/ variables: PIPELINE_TYPE: non_release_tag_test when: always @@ -130,17 +140,27 @@ include: - if: $CI_PROJECT_NAMESPACE != "tezos" && $CI_PIPELINE_SOURCE == "push" && ($CI_COMMIT_TAG =~ /^octez-v\d+\.\d+(?:\-rc\d+)?$/ || $CI_COMMIT_TAG =~ /^octez-v\d+\.\d+\-beta\d*$/) when: always +- local: .gitlab/ci/pipelines/etherlink_release_tag.yml + rules: + - if: $CI_PROJECT_NAMESPACE == "tezos" && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG + =~ /^etherlink-v\d+\.\d+(?:\-rc\d+)?$/ + when: always +- local: .gitlab/ci/pipelines/etherlink_release_tag_test.yml + rules: + - if: $CI_PROJECT_NAMESPACE != "tezos" && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG + =~ /^etherlink-v\d+\.\d+(?:\-rc\d+)?$/ + when: always - local: .gitlab/ci/pipelines/non_release_tag.yml rules: - if: $CI_PROJECT_NAMESPACE == "tezos" && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG != null && $CI_COMMIT_TAG !~ /^octez-v\d+\.\d+(?:\-rc\d+)?$/ && $CI_COMMIT_TAG - !~ /^octez-v\d+\.\d+\-beta\d*$/ + !~ /^octez-v\d+\.\d+\-beta\d*$/ && $CI_COMMIT_TAG !~ /^etherlink-v\d+\.\d+(?:\-rc\d+)?$/ when: always - local: .gitlab/ci/pipelines/non_release_tag_test.yml rules: - if: $CI_PROJECT_NAMESPACE != "tezos" && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG != null && $CI_COMMIT_TAG !~ /^octez-v\d+\.\d+(?:\-rc\d+)?$/ && $CI_COMMIT_TAG - !~ /^octez-v\d+\.\d+\-beta\d*$/ + !~ /^octez-v\d+\.\d+\-beta\d*$/ && $CI_COMMIT_TAG !~ /^etherlink-v\d+\.\d+(?:\-rc\d+)?$/ when: always - local: .gitlab/ci/pipelines/schedule_extended_test.yml rules: diff --git a/.gitlab/ci/pipelines/etherlink_release_tag.yml b/.gitlab/ci/pipelines/etherlink_release_tag.yml new file mode 100644 index 000000000000..d2803c2a1c7b --- /dev/null +++ b/.gitlab/ci/pipelines/etherlink_release_tag.yml @@ -0,0 +1,13 @@ +# This file was automatically generated, do not edit. +# Edit file ci/bin/main.ml instead. + +gitlab:publish: + image: ${GCP_REGISTRY}/tezos/docker-images/ci-release:v1.4.0 + stage: publish_package_gitlab + tags: + - gcp + needs: [] + dependencies: [] + interruptible: false + script: + - ./scripts/ci/create_gitlab_etherlink_release.sh diff --git a/.gitlab/ci/pipelines/etherlink_release_tag_test.yml b/.gitlab/ci/pipelines/etherlink_release_tag_test.yml new file mode 100644 index 000000000000..d2803c2a1c7b --- /dev/null +++ b/.gitlab/ci/pipelines/etherlink_release_tag_test.yml @@ -0,0 +1,13 @@ +# This file was automatically generated, do not edit. +# Edit file ci/bin/main.ml instead. + +gitlab:publish: + image: ${GCP_REGISTRY}/tezos/docker-images/ci-release:v1.4.0 + stage: publish_package_gitlab + tags: + - gcp + needs: [] + dependencies: [] + interruptible: false + script: + - ./scripts/ci/create_gitlab_etherlink_release.sh diff --git a/ci/bin/release_tag.ml b/ci/bin/release_tag.ml index d63c0a62bfcf..4a2c44c589ca 100644 --- a/ci/bin/release_tag.ml +++ b/ci/bin/release_tag.ml @@ -127,3 +127,17 @@ let octez_jobs ?(test = false) release_tag_pipeline_type = match (test, release_tag_pipeline_type) with | false, Release_tag -> [job_opam_release] | _ -> [] + +(** Create an etherlink release tag pipeline of type {!release_tag_pipeline_type}. *) +let etherlink_jobs () = + let job_gitlab_release : Tezos_ci.tezos_job = + job + ~__POS__ + ~image:Images.ci_release + ~stage:Stages.publish_package_gitlab + ~interruptible:false + ~dependencies:(Dependent []) + ~name:"gitlab:publish" + ["./scripts/ci/create_gitlab_etherlink_release.sh"] + in + [job_gitlab_release] -- GitLab From 44956a8d6729491a79a2a5dde17066f60695c92e Mon Sep 17 00:00:00 2001 From: Killian Delarue Date: Mon, 18 Mar 2024 11:46:30 +0100 Subject: [PATCH 3/4] Releases, CI: Add etherlink release tag --- .gitlab-ci.yml | 16 ++-------------- .../ci/pipelines/etherlink_release_tag_test.yml | 13 ------------- ci/bin/main.ml | 13 ++++++++++++- 3 files changed, 14 insertions(+), 28 deletions(-) delete mode 100644 .gitlab/ci/pipelines/etherlink_release_tag_test.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 395ef8cf3422..8e1a4413d079 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -38,16 +38,10 @@ workflow: variables: PIPELINE_TYPE: octez_release_tag_test when: always - - if: $CI_PROJECT_NAMESPACE == "tezos" && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG - =~ /^etherlink-v\d+\.\d+(?:\-rc\d+)?$/ + - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG =~ /^etherlink-v\d+\.\d+(?:\-rc\d+)?$/ variables: PIPELINE_TYPE: etherlink_release_tag when: always - - if: $CI_PROJECT_NAMESPACE != "tezos" && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG - =~ /^etherlink-v\d+\.\d+(?:\-rc\d+)?$/ - variables: - PIPELINE_TYPE: etherlink_release_tag_test - when: always - if: $CI_PROJECT_NAMESPACE == "tezos" && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG != null && $CI_COMMIT_TAG !~ /^octez-v\d+\.\d+(?:\-rc\d+)?$/ && $CI_COMMIT_TAG !~ /^octez-v\d+\.\d+\-beta\d*$/ && $CI_COMMIT_TAG !~ /^etherlink-v\d+\.\d+(?:\-rc\d+)?$/ @@ -142,13 +136,7 @@ include: when: always - local: .gitlab/ci/pipelines/etherlink_release_tag.yml rules: - - if: $CI_PROJECT_NAMESPACE == "tezos" && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG - =~ /^etherlink-v\d+\.\d+(?:\-rc\d+)?$/ - when: always -- local: .gitlab/ci/pipelines/etherlink_release_tag_test.yml - rules: - - if: $CI_PROJECT_NAMESPACE != "tezos" && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG - =~ /^etherlink-v\d+\.\d+(?:\-rc\d+)?$/ + - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG =~ /^etherlink-v\d+\.\d+(?:\-rc\d+)?$/ when: always - local: .gitlab/ci/pipelines/non_release_tag.yml rules: diff --git a/.gitlab/ci/pipelines/etherlink_release_tag_test.yml b/.gitlab/ci/pipelines/etherlink_release_tag_test.yml deleted file mode 100644 index d2803c2a1c7b..000000000000 --- a/.gitlab/ci/pipelines/etherlink_release_tag_test.yml +++ /dev/null @@ -1,13 +0,0 @@ -# This file was automatically generated, do not edit. -# Edit file ci/bin/main.ml instead. - -gitlab:publish: - image: ${GCP_REGISTRY}/tezos/docker-images/ci-release:v1.4.0 - stage: publish_package_gitlab - tags: - - gcp - needs: [] - dependencies: [] - interruptible: false - script: - - ./scripts/ci/create_gitlab_etherlink_release.sh diff --git a/ci/bin/main.ml b/ci/bin/main.ml index 7935d11c9bb4..03f85a4de398 100644 --- a/ci/bin/main.ml +++ b/ci/bin/main.ml @@ -79,6 +79,8 @@ let () = let octez_release_tag_re = "/^octez-v\\d+\\.\\d+(?:\\-rc\\d+)?$/" in (* Matches Octez beta release tags, e.g. [octez-v1.2.3-beta5]. *) let octez_beta_release_tag_re = "/^octez-v\\d+\\.\\d+\\-beta\\d*$/" in + (* Matches Etherlink release tags, e.g. [etherlink-v1.2.3] or [etherlink-v1.2.3-rc4]. *) + let etherlink_release_tag_re = "/^etherlink-v\\d+\\.\\d+(?:\\-rc\\d+)?$/" in let open Rules in let open Pipeline in (* Matches either Octez release tags or Octez beta release tags, @@ -89,7 +91,10 @@ let () = || has_tag_match octez_beta_release_tag_re) in let has_non_release_tag = - If.(Predefined_vars.ci_commit_tag != null && not has_any_octez_release_tag) + If.( + Predefined_vars.ci_commit_tag != null + && (not has_any_octez_release_tag) + && not (has_tag_match etherlink_release_tag_re)) in register "before_merging" @@ -119,6 +124,12 @@ let () = "octez_release_tag_test" If.(not_on_tezos_namespace && push && has_any_octez_release_tag) ~jobs:(Release_tag.octez_jobs ~test:true Release_tag) ; + (* To test this type of release, push a tag to a fork of [tezos/tezos] + e.g. [nomadic-labs/tezos] project. *) + register + "etherlink_release_tag" + If.(push && has_tag_match etherlink_release_tag_re) + ~jobs:(Release_tag.etherlink_jobs ()) ; register "non_release_tag" If.(on_tezos_namespace && push && has_non_release_tag) -- GitLab From c33641c88d8e217c3e6a92c237d833824e549a77 Mon Sep 17 00:00:00 2001 From: Killian Delarue Date: Tue, 19 Mar 2024 10:30:10 +0100 Subject: [PATCH 4/4] CI, Release: Create Etherlink releases --- scripts/ci/create_gitlab_etherlink_release.sh | 11 +++++++++ scripts/ci/etherlink-release.sh | 23 +++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100755 scripts/ci/create_gitlab_etherlink_release.sh create mode 100644 scripts/ci/etherlink-release.sh diff --git a/scripts/ci/create_gitlab_etherlink_release.sh b/scripts/ci/create_gitlab_etherlink_release.sh new file mode 100755 index 000000000000..9453d92f5c85 --- /dev/null +++ b/scripts/ci/create_gitlab_etherlink_release.sh @@ -0,0 +1,11 @@ +#!/bin/sh +set -eu + +### Create a GitLab Etherlink release with links to all the related resources + +# shellcheck source=./scripts/ci/octez-release.sh +. ./scripts/ci/etherlink-release.sh + +release-cli create \ + --name="${gitlab_release_name}" \ + --tag-name="${CI_COMMIT_TAG}" diff --git a/scripts/ci/etherlink-release.sh b/scripts/ci/etherlink-release.sh new file mode 100644 index 000000000000..1de4490b5e00 --- /dev/null +++ b/scripts/ci/etherlink-release.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +### Compute GitLab release names from git tags + +# Git tags for Etherlink releases are on the form `etherlink-vX.Y`, `etherlink-vX.Y-rcZ` or `etherlink-vX.Y-betaZ`. + +# X +gitlab_release_major_version=$(echo "${CI_COMMIT_TAG}" | sed -nE 's/^etherlink-v([0-9]+)\.([0-9]+)(-rc[0-9]+)?$/\1/p') +# Y +gitlab_release_minor_version=$(echo "${CI_COMMIT_TAG}" | sed -nE 's/^etherlink-v([0-9]+)\.([0-9]+)(-rc[0-9]+)?$/\2/p') +# Z +gitlab_release_rc_version=$(echo "${CI_COMMIT_TAG}" | sed -nE 's/^etherlink-v([0-9]+)\.([0-9]+)(-rc)?([0-9]+)?$/\4/p') + +# Is this a release candidate? +if [ -n "${gitlab_release_rc_version}" ]; then + # Yes, release name: Etherlink Release Candidate X.Y~rcZ + # shellcheck disable=SC2034 + gitlab_release_name="Etherlink Release Candidate ${gitlab_release_major_version}.${gitlab_release_minor_version}~rc${gitlab_release_rc_version}" +else + # No, release name: Etherlink Release X.Y + # shellcheck disable=SC2034 + gitlab_release_name="Etherlink Release ${gitlab_release_major_version}.${gitlab_release_minor_version}" +fi -- GitLab