diff --git a/.gitlab/ci/Makefile b/.gitlab/ci/Makefile index 65b26df795d6febd6655da0bf34b960c48f1e978..131215649ec83f80295ed4d4edb654b708bf5e0f 100644 --- a/.gitlab/ci/Makefile +++ b/.gitlab/ci/Makefile @@ -150,6 +150,11 @@ doc-publish: cd ${CI_PROJECT_DIR} && \ ./scripts/ci/doc_publish.sh +.PHONY: opam-release +opam-release: + cd ${CI_PROJECT_DIR} ; \ + ./scripts/ci/opam-release.sh + .PHONY: gitlab-release gitlab-release: cd ${CI_PROJECT_DIR} && \ @@ -161,4 +166,4 @@ gitlab-take-ownership: ifdef CI_PROJECT_DIR # FIXME: https://gitlab.com/tezos/tezos/-/issues/2865 sudo chown -R $(shell id -u):$(shell id -g) ${CI_PROJECT_DIR} -endif +endif \ No newline at end of file diff --git a/.gitlab/ci/publish_release.yml b/.gitlab/ci/publish_release.yml index 921f686b4fcda635e0f0ed3e46fe5debf3245cdd..efac28d458d48d84536faca8574459aaee7862a0 100644 --- a/.gitlab/ci/publish_release.yml +++ b/.gitlab/ci/publish_release.yml @@ -14,6 +14,20 @@ gitlab:release: script: - make -C ${CI_PROJECT_DIR}/.gitlab/ci gitlab-release +opam:release: + extends: + - .default_settings_template + - .image_template__runtime_build_test_dependencies_template + - .rules_template__release_tag + stage: publish_release + # Publish jobs are uninterruptible to avoid publishing partial results. + interruptible: false + dependencies: + - gitlab:release + script: + # create opam release and push to github (also pushes latest master branch) + - make -C ${CI_PROJECT_DIR}/.gitlab/ci opam-release + # 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, diff --git a/scripts/ci/opam-release.sh b/scripts/ci/opam-release.sh new file mode 100755 index 0000000000000000000000000000000000000000..de2ea7b6736e3f5542ad8255207f633c70209d48 --- /dev/null +++ b/scripts/ci/opam-release.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +set -e + +ci_dir="$(cd "$(dirname "$0")" && echo "$(pwd -P)/")" +script_dir="$(dirname "$ci_dir")" + +opam_repository_fork="git@github.com:tezos/opam-repository" +opam_dir="opam-repository" + +log () { + echo '\e[1m'"$1"'\e[0m' +} + +# shellcheck source=./scripts/ci/release.sh +. "$ci_dir/release.sh" + +# set up ssh credentials to access github +mkdir -p "$HOME/.ssh" +cp "$TEZOS_GITHUB_OPAM_REPOSITORY_MACHINE_USER_PRIVATE_SSH_KEY" "$HOME/.ssh/id_rsa" +cat "$GITHUB_SSH_HOST_KEYS" >> "$HOME/.ssh/known_hosts" +chmod 600 "$HOME/.ssh/known_hosts" +chmod 600 "$HOME/.ssh/id_rsa" +chmod 700 "$HOME/.ssh" +log "Done setting up credentials." + +# call opam-release.sh with the correct arguments +"$script_dir/opam-release.sh" \ + "$opam_release_tag" \ + "https://gitlab.com/tezos/tezos/-/archive/$CI_COMMIT_TAG/$gitlab_package_name.tar.gz" \ + "$opam_dir" + +# Matches the corresponding variable in /scripts/opam-release.sh. +branch_name="octez-$opam_release_tag" + +log "While we're here, update master on the fork..." +cd "$opam_dir" +git remote add github "$opam_repository_fork" +git push github master:master + +log "Pushing $branch_name to $opam_repository_fork..." +git push --force-with-lease github "${branch_name}:${branch_name}" + +log "Create the pull request at:" +log "https://github.com/ocaml/opam-repository/compare/master...tezos:opam-repository:${branch_name}" diff --git a/scripts/ci/release.sh b/scripts/ci/release.sh index 8a9f4f9c73f11347302405b3e824bc478085903a..1b33f2d8cc7e747fb6ac3019395d372b2501d2e5 100755 --- a/scripts/ci/release.sh +++ b/scripts/ci/release.sh @@ -36,10 +36,12 @@ then # Yes, release name: X.Y~rcZ # shellcheck disable=SC2034 gitlab_release_name="${gitlab_release_major_version}.${gitlab_release_minor_version}~rc${gitlab_release_rc_version}" + opam_release_tag="${gitlab_release_major_version}.${gitlab_release_minor_version}~rc${gitlab_release_rc_version}" else # No, release name: Release X.Y # shellcheck disable=SC2034 gitlab_release_name="Release ${gitlab_release_major_version}.${gitlab_release_minor_version}" + opam_release_tag="${gitlab_release_major_version}.${gitlab_release_minor_version}" fi ### Compute GitLab generic package names diff --git a/scripts/opam-release.sh b/scripts/opam-release.sh index b75fe88cc23205cdc5186c15c85e22b2e0b04576..15b9ca981f730f61530378b0f3fbc4112a997317 100755 --- a/scripts/opam-release.sh +++ b/scripts/opam-release.sh @@ -72,4 +72,5 @@ branch="octez-""$(echo "$version" | tr '~' -)" git checkout -b "$branch" git add packages git commit -am "Octez $version packages" + log "A branch named $branch has been created in $opam_dir."