[CI] Prepare CI for Merge Queues (#2308)

PR prepares CI to the GitHub Merge Queues. All github actions that were
running in PR adjusted so they can run in the merge queues. Zombienet
jobs will do nothing during PRs but they will run during merge queues.

Jobs that will be skipped during PR:
 - all zombienet jobs
 - all publish docker jobs

Jobs that will be skipped during merge queue:
 - check-labels
 - check-prdoc
 - pr-custom-review
 - review trigger

cc https://github.com/paritytech/ci_cd/issues/862
This commit is contained in:
Alexander Samusev
2023-11-15 14:28:32 +01:00
committed by GitHub
parent 18165ebba8
commit 5b0622bc4d
15 changed files with 51 additions and 11 deletions
+4
View File
@@ -3,11 +3,15 @@ name: Check labels
on: on:
pull_request: pull_request:
types: [labeled, opened, synchronize, unlabeled] types: [labeled, opened, synchronize, unlabeled]
merge_group:
jobs: jobs:
check-labels: check-labels:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Skip merge queue
if: ${{ contains(github.ref, 'gh-readonly-queue') }}
run: exit 0
- name: Pull image - name: Pull image
env: env:
IMAGE: paritytech/ruled_labels:0.4.0 IMAGE: paritytech/ruled_labels:0.4.0
+1
View File
@@ -2,6 +2,7 @@ name: Check licenses
on: on:
pull_request: pull_request:
merge_group:
permissions: permissions:
packages: read packages: read
+1
View File
@@ -8,6 +8,7 @@ on:
- ".github/workflows/check-links.yml" - ".github/workflows/check-links.yml"
- ".config/lychee.toml" - ".config/lychee.toml"
types: [opened, synchronize, reopened, ready_for_review] types: [opened, synchronize, reopened, ready_for_review]
merge_group:
permissions: permissions:
packages: read packages: read
+3 -2
View File
@@ -3,6 +3,7 @@ name: Check Markdown
on: on:
pull_request: pull_request:
types: [opened, synchronize, reopened, ready_for_review] types: [opened, synchronize, reopened, ready_for_review]
merge_group:
permissions: permissions:
packages: read packages: read
@@ -23,8 +24,8 @@ jobs:
- name: Install tooling - name: Install tooling
run: | run: |
npm install -g markdownlint-cli npm install -g markdownlint-cli
markdownlint --version markdownlint --version
- name: Check Markdown - name: Check Markdown
env: env:
+4
View File
@@ -3,6 +3,7 @@ name: Check PRdoc
on: on:
pull_request: pull_request:
types: [labeled, opened, synchronize, unlabeled] types: [labeled, opened, synchronize, unlabeled]
merge_group:
env: env:
IMAGE: paritytech/prdoc:v0.0.5 IMAGE: paritytech/prdoc:v0.0.5
@@ -17,6 +18,9 @@ jobs:
check-prdoc: check-prdoc:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Skip merge queue
if: ${{ contains(github.ref, 'gh-readonly-queue') }}
run: exit 0
- name: Pull image - name: Pull image
run: | run: |
echo "Pulling $IMAGE" echo "Pulling $IMAGE"
+1
View File
@@ -6,6 +6,7 @@ on:
- master - master
pull_request: pull_request:
types: [opened, synchronize, reopened, ready_for_review] types: [opened, synchronize, reopened, ready_for_review]
merge_group:
jobs: jobs:
check-publish: check-publish:
+1
View File
@@ -6,6 +6,7 @@ on:
- master - master
pull_request: pull_request:
types: [opened, synchronize, reopened, ready_for_review] types: [opened, synchronize, reopened, ready_for_review]
merge_group:
jobs: jobs:
quick_check: quick_check:
+1
View File
@@ -13,6 +13,7 @@ on:
- unlocked - unlocked
- ready_for_review - ready_for_review
- reopened - reopened
merge_group:
jobs: jobs:
sync: sync:
+4
View File
@@ -14,11 +14,15 @@ on:
- ready_for_review - ready_for_review
- converted_to_draft - converted_to_draft
pull_request_review: pull_request_review:
merge_group:
jobs: jobs:
pr-custom-review: pr-custom-review:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Skip merge queue
if: ${{ contains(github.ref, 'gh-readonly-queue') }}
run: exit 0
- name: Skip if pull request is in Draft - name: Skip if pull request is in Draft
# `if: github.event.pull_request.draft == true` should be kept here, at # `if: github.event.pull_request.draft == true` should be kept here, at
# the step level, rather than at the job level. The latter is not # the step level, rather than at the job level. The latter is not
+5 -1
View File
@@ -1,6 +1,6 @@
name: Review-Trigger name: Review-Trigger
on: on:
pull_request_target: pull_request_target:
types: types:
- opened - opened
@@ -10,6 +10,7 @@ on:
- review_request_removed - review_request_removed
- ready_for_review - ready_for_review
pull_request_review: pull_request_review:
merge_group:
jobs: jobs:
trigger-review-bot: trigger-review-bot:
@@ -18,6 +19,9 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
name: trigger review bot name: trigger review bot
steps: steps:
- name: Skip merge queue
if: ${{ contains(github.ref, 'gh-readonly-queue') }}
run: exit 0
- name: Get PR number - name: Get PR number
env: env:
PR_NUMBER: ${{ github.event.pull_request.number }} PR_NUMBER: ${{ github.event.pull_request.number }}
+7 -1
View File
@@ -31,7 +31,7 @@ variables:
NEXTEST_FAILURE_OUTPUT: immediate-final NEXTEST_FAILURE_OUTPUT: immediate-final
NEXTEST_SUCCESS_OUTPUT: final NEXTEST_SUCCESS_OUTPUT: final
ZOMBIENET_IMAGE: "docker.io/paritytech/zombienet:v1.3.79" ZOMBIENET_IMAGE: "docker.io/paritytech/zombienet:v1.3.79"
DOCKER_IMAGES_VERSION: "${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}" DOCKER_IMAGES_VERSION: "${CI_COMMIT_SHA}"
default: default:
retry: retry:
@@ -136,11 +136,13 @@ default:
- if: $CI_PIPELINE_SOURCE == "schedule" - if: $CI_PIPELINE_SOURCE == "schedule"
- if: $CI_COMMIT_REF_NAME == "master" - if: $CI_COMMIT_REF_NAME == "master"
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
- if: $CI_COMMIT_REF_NAME =~ /^gh-readonly-queue.*$/ # merge queues
- if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1 - if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1
.test-pr-refs: .test-pr-refs:
rules: rules:
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
- if: $CI_COMMIT_REF_NAME =~ /^gh-readonly-queue.*$/ # merge queues
# handle the specific case where benches could store incorrect bench data because of the downstream staging runs # handle the specific case where benches could store incorrect bench data because of the downstream staging runs
# exclude cargo-check-benches from such runs # exclude cargo-check-benches from such runs
@@ -152,6 +154,7 @@ default:
- if: $CI_PIPELINE_SOURCE == "schedule" - if: $CI_PIPELINE_SOURCE == "schedule"
- if: $CI_COMMIT_REF_NAME == "master" - if: $CI_COMMIT_REF_NAME == "master"
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
- if: $CI_COMMIT_REF_NAME =~ /^gh-readonly-queue.*$/ # merge queues
- if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1 - if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1
.test-refs-no-trigger: .test-refs-no-trigger:
@@ -162,6 +165,7 @@ default:
- if: $CI_PIPELINE_SOURCE == "schedule" - if: $CI_PIPELINE_SOURCE == "schedule"
- if: $CI_COMMIT_REF_NAME == "master" - if: $CI_COMMIT_REF_NAME == "master"
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
- if: $CI_COMMIT_REF_NAME =~ /^gh-readonly-queue.*$/ # merge queues
- if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1 - if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1
- if: $CI_COMMIT_REF_NAME =~ /^ci-release-.*$/ - if: $CI_COMMIT_REF_NAME =~ /^ci-release-.*$/
@@ -172,6 +176,7 @@ default:
- if: $CI_PIPELINE_SOURCE == "web" - if: $CI_PIPELINE_SOURCE == "web"
- if: $CI_PIPELINE_SOURCE == "schedule" - if: $CI_PIPELINE_SOURCE == "schedule"
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
- if: $CI_COMMIT_REF_NAME =~ /^gh-readonly-queue.*$/ # merge queues
.publish-refs: .publish-refs:
rules: rules:
@@ -192,6 +197,7 @@ default:
- if: $CI_COMMIT_REF_NAME == "master" - if: $CI_COMMIT_REF_NAME == "master"
- if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1 - if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
- if: $CI_COMMIT_REF_NAME =~ /^gh-readonly-queue.*$/ # merge queues
.zombienet-refs: .zombienet-refs:
extends: .build-refs extends: .build-refs
+2 -2
View File
@@ -71,8 +71,8 @@ publish-rustdoc:
DOCKERFILE: "" # docker/path-to.Dockerfile DOCKERFILE: "" # docker/path-to.Dockerfile
IMAGE_NAME: "" # docker.io/paritypr/image_name IMAGE_NAME: "" # docker.io/paritypr/image_name
script: script:
# - test "$PARITYPR_USER" -a "$PARITYPR_PASS" || # Exit if the job is not running in a merge queue
# ( echo "no docker credentials provided"; exit 1 ) - if [[ $CI_COMMIT_REF_NAME != *"gh-readonly-queue"* ]]; then echo "I will run only in a merge queue"; exit 0; fi
- $BUILDAH_COMMAND build - $BUILDAH_COMMAND build
--format=docker --format=docker
--build-arg VCS_REF="${CI_COMMIT_SHA}" --build-arg VCS_REF="${CI_COMMIT_SHA}"
+2
View File
@@ -3,6 +3,8 @@
.zombienet-before-script: .zombienet-before-script:
before_script: before_script:
# Exit if the job is not merge queue
- if [[ $CI_COMMIT_REF_NAME != *"gh-readonly-queue"* ]]; then echo "I will run only in a merge queue"; exit 0; fi
- echo "Zombie-net Tests Config" - echo "Zombie-net Tests Config"
- echo "${ZOMBIENET_IMAGE}" - echo "${ZOMBIENET_IMAGE}"
- echo "${POLKADOT_IMAGE}" - echo "${POLKADOT_IMAGE}"
+13 -5
View File
@@ -4,6 +4,8 @@
# common settings for all zombienet jobs # common settings for all zombienet jobs
.zombienet-polkadot-common: .zombienet-polkadot-common:
before_script: before_script:
# Exit if the job is not merge queue
- if [[ $CI_COMMIT_REF_NAME != *"gh-readonly-queue"* ]]; then echo "I will run only in a merge queue"; exit 0; fi
- export BUILD_RELEASE_VERSION="$(cat ./artifacts/BUILD_RELEASE_VERSION)" # from build-linux-stable job - export BUILD_RELEASE_VERSION="$(cat ./artifacts/BUILD_RELEASE_VERSION)" # from build-linux-stable job
- export DEBUG=zombie,zombie::network-node - export DEBUG=zombie,zombie::network-node
- export ZOMBIENET_INTEGRATION_TEST_IMAGE="${POLKADOT_IMAGE}":${PIPELINE_IMAGE_TAG} - export ZOMBIENET_INTEGRATION_TEST_IMAGE="${POLKADOT_IMAGE}":${PIPELINE_IMAGE_TAG}
@@ -12,12 +14,12 @@
- export MALUS_IMAGE="${MALUS_IMAGE}":${PIPELINE_IMAGE_TAG} - export MALUS_IMAGE="${MALUS_IMAGE}":${PIPELINE_IMAGE_TAG}
- IMAGE_AVAILABLE=$(curl -o /dev/null -w "%{http_code}" -I -L -s https://registry.hub.docker.com/v2/repositories/parity/polkadot/tags/${BUILD_RELEASE_VERSION}) - IMAGE_AVAILABLE=$(curl -o /dev/null -w "%{http_code}" -I -L -s https://registry.hub.docker.com/v2/repositories/parity/polkadot/tags/${BUILD_RELEASE_VERSION})
- if [ $IMAGE_AVAILABLE -eq 200 ]; then - if [ $IMAGE_AVAILABLE -eq 200 ]; then
export ZOMBIENET_INTEGRATION_TEST_SECONDARY_IMAGE="docker.io/parity/polkadot:${BUILD_RELEASE_VERSION}"; export ZOMBIENET_INTEGRATION_TEST_SECONDARY_IMAGE="docker.io/parity/polkadot:${BUILD_RELEASE_VERSION}";
else else
echo "Getting the image to use as SECONDARY, using ${BUILD_RELEASE_VERSION} as base"; echo "Getting the image to use as SECONDARY, using ${BUILD_RELEASE_VERSION} as base";
VERSIONS=$(curl -L -s 'https://registry.hub.docker.com/v2/repositories/parity/polkadot/tags/' | jq -r '.results[].name'| grep -E "v[0-9]" |grep -vE "[0-9]-"); VERSIONS=$(curl -L -s 'https://registry.hub.docker.com/v2/repositories/parity/polkadot/tags/' | jq -r '.results[].name'| grep -E "v[0-9]" |grep -vE "[0-9]-");
VERSION_TO_USE=$(echo "${BUILD_RELEASE_VERSION}\n$VERSIONS"|sort -r|grep -A1 "${BUILD_RELEASE_VERSION}"|tail -1); VERSION_TO_USE=$(echo "${BUILD_RELEASE_VERSION}\n$VERSIONS"|sort -r|grep -A1 "${BUILD_RELEASE_VERSION}"|tail -1);
export ZOMBIENET_INTEGRATION_TEST_SECONDARY_IMAGE="docker.io/parity/polkadot:${VERSION_TO_USE}"; export ZOMBIENET_INTEGRATION_TEST_SECONDARY_IMAGE="docker.io/parity/polkadot:${VERSION_TO_USE}";
fi fi
- echo "Zombienet Tests Config" - echo "Zombienet Tests Config"
- echo "gh-dir ${GH_DIR}" - echo "gh-dir ${GH_DIR}"
@@ -117,6 +119,8 @@ zombienet-polkadot-smoke-0001-parachains-smoke-test:
extends: extends:
- .zombienet-polkadot-common - .zombienet-polkadot-common
before_script: before_script:
# Exit if the job is not merge queue
- if [[ $CI_COMMIT_REF_NAME != *"gh-readonly-queue"* ]]; then echo "I will run only in a merge queue"; exit 0; fi
- export ZOMBIENET_INTEGRATION_TEST_IMAGE="${POLKADOT_IMAGE}":${PIPELINE_IMAGE_TAG} - export ZOMBIENET_INTEGRATION_TEST_IMAGE="${POLKADOT_IMAGE}":${PIPELINE_IMAGE_TAG}
- export COL_IMAGE="${COLANDER_IMAGE}":${PIPELINE_IMAGE_TAG} - export COL_IMAGE="${COLANDER_IMAGE}":${PIPELINE_IMAGE_TAG}
- echo "Zombienet Tests Config" - echo "Zombienet Tests Config"
@@ -134,6 +138,8 @@ zombienet-polkadot-smoke-0002-parachains-parachains-upgrade-smoke:
extends: extends:
- .zombienet-polkadot-common - .zombienet-polkadot-common
before_script: before_script:
# Exit if the job is not merge queue
- if [[ $CI_COMMIT_REF_NAME != *"gh-readonly-queue"* ]]; then echo "I will run only in a merge queue"; exit 0; fi
- export ZOMBIENET_INTEGRATION_TEST_IMAGE="${POLKADOT_IMAGE}":${PIPELINE_IMAGE_TAG} - export ZOMBIENET_INTEGRATION_TEST_IMAGE="${POLKADOT_IMAGE}":${PIPELINE_IMAGE_TAG}
- export CUMULUS_IMAGE="docker.io/paritypr/polkadot-parachain-debug:${DOCKER_IMAGES_VERSION}" - export CUMULUS_IMAGE="docker.io/paritypr/polkadot-parachain-debug:${DOCKER_IMAGES_VERSION}"
- echo "Zombienet Tests Config" - echo "Zombienet Tests Config"
@@ -176,6 +182,8 @@ zombienet-polkadot-misc-0002-upgrade-node:
- job: build-linux-stable - job: build-linux-stable
artifacts: true artifacts: true
before_script: before_script:
# Exit if the job is not merge queue
- if [[ $CI_COMMIT_REF_NAME != *"gh-readonly-queue"* ]]; then echo "I will run only in a merge queue"; exit 0; fi
- export ZOMBIENET_INTEGRATION_TEST_IMAGE="docker.io/parity/polkadot:latest" - export ZOMBIENET_INTEGRATION_TEST_IMAGE="docker.io/parity/polkadot:latest"
- echo "Overrided poladot image ${ZOMBIENET_INTEGRATION_TEST_IMAGE}" - echo "Overrided poladot image ${ZOMBIENET_INTEGRATION_TEST_IMAGE}"
- export COL_IMAGE="${COLANDER_IMAGE}":${PIPELINE_IMAGE_TAG} - export COL_IMAGE="${COLANDER_IMAGE}":${PIPELINE_IMAGE_TAG}
+2
View File
@@ -4,6 +4,8 @@
# common settings for all zombienet jobs # common settings for all zombienet jobs
.zombienet-substrate-common: .zombienet-substrate-common:
before_script: before_script:
# Exit if the job is not merge queue
- if [[ $CI_COMMIT_REF_NAME != *"gh-readonly-queue"* ]]; then echo "I will run only in a merge queue"; exit 0; fi
- echo "Zombienet Tests Config" - echo "Zombienet Tests Config"
- echo "${ZOMBIENET_IMAGE}" - echo "${ZOMBIENET_IMAGE}"
- echo "${GH_DIR}" - echo "${GH_DIR}"