mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-12 04:11:07 +00:00
Remove deprecated CI config files (#1799)
This PR removes deprecated CI config files
This commit is contained in:
committed by
GitHub
parent
0a6dfdf973
commit
86955eef90
@@ -1,2 +0,0 @@
|
||||
/.gitlab-ci.yml filter=ci-prettier
|
||||
/scripts/ci/gitlab/pipeline/*.yml filter=ci-prettier
|
||||
Vendored
-31
@@ -1,31 +0,0 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "cargo"
|
||||
directory: "/"
|
||||
labels: ["A2-insubstantial", "B0-silent", "C1-low"]
|
||||
# Handle updates for crates from github.com/paritytech/substrate manually.
|
||||
ignore:
|
||||
- dependency-name: "substrate-*"
|
||||
- dependency-name: "sc-*"
|
||||
- dependency-name: "sp-*"
|
||||
- dependency-name: "frame-*"
|
||||
- dependency-name: "fork-tree"
|
||||
- dependency-name: "frame-remote-externalities"
|
||||
- dependency-name: "pallet-*"
|
||||
- dependency-name: "beefy-*"
|
||||
- dependency-name: "try-runtime-*"
|
||||
- dependency-name: "test-runner"
|
||||
- dependency-name: "generate-bags"
|
||||
- dependency-name: "sub-tokens"
|
||||
- dependency-name: "polkadot-*"
|
||||
- dependency-name: "xcm*"
|
||||
- dependency-name: "kusama-*"
|
||||
- dependency-name: "westend-*"
|
||||
- dependency-name: "rococo-*"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
- package-ecosystem: github-actions
|
||||
directory: '/'
|
||||
labels: ["A2-insubstantial", "B0-silent", "C1-low", "E2-dependencies"]
|
||||
schedule:
|
||||
interval: daily
|
||||
Vendored
-48
@@ -1,48 +0,0 @@
|
||||
# 🔒 PROTECTED: Changes to locks-review-team should be approved by the current locks-review-team
|
||||
locks-review-team: cumulus-locks-review
|
||||
team-leads-team: polkadot-review
|
||||
action-review-team: ci
|
||||
|
||||
rules:
|
||||
- name: Runtime files
|
||||
check_type: changed_files
|
||||
condition: ^parachains/runtimes/assets/(asset-hub-kusama|asset-hub-polkadot)/src/[^/]+\.rs$|^parachains/runtimes/bridge-hubs/(bridge-hub-kusama|bridge-hub-polkadot)/src/[^/]+\.rs$|^parachains/runtimes/collectives/collectives-polkadot/src/[^/]+\.rs$|^parachains/common/src/[^/]+\.rs$
|
||||
all_distinct:
|
||||
- min_approvals: 1
|
||||
teams:
|
||||
- cumulus-locks-review
|
||||
- min_approvals: 1
|
||||
teams:
|
||||
- polkadot-review
|
||||
|
||||
- name: Core developers
|
||||
check_type: changed_files
|
||||
condition:
|
||||
include: .*
|
||||
# excluding files from 'Runtime files' and 'CI files' rules and `Bridges subtree files`
|
||||
exclude: ^parachains/runtimes/assets/(asset-hub-kusama|asset-hub-polkadot)/src/[^/]+\.rs$|^parachains/runtimes/bridge-hubs/(bridge-hub-kusama|bridge-hub-polkadot)/src/[^/]+\.rs$|^parachains/runtimes/collectives/collectives-polkadot/src/[^/]+\.rs$|^parachains/common/src/[^/]+\.rs$|^\.gitlab-ci\.yml|^scripts/ci/.*|^\.github/.*
|
||||
min_approvals: 2
|
||||
teams:
|
||||
- core-devs
|
||||
|
||||
# if there are any changes in the bridges subtree (in case of backport changes back to bridges repo)
|
||||
- name: Bridges subtree files
|
||||
check_type: changed_files
|
||||
condition: ^bridges/.*
|
||||
min_approvals: 1
|
||||
teams:
|
||||
- bridges-core
|
||||
|
||||
- name: CI files
|
||||
check_type: changed_files
|
||||
condition:
|
||||
include: ^\.gitlab-ci\.yml|^scripts/ci/.*|^\.github/.*
|
||||
exclude: ^scripts/ci/gitlab/pipeline/zombienet.yml$
|
||||
min_approvals: 2
|
||||
teams:
|
||||
- ci
|
||||
- release-engineering
|
||||
|
||||
prevent-review-request:
|
||||
teams:
|
||||
- core-devs
|
||||
-47
@@ -1,47 +0,0 @@
|
||||
name: Check D labels
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [labeled, opened, synchronize, unlabeled]
|
||||
paths:
|
||||
- primitives/**
|
||||
|
||||
jobs:
|
||||
check-labels:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Pull image
|
||||
env:
|
||||
IMAGE: paritytech/ruled_labels:0.4.0
|
||||
run: docker pull $IMAGE
|
||||
|
||||
- name: Check labels
|
||||
env:
|
||||
IMAGE: paritytech/ruled_labels:0.4.0
|
||||
MOUNT: /work
|
||||
GITHUB_PR: ${{ github.event.pull_request.number }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
API_BASE: https://api.github.com/repos
|
||||
REPO: ${{ github.repository }}
|
||||
RULES_PATH: labels/ruled_labels
|
||||
CHECK_SPECS: specs_cumulus.yaml
|
||||
run: |
|
||||
echo "REPO: ${REPO}"
|
||||
echo "GITHUB_PR: ${GITHUB_PR}"
|
||||
# Clone repo with labels specs
|
||||
git clone https://github.com/paritytech/labels
|
||||
# Fetch the labels for the PR under test
|
||||
labels=$( curl -H "Authorization: token ${GITHUB_TOKEN}" -s "$API_BASE/${REPO}/pulls/${GITHUB_PR}" | jq '.labels | .[] | .name' | tr "\n" ",")
|
||||
|
||||
if [ -z "${labels}" ]; then
|
||||
docker run --rm -i -v $PWD/${RULES_PATH}/:$MOUNT $IMAGE check $MOUNT/$CHECK_SPECS --tags audit --no-label
|
||||
fi
|
||||
|
||||
labels_args=${labels: :-1}
|
||||
printf "Checking labels: %s\n" "${labels_args}"
|
||||
|
||||
# Prevent the shell from splitting labels with spaces
|
||||
IFS=","
|
||||
|
||||
# --dev is more useful to debug mode to debug
|
||||
docker run --rm -i -v $PWD/${RULES_PATH}/:$MOUNT $IMAGE check $MOUNT/$CHECK_SPECS --labels ${labels_args} --dev --tags audit
|
||||
-45
@@ -1,45 +0,0 @@
|
||||
name: Check labels
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [labeled, opened, synchronize, unlabeled]
|
||||
|
||||
jobs:
|
||||
check-labels:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Pull image
|
||||
env:
|
||||
IMAGE: paritytech/ruled_labels:0.4.0
|
||||
run: docker pull $IMAGE
|
||||
|
||||
- name: Check labels
|
||||
env:
|
||||
IMAGE: paritytech/ruled_labels:0.4.0
|
||||
MOUNT: /work
|
||||
GITHUB_PR: ${{ github.event.pull_request.number }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
API_BASE: https://api.github.com/repos
|
||||
REPO: ${{ github.repository }}
|
||||
RULES_PATH: labels/ruled_labels
|
||||
CHECK_SPECS: specs_cumulus.yaml
|
||||
run: |
|
||||
echo "REPO: ${REPO}"
|
||||
echo "GITHUB_PR: ${GITHUB_PR}"
|
||||
# Clone repo with labels specs
|
||||
git clone https://github.com/paritytech/labels
|
||||
# Fetch the labels for the PR under test
|
||||
labels=$( curl -H "Authorization: token ${GITHUB_TOKEN}" -s "$API_BASE/${REPO}/pulls/${GITHUB_PR}" | jq '.labels | .[] | .name' | tr "\n" ",")
|
||||
|
||||
if [ -z "${labels}" ]; then
|
||||
docker run --rm -i -v $PWD/${RULES_PATH}/:$MOUNT $IMAGE check $MOUNT/$CHECK_SPECS --tags audit --no-label
|
||||
fi
|
||||
|
||||
labels_args=${labels: :-1}
|
||||
printf "Checking labels: %s\n" "${labels_args}"
|
||||
|
||||
# Prevent the shell from splitting labels with spaces
|
||||
IFS=","
|
||||
|
||||
# --dev is more useful to debug mode to debug
|
||||
docker run --rm -i -v $PWD/${RULES_PATH}/:$MOUNT $IMAGE check $MOUNT/$CHECK_SPECS --labels ${labels_args} --dev --tags PR
|
||||
Vendored
-39
@@ -1,39 +0,0 @@
|
||||
name: Publish Rust Docs
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
deploy-docs:
|
||||
name: Deploy docs
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Install tooling
|
||||
run: |
|
||||
sudo apt-get install -y protobuf-compiler
|
||||
protoc --version
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
|
||||
|
||||
- name: Rust versions
|
||||
run: rustup show
|
||||
|
||||
- name: Rust cache
|
||||
uses: Swatinem/rust-cache@e207df5d269b42b69c8bc5101da26f7d31feddb4 # v2.6.2
|
||||
|
||||
- name: Build rustdocs
|
||||
run: SKIP_WASM_BUILD=1 cargo doc --all --no-deps
|
||||
|
||||
- name: Make index.html
|
||||
run: echo "<meta http-equiv=refresh content=0;url=cumulus_client_collator/index.html>" > ./target/doc/index.html
|
||||
|
||||
- name: Deploy documentation
|
||||
uses: peaceiris/actions-gh-pages@373f7f263a76c20808c831209c920827a82a2847 # v3.9.3
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
publish_branch: gh-pages
|
||||
publish_dir: ./target/doc
|
||||
-22
@@ -1,22 +0,0 @@
|
||||
name: Rustfmt check
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened, ready_for_review]
|
||||
|
||||
jobs:
|
||||
quick_check:
|
||||
strategy:
|
||||
matrix:
|
||||
os: ["ubuntu-latest"]
|
||||
runs-on: ${{ matrix.os }}
|
||||
container:
|
||||
image: paritytech/ci-linux:production
|
||||
steps:
|
||||
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
|
||||
|
||||
- name: Cargo fmt
|
||||
run: cargo +nightly fmt --all -- --check
|
||||
-42
@@ -1,42 +0,0 @@
|
||||
name: Assign reviewers
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
types:
|
||||
- opened
|
||||
- reopened
|
||||
- synchronize
|
||||
- review_requested
|
||||
- review_request_removed
|
||||
- ready_for_review
|
||||
- converted_to_draft
|
||||
pull_request_review:
|
||||
|
||||
jobs:
|
||||
pr-custom-review:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Skip if pull request is in Draft
|
||||
# `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
|
||||
# recommended because when the PR is moved from "Draft" to "Ready to
|
||||
# review" the workflow will immediately be passing (since it was skipped),
|
||||
# even though it hasn't actually ran, since it takes a few seconds for
|
||||
# the workflow to start. This is also disclosed in:
|
||||
# https://github.community/t/dont-run-actions-on-draft-pull-requests/16817/17
|
||||
# That scenario would open an opportunity for the check to be bypassed:
|
||||
# 1. Get your PR approved
|
||||
# 2. Move it to Draft
|
||||
# 3. Push whatever commits you want
|
||||
# 4. Move it to "Ready for review"; now the workflow is passing (it was
|
||||
# skipped) and "Check reviews" is also passing (it won't be updated
|
||||
# until the workflow is finished)
|
||||
if: github.event.pull_request.draft == true
|
||||
run: exit 1
|
||||
- name: pr-custom-review
|
||||
uses: paritytech/pr-custom-review@action-v3
|
||||
with:
|
||||
checks-reviews-api: http://pcr.parity-prod.parity.io/api/v1/check_reviews
|
||||
@@ -1,22 +0,0 @@
|
||||
name: Release branch check
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- release-**v[0-9]+.[0-9]+.[0-9]+ # client
|
||||
- release-**v[0-9]+ # runtimes
|
||||
- polkadot-v[0-9]+.[0-9]+.[0-9]+ # cumulus code
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
check_branch:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Run check
|
||||
shell: bash
|
||||
run: ./scripts/ci/github/check-rel-br
|
||||
@@ -1,87 +0,0 @@
|
||||
name: Release - RC automation
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- release-v[0-9]+.[0-9]+.[0-9]+
|
||||
- release-parachains-v[0-9]+
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
tag_rc:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
channel:
|
||||
- name: 'RelEng: Cumulus Release Coordination'
|
||||
room: '!NAEMyPAHWOiOQHsvus:parity.io'
|
||||
pre-releases: true
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- id: compute_tag
|
||||
name: Compute next rc tag
|
||||
shell: bash
|
||||
run: |
|
||||
# Get last rc tag if exists, else set it to {version}-rc1
|
||||
version=${GITHUB_REF#refs/heads/release-}
|
||||
echo "$version"
|
||||
echo "version=$version" >> $GITHUB_OUTPUT
|
||||
git tag -l
|
||||
last_rc=$(git tag -l "$version-rc*" | sort -V | tail -n 1)
|
||||
if [ -n "$last_rc" ]; then
|
||||
suffix=$(echo "$last_rc" | grep -Eo '[0-9]+$')
|
||||
echo $suffix
|
||||
((suffix++))
|
||||
echo $suffix
|
||||
echo "new_tag=$version-rc$suffix" >> $GITHUB_OUTPUT
|
||||
echo "first_rc=false" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "new_tag=$version-rc1" >> $GITHUB_OUTPUT
|
||||
echo "first_rc=true" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Apply new tag
|
||||
uses: tvdias/github-tagger@ed7350546e3e503b5e942dffd65bc8751a95e49d # v0.0.2
|
||||
with:
|
||||
# We can't use the normal GITHUB_TOKEN for the following reason:
|
||||
# https://docs.github.com/en/actions/reference/events-that-trigger-workflows#triggering-new-workflows-using-a-personal-access-token
|
||||
# RELEASE_BRANCH_TOKEN requires public_repo OAuth scope
|
||||
repo-token: "${{ secrets.RELEASE_BRANCH_TOKEN }}"
|
||||
tag: ${{ steps.compute_tag.outputs.new_tag }}
|
||||
|
||||
- id: create-issue-checklist-client
|
||||
uses: JasonEtco/create-an-issue@e27dddc79c92bc6e4562f268fffa5ed752639abd # v2.9.1
|
||||
# Only create the issue if it's the first release candidate
|
||||
if: steps.compute_tag.outputs.first_rc == 'true'
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
VERSION: ${{ steps.compute_tag.outputs.version }}
|
||||
with:
|
||||
assignees: EgorPopelyaev, coderobe, chevdor
|
||||
filename: .github/ISSUE_TEMPLATE/release-client.md
|
||||
|
||||
- id: create-issue-checklist-runtime
|
||||
uses: JasonEtco/create-an-issue@e27dddc79c92bc6e4562f268fffa5ed752639abd # v2.9.1
|
||||
# Only create the issue if it's the first release candidate
|
||||
if: steps.compute_tag.outputs.first_rc == 'true'
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
VERSION: ${{ steps.compute_tag.outputs.version }}
|
||||
with:
|
||||
assignees: EgorPopelyaev, coderobe, chevdor
|
||||
filename: .github/ISSUE_TEMPLATE/release-runtime.md
|
||||
|
||||
- name: Matrix notification to ${{ matrix.channel.name }}
|
||||
uses: s3krit/matrix-message-action@70ad3fb812ee0e45ff8999d6af11cafad11a6ecf # v0.0.3
|
||||
if: steps.create-issue-checklist-client.outputs.url != '' && steps.create-issue-checklist-runtime.outputs.url != ''
|
||||
with:
|
||||
room_id: ${{ matrix.channel.room }}
|
||||
access_token: ${{ secrets.RELEASENOTES_MATRIX_V2_ACCESS_TOKEN }}
|
||||
server: "m.parity.io"
|
||||
message: |
|
||||
The Release Process for Cumulus ${{ steps.compute_tag.outputs.version }} has been started.<br/>
|
||||
Tracking issues:
|
||||
- client: ${{ steps.create-issue-checklist-client.outputs.url }}"
|
||||
- runtime: ${{ steps.create-issue-checklist-runtime.outputs.url }}"
|
||||
@@ -1,86 +0,0 @@
|
||||
# This workflow performs the Extrinsic Ordering Check on demand using a binary
|
||||
|
||||
name: Release - Extrinsic Ordering Check from Binary
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
reference_url:
|
||||
description: The WebSocket url of the reference node
|
||||
default: wss://kusama-asset-hub-rpc.polkadot.io
|
||||
required: true
|
||||
binary_url:
|
||||
description: A url to a Linux binary for the node containing the runtime to test
|
||||
default: https://releases.parity.io/cumulus/polkadot-v0.9.21/polkadot-parachain
|
||||
required: true
|
||||
chain:
|
||||
description: The name of the chain under test. Usually, you would pass a local chain
|
||||
default: asset-hub-kusama-local
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
check:
|
||||
name: Run check
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
CHAIN: ${{github.event.inputs.chain}}
|
||||
BIN: node-bin
|
||||
BIN_PATH: ./tmp/$BIN
|
||||
BIN_URL: ${{github.event.inputs.binary_url}}
|
||||
REF_URL: ${{github.event.inputs.reference_url}}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
|
||||
|
||||
- name: Fetch binary
|
||||
run: |
|
||||
echo Creating a temp dir to download and run binary
|
||||
mkdir -p tmp
|
||||
echo Fetching $BIN_URL
|
||||
wget $BIN_URL -O $BIN_PATH
|
||||
chmod a+x $BIN_PATH
|
||||
$BIN_PATH --version
|
||||
|
||||
- name: Start local node
|
||||
run: |
|
||||
echo Running on $CHAIN
|
||||
$BIN_PATH --chain=$CHAIN -- --chain polkadot-local &
|
||||
|
||||
- name: Prepare output
|
||||
run: |
|
||||
VERSION=$($BIN_PATH --version)
|
||||
echo "Metadata comparison:" >> output.txt
|
||||
echo "Date: $(date)" >> output.txt
|
||||
echo "Reference: $REF_URL" >> output.txt
|
||||
echo "Target version: $VERSION" >> output.txt
|
||||
echo "Chain: $CHAIN" >> output.txt
|
||||
echo "----------------------------------------------------------------------" >> output.txt
|
||||
|
||||
- name: Pull polkadot-js-tools image
|
||||
run: docker pull jacogr/polkadot-js-tools
|
||||
|
||||
- name: Compare the metadata
|
||||
run: |
|
||||
CMD="docker run --pull always --network host jacogr/polkadot-js-tools metadata $REF_URL ws://localhost:9944"
|
||||
echo -e "Running:\n$CMD"
|
||||
$CMD >> output.txt
|
||||
sed -z -i 's/\n\n/\n/g' output.txt
|
||||
cat output.txt | egrep -n -i ''
|
||||
SUMMARY=$(./scripts/ci/github/extrinsic-ordering-filter.sh output.txt)
|
||||
echo -e $SUMMARY
|
||||
echo -e $SUMMARY >> output.txt
|
||||
|
||||
- name: Show result
|
||||
run: |
|
||||
cat output.txt
|
||||
|
||||
- name: Stop our local node
|
||||
run: |
|
||||
pkill $BIN
|
||||
continue-on-error: true
|
||||
|
||||
- name: Save output as artifact
|
||||
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
|
||||
with:
|
||||
name: ${{ env.CHAIN }}
|
||||
path: |
|
||||
output.txt
|
||||
@@ -1,120 +0,0 @@
|
||||
# This workflow performs the Extrinsic Ordering Check on demand using two reference binaries
|
||||
|
||||
name: Release - Extrinsic API Check with reference bins
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
reference_binary_url:
|
||||
description: A url to a Linux binary for the node containing the reference runtime to test against
|
||||
default: https://releases.parity.io/cumulus/v0.9.230/polkadot-parachain
|
||||
required: true
|
||||
binary_url:
|
||||
description: A url to a Linux binary for the node containing the runtime to test
|
||||
default: https://releases.parity.io/cumulus/v0.9.270-rc7/polkadot-parachain
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
check:
|
||||
name: Run check
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 10
|
||||
env:
|
||||
REF_URL: ${{github.event.inputs.reference_binary_url}}
|
||||
BIN_REF: polkadot-parachain-ref
|
||||
BIN_URL: ${{github.event.inputs.binary_url}}
|
||||
BIN_BASE: polkadot-parachain
|
||||
TMP: ./tmp
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- runtime: asset-hub-kusama
|
||||
local: asset-hub-kusama-local
|
||||
relay: kusama-local
|
||||
- runtime: asset-hub-polkadot
|
||||
local: asset-hub-polkadot-local
|
||||
relay: polkadot-local
|
||||
- runtime: asset-hub-westend
|
||||
local: asset-hub-westend-local
|
||||
relay: polkadot-local
|
||||
- runtime: contracts-rococo
|
||||
local: contracts-rococo-local
|
||||
relay: polkadot-local
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
|
||||
|
||||
- name: Create tmp dir
|
||||
run: |
|
||||
mkdir -p $TMP
|
||||
pwd
|
||||
|
||||
- name: Fetch reference binary for ${{ matrix.runtime }}
|
||||
run: |
|
||||
echo Fetching $REF_URL
|
||||
curl $REF_URL -o $TMP/$BIN_REF
|
||||
chmod a+x $TMP/$BIN_REF
|
||||
$TMP/$BIN_REF --version
|
||||
|
||||
- name: Fetch test binary for ${{ matrix.runtime }}
|
||||
run: |
|
||||
echo Fetching $BIN_URL
|
||||
curl $BIN_URL -o $TMP/$BIN_BASE
|
||||
chmod a+x $TMP/$BIN_BASE
|
||||
$TMP/$BIN_BASE --version
|
||||
|
||||
- name: Start local reference node for ${{ matrix.runtime }}
|
||||
run: |
|
||||
echo Running reference on ${{ matrix.local }}
|
||||
$TMP/$BIN_REF --chain=${{ matrix.local }} --ws-port=9954 --tmp -- --chain ${{ matrix.relay }} &
|
||||
sleep 15
|
||||
|
||||
- name: Start local test node for ${{ matrix.runtime }}
|
||||
run: |
|
||||
echo Running test on ${{ matrix.local }}
|
||||
$TMP/$BIN_BASE --chain=${{ matrix.local }} --ws-port=9944 --tmp -- --chain ${{ matrix.relay }} &
|
||||
sleep 15
|
||||
|
||||
- name: Prepare output
|
||||
run: |
|
||||
REF_VERSION=$($TMP/$BIN_REF --version)
|
||||
BIN_VERSION=$($TMP/$BIN_BASE --version)
|
||||
echo "Metadata comparison:" >> output.txt
|
||||
echo "Date: $(date)" >> output.txt
|
||||
echo "Ref. binary: $REF_URL" >> output.txt
|
||||
echo "Test binary: $BIN_URL" >> output.txt
|
||||
echo "Ref. version: $REF_VERSION" >> output.txt
|
||||
echo "Test version: $BIN_VERSION" >> output.txt
|
||||
echo "Chain: ${{ matrix.local }}" >> output.txt
|
||||
echo "Relay: ${{ matrix.relay }}" >> output.txt
|
||||
echo "----------------------------------------------------------------------" >> output.txt
|
||||
|
||||
- name: Pull polkadot-js-tools image
|
||||
run: docker pull jacogr/polkadot-js-tools
|
||||
|
||||
- name: Compare the metadata
|
||||
run: |
|
||||
CMD="docker run --pull always --network host jacogr/polkadot-js-tools metadata ws://localhost:9954 ws://localhost:9944"
|
||||
echo -e "Running:\n$CMD"
|
||||
$CMD >> output.txt
|
||||
sed -z -i 's/\n\n/\n/g' output.txt
|
||||
cat output.txt | egrep -n -i ''
|
||||
SUMMARY=$(./scripts/ci/github/extrinsic-ordering-filter.sh output.txt)
|
||||
echo -e $SUMMARY
|
||||
echo -e $SUMMARY >> output.txt
|
||||
|
||||
- name: Show result
|
||||
run: |
|
||||
cat output.txt
|
||||
|
||||
- name: Save output as artifact
|
||||
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
|
||||
with:
|
||||
name: ${{ matrix.runtime }}
|
||||
path: |
|
||||
output.txt
|
||||
|
||||
- name: Stop our local nodes
|
||||
run: |
|
||||
pkill $BIN_REF || true
|
||||
pkill $BIN_BASE || true
|
||||
@@ -1,311 +0,0 @@
|
||||
name: Release - Create draft
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
ref1:
|
||||
description: The 'from' tag to use for the diff
|
||||
default: parachains-v9.0.0
|
||||
required: true
|
||||
ref2:
|
||||
description: The 'to' tag to use for the diff
|
||||
default: release-parachains-v10.0.0
|
||||
required: true
|
||||
release_type:
|
||||
description: Pass "client" for client releases, leave empty otherwise
|
||||
required: false
|
||||
pre_release:
|
||||
description: For pre-releases
|
||||
default: "true"
|
||||
required: true
|
||||
notification:
|
||||
description: Whether or not to notify over Matrix
|
||||
default: "true"
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
get-rust-versions:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: paritytech/ci-linux:production
|
||||
outputs:
|
||||
rustc-stable: ${{ steps.get-rust-versions.outputs.stable }}
|
||||
rustc-nightly: ${{ steps.get-rust-versions.outputs.nightly }}
|
||||
steps:
|
||||
- id: get-rust-versions
|
||||
run: |
|
||||
echo "stable=$(rustc +stable --version)" >> $GITHUB_OUTPUT
|
||||
echo "nightly=$(rustc +nightly --version)" >> $GITHUB_OUTPUT
|
||||
|
||||
# We do not skip the entire job for client builds (although we don't need it)
|
||||
# because it is a dep of the next job. However we skip the time consuming steps.
|
||||
build-runtimes:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- category: assets
|
||||
runtime: asset-hub-kusama
|
||||
- category: assets
|
||||
runtime: asset-hub-polkadot
|
||||
- category: assets
|
||||
runtime: asset-hub-westend
|
||||
- category: bridge-hubs
|
||||
runtime: bridge-hub-polkadot
|
||||
- category: bridge-hubs
|
||||
runtime: bridge-hub-kusama
|
||||
- category: bridge-hubs
|
||||
runtime: bridge-hub-rococo
|
||||
- category: collectives
|
||||
runtime: collectives-polkadot
|
||||
- category: contracts
|
||||
runtime: contracts-rococo
|
||||
- category: starters
|
||||
runtime: seedling
|
||||
- category: starters
|
||||
runtime: shell
|
||||
- category: testing
|
||||
runtime: rococo-parachain
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
|
||||
with:
|
||||
ref: ${{ github.event.inputs.ref2 }}
|
||||
|
||||
- name: Cache target dir
|
||||
if: ${{ github.event.inputs.release_type != 'client' }}
|
||||
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
|
||||
with:
|
||||
path: "${{ github.workspace }}/runtime/${{ matrix.runtime }}/target"
|
||||
key: srtool-target-${{ matrix.runtime }}-${{ github.sha }}
|
||||
restore-keys: |
|
||||
srtool-target-${{ matrix.runtime }}-
|
||||
srtool-target-
|
||||
|
||||
- name: Build ${{ matrix.runtime }} runtime
|
||||
if: ${{ github.event.inputs.release_type != 'client' }}
|
||||
id: srtool_build
|
||||
uses: chevdor/srtool-actions@v0.7.0
|
||||
with:
|
||||
image: paritytech/srtool
|
||||
chain: ${{ matrix.runtime }}
|
||||
runtime_dir: parachains/runtimes/${{ matrix.category }}/${{ matrix.runtime }}
|
||||
|
||||
- name: Store srtool digest to disk
|
||||
if: ${{ github.event.inputs.release_type != 'client' }}
|
||||
run: |
|
||||
echo '${{ steps.srtool_build.outputs.json }}' | \
|
||||
jq > ${{ matrix.runtime }}-srtool-digest.json
|
||||
|
||||
- name: Upload ${{ matrix.runtime }} srtool json
|
||||
if: ${{ github.event.inputs.release_type != 'client' }}
|
||||
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
|
||||
with:
|
||||
name: ${{ matrix.runtime }}-srtool-json
|
||||
path: ${{ matrix.runtime }}-srtool-digest.json
|
||||
|
||||
- name: Upload ${{ matrix.runtime }} runtime
|
||||
if: ${{ github.event.inputs.release_type != 'client' }}
|
||||
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
|
||||
with:
|
||||
name: ${{ matrix.runtime }}-runtime
|
||||
path: |
|
||||
${{ steps.srtool_build.outputs.wasm_compressed }}
|
||||
|
||||
publish-draft-release:
|
||||
runs-on: ubuntu-latest
|
||||
needs: ["get-rust-versions", "build-runtimes"]
|
||||
outputs:
|
||||
release_url: ${{ steps.create-release.outputs.html_url }}
|
||||
asset_upload_url: ${{ steps.create-release.outputs.upload_url }}
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
path: cumulus
|
||||
ref: ${{ github.event.inputs.ref2 }}
|
||||
|
||||
- uses: ruby/setup-ruby@250fcd6a742febb1123a77a841497ccaa8b9e939 # v1.152.0
|
||||
with:
|
||||
ruby-version: 3.0.0
|
||||
|
||||
- name: Download srtool json output
|
||||
uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
|
||||
|
||||
- name: Prepare tooling
|
||||
run: |
|
||||
cd cumulus/scripts/ci/changelog
|
||||
gem install bundler changelogerator:0.9.1
|
||||
bundle install
|
||||
changelogerator --help
|
||||
|
||||
URL=https://github.com/chevdor/tera-cli/releases/download/v0.2.1/tera-cli_linux_amd64.deb
|
||||
wget $URL -O tera.deb
|
||||
sudo dpkg -i tera.deb
|
||||
tera --version
|
||||
|
||||
- name: Generate release notes
|
||||
env:
|
||||
RUSTC_STABLE: ${{ needs.get-rust-versions.outputs.rustc-stable }}
|
||||
RUSTC_NIGHTLY: ${{ needs.get-rust-versions.outputs.rustc-nightly }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
NO_CACHE: 1
|
||||
DEBUG: 1
|
||||
SHELL_DIGEST: ${{ github.workspace}}/shell-srtool-json/shell-srtool-digest.json
|
||||
ASSET_HUB_WESTEND_DIGEST: ${{ github.workspace}}/asset-hub-westend-srtool-json/asset-hub-westend-srtool-digest.json
|
||||
ASSET_HUB_KUSAMA_DIGEST: ${{ github.workspace}}/asset-hub-kusama-srtool-json/asset-hub-kusama-srtool-digest.json
|
||||
ASSET_HUB_POLKADOT_DIGEST: ${{ github.workspace}}/asset-hub-polkadot-srtool-json/asset-hub-polkadot-srtool-digest.json
|
||||
BRIDGE_HUB_ROCOCO_DIGEST: ${{ github.workspace}}/bridge-hub-rococo-srtool-json/bridge-hub-rococo-srtool-digest.json
|
||||
BRIDGE_HUB_KUSAMA_DIGEST: ${{ github.workspace}}/bridge-hub-kusama-srtool-json/bridge-hub-kusama-srtool-digest.json
|
||||
BRIDGE_HUB_POLKADOT_DIGEST: ${{ github.workspace}}/bridge-hub-polkadot-srtool-json/bridge-hub-polkadot-srtool-digest.json
|
||||
COLLECTIVES_POLKADOT_DIGEST: ${{ github.workspace}}/collectives-polkadot-srtool-json/collectives-polkadot-srtool-digest.json
|
||||
ROCOCO_PARA_DIGEST: ${{ github.workspace}}/rococo-parachain-srtool-json/rococo-parachain-srtool-digest.json
|
||||
CANVAS_KUSAMA_DIGEST: ${{ github.workspace}}/contracts-rococo-srtool-json/contracts-rococo-srtool-digest.json
|
||||
REF1: ${{ github.event.inputs.ref1 }}
|
||||
REF2: ${{ github.event.inputs.ref2 }}
|
||||
PRE_RELEASE: ${{ github.event.inputs.pre_release }}
|
||||
RELEASE_TYPE: ${{ github.event.inputs.release_type }}
|
||||
run: |
|
||||
find ${{env.GITHUB_WORKSPACE}} -type f -name "*-srtool-digest.json"
|
||||
|
||||
if [ "$RELEASE_TYPE" != "client" ]; then
|
||||
ls -al $SHELL_DIGEST || true
|
||||
ls -al $ASSET_HUB_WESTEND_DIGEST || true
|
||||
ls -al $ASSET_HUB_KUSAMA_DIGEST || true
|
||||
ls -al $ASSET_HUB_POLKADOT_DIGEST || true
|
||||
ls -al $BRIDGE_HUB_ROCOCO_DIGEST || true
|
||||
ls -al $BRIDGE_HUB_KUSAMA_DIGEST || true
|
||||
ls -al $BRIDGE_HUB_POLKADOT_DIGEST || true
|
||||
ls -al $COLLECTIVES_POLKADOT_DIGEST || true
|
||||
ls -al $ROCOCO_PARA_DIGEST || true
|
||||
ls -al $CANVAS_KUSAMA_DIGEST || true
|
||||
fi
|
||||
|
||||
echo "The diff will be computed from $REF1 to $REF2"
|
||||
cd cumulus/scripts/ci/changelog
|
||||
./bin/changelog $REF1 $REF2 release-notes.md
|
||||
ls -al {release-notes.md,context.json} || true
|
||||
|
||||
- name: Archive srtool json
|
||||
if: ${{ github.event.inputs.release_type != 'client' }}
|
||||
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
|
||||
with:
|
||||
name: srtool-json
|
||||
path: |
|
||||
**/*-srtool-digest.json
|
||||
|
||||
- name: Archive context artifact
|
||||
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
|
||||
with:
|
||||
name: release-notes-context
|
||||
path: |
|
||||
cumulus/scripts/ci/changelog/context.json
|
||||
|
||||
- name: Create draft release
|
||||
id: create-release
|
||||
uses: actions/create-release@0cb9c9b65d5d1901c1f53e5e66eaf4afd303e70e # v1.1.4
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
body_path: ./cumulus/scripts/ci/changelog/release-notes.md
|
||||
tag_name: ${{ github.event.inputs.ref2 }}
|
||||
release_name: ${{ github.event.inputs.ref2 }}
|
||||
draft: true
|
||||
|
||||
publish-runtimes:
|
||||
if: ${{ github.event.inputs.release_type != 'client' }}
|
||||
runs-on: ubuntu-latest
|
||||
needs: ["publish-draft-release"]
|
||||
env:
|
||||
RUNTIME_DIR: parachains/runtimes
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- category: assets
|
||||
runtime: asset-hub-kusama
|
||||
- category: assets
|
||||
runtime: asset-hub-polkadot
|
||||
- category: assets
|
||||
runtime: asset-hub-westend
|
||||
- category: bridge-hubs
|
||||
runtime: bridge-hub-polkadot
|
||||
- category: bridge-hubs
|
||||
runtime: bridge-hub-kusama
|
||||
- category: bridge-hubs
|
||||
runtime: bridge-hub-rococo
|
||||
- category: collectives
|
||||
runtime: collectives-polkadot
|
||||
- category: contracts
|
||||
runtime: contracts-rococo
|
||||
- category: starters
|
||||
runtime: seedling
|
||||
- category: starters
|
||||
runtime: shell
|
||||
- category: testing
|
||||
runtime: rococo-parachain
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
|
||||
with:
|
||||
ref: ${{ github.event.inputs.ref2 }}
|
||||
|
||||
- name: Download artifacts
|
||||
uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
|
||||
|
||||
- uses: ruby/setup-ruby@250fcd6a742febb1123a77a841497ccaa8b9e939 # v1.152.0
|
||||
with:
|
||||
ruby-version: 3.0.0
|
||||
|
||||
- name: Get runtime version for ${{ matrix.runtime }}
|
||||
id: get-runtime-ver
|
||||
run: |
|
||||
echo "require './scripts/ci/github/runtime-version.rb'" > script.rb
|
||||
echo "puts get_runtime(runtime: \"${{ matrix.runtime }}\", runtime_dir: \"$RUNTIME_DIR/${{ matrix.category }}\")" >> script.rb
|
||||
|
||||
echo "Current folder: $PWD"
|
||||
ls "$RUNTIME_DIR/${{ matrix.category }}/${{ matrix.runtime }}"
|
||||
runtime_ver=$(ruby script.rb)
|
||||
echo "Found version: >$runtime_ver<"
|
||||
echo "runtime_ver=$runtime_ver" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Fix runtime name
|
||||
id: fix-runtime-path
|
||||
run: |
|
||||
cd "${{ matrix.runtime }}-runtime/"
|
||||
mv "$(sed -E 's/- */_/g' <<< ${{ matrix.runtime }})_runtime.compact.compressed.wasm" "${{ matrix.runtime }}_runtime.compact.compressed.wasm" || true
|
||||
|
||||
- name: Upload compressed ${{ matrix.runtime }} wasm
|
||||
uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 # v1.0.2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ needs.publish-draft-release.outputs.asset_upload_url }}
|
||||
asset_path: "${{ matrix.runtime }}-runtime/${{ matrix.runtime }}_runtime.compact.compressed.wasm"
|
||||
asset_name: ${{ matrix.runtime }}_runtime-v${{ steps.get-runtime-ver.outputs.runtime_ver }}.compact.compressed.wasm
|
||||
asset_content_type: application/wasm
|
||||
|
||||
post_to_matrix:
|
||||
if: ${{ github.event.inputs.notification == 'true' }}
|
||||
runs-on: ubuntu-latest
|
||||
needs: publish-draft-release
|
||||
strategy:
|
||||
matrix:
|
||||
channel:
|
||||
- name: 'RelEng: Cumulus Release Coordination'
|
||||
room: '!NAEMyPAHWOiOQHsvus:parity.io'
|
||||
pre-releases: true
|
||||
steps:
|
||||
- name: Matrix notification to ${{ matrix.channel.name }}
|
||||
uses: s3krit/matrix-message-action@70ad3fb812ee0e45ff8999d6af11cafad11a6ecf # v0.0.3
|
||||
with:
|
||||
room_id: ${{ matrix.channel.room }}
|
||||
access_token: ${{ secrets.RELEASENOTES_MATRIX_V2_ACCESS_TOKEN }}
|
||||
server: "m.parity.io"
|
||||
message: |
|
||||
**New draft for ${{ github.repository }}**: ${{ github.event.inputs.ref2 }}<br/>
|
||||
|
||||
Draft release created: [draft](${{ needs.publish-draft-release.outputs.release_url }})
|
||||
|
||||
NOTE: The link above will no longer be valid if the draft is edited. You can then use the following link:
|
||||
[${{ github.server_url }}/${{ github.repository }}/releases](${{ github.server_url }}/${{ github.repository }}/releases)
|
||||
@@ -1,39 +0,0 @@
|
||||
name: Release - Pushes release notes to a Matrix room
|
||||
on:
|
||||
release:
|
||||
types:
|
||||
- published
|
||||
|
||||
jobs:
|
||||
ping_matrix:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
channel:
|
||||
- name: 'RelEng: Cumulus Release Coordination'
|
||||
room: '!NAEMyPAHWOiOQHsvus:parity.io'
|
||||
pre-releases: true
|
||||
- name: 'Ledger <> Polkadot Coordination'
|
||||
room: '!EoIhaKfGPmFOBrNSHT:web3.foundation'
|
||||
pre-release: true
|
||||
- name: 'General: Rust, Polkadot, Substrate'
|
||||
room: '!aJymqQYtCjjqImFLSb:parity.io'
|
||||
pre-release: false
|
||||
- name: 'Team: DevOps'
|
||||
room: '!lUslSijLMgNcEKcAiE:parity.io'
|
||||
pre-release: true
|
||||
|
||||
steps:
|
||||
- name: Matrix notification to ${{ matrix.channel.name }}
|
||||
uses: s3krit/matrix-message-action@70ad3fb812ee0e45ff8999d6af11cafad11a6ecf # v0.0.3
|
||||
with:
|
||||
room_id: ${{ matrix.channel.room }}
|
||||
access_token: ${{ secrets.RELEASENOTES_MATRIX_V2_ACCESS_TOKEN }}
|
||||
server: "m.parity.io"
|
||||
message: |
|
||||
A (pre)release has been ${{github.event.action}} in **${{github.event.repository.full_name}}:**<br/>
|
||||
Release version: [${{github.event.release.tag_name}}](${{github.event.release.html_url}})
|
||||
|
||||
-----
|
||||
|
||||
${{github.event.release.body}}
|
||||
Vendored
-122
@@ -1,122 +0,0 @@
|
||||
name: Srtool build
|
||||
|
||||
env:
|
||||
SUBWASM_VERSION: 0.20.0
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "*"
|
||||
|
||||
# paths-ignore:
|
||||
# - "docker"
|
||||
# - "docs"
|
||||
# - "scripts"
|
||||
# - "test"
|
||||
# - "client"
|
||||
paths:
|
||||
- parachains/runtimes/**/*
|
||||
|
||||
branches:
|
||||
- "release*"
|
||||
|
||||
schedule:
|
||||
- cron: "00 02 * * 1" # 2AM weekly on monday
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
srtool:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- category: assets
|
||||
runtime: asset-hub-kusama
|
||||
- category: assets
|
||||
runtime: asset-hub-polkadot
|
||||
- category: assets
|
||||
runtime: asset-hub-westend
|
||||
- category: bridge-hubs
|
||||
runtime: bridge-hub-polkadot
|
||||
- category: bridge-hubs
|
||||
runtime: bridge-hub-kusama
|
||||
- category: bridge-hubs
|
||||
runtime: bridge-hub-rococo
|
||||
- category: collectives
|
||||
runtime: collectives-polkadot
|
||||
- category: contracts
|
||||
runtime: contracts-rococo
|
||||
- category: starters
|
||||
runtime: seedling
|
||||
- category: starters
|
||||
runtime: shell
|
||||
- category: testing
|
||||
runtime: rococo-parachain
|
||||
steps:
|
||||
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Srtool build
|
||||
id: srtool_build
|
||||
uses: chevdor/srtool-actions@v0.7.0
|
||||
with:
|
||||
chain: ${{ matrix.runtime }}
|
||||
runtime_dir: parachains/runtimes/${{ matrix.category }}/${{ matrix.runtime }}
|
||||
|
||||
- name: Summary
|
||||
run: |
|
||||
echo '${{ steps.srtool_build.outputs.json }}' | jq > ${{ matrix.runtime }}-srtool-digest.json
|
||||
cat ${{ matrix.runtime }}-srtool-digest.json
|
||||
echo "Compact Runtime: ${{ steps.srtool_build.outputs.wasm }}"
|
||||
echo "Compressed Runtime: ${{ steps.srtool_build.outputs.wasm_compressed }}"
|
||||
|
||||
# it takes a while to build the runtime, so let's save the artifact as soon as we have it
|
||||
- name: Archive Artifacts for ${{ matrix.runtime }}
|
||||
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
|
||||
with:
|
||||
name: ${{ matrix.runtime }}-runtime
|
||||
path: |
|
||||
${{ steps.srtool_build.outputs.wasm }}
|
||||
${{ steps.srtool_build.outputs.wasm_compressed }}
|
||||
${{ matrix.runtime }}-srtool-digest.json
|
||||
|
||||
# We now get extra information thanks to subwasm
|
||||
- name: Install subwasm
|
||||
run: |
|
||||
wget https://github.com/chevdor/subwasm/releases/download/v${{ env.SUBWASM_VERSION }}/subwasm_linux_amd64_v${{ env.SUBWASM_VERSION }}.deb
|
||||
sudo dpkg -i subwasm_linux_amd64_v${{ env.SUBWASM_VERSION }}.deb
|
||||
subwasm --version
|
||||
|
||||
- name: Show Runtime information
|
||||
shell: bash
|
||||
run: |
|
||||
subwasm info ${{ steps.srtool_build.outputs.wasm }}
|
||||
subwasm info ${{ steps.srtool_build.outputs.wasm_compressed }}
|
||||
subwasm --json info ${{ steps.srtool_build.outputs.wasm }} > ${{ matrix.runtime }}-info.json
|
||||
subwasm --json info ${{ steps.srtool_build.outputs.wasm_compressed }} > ${{ matrix.runtime }}-compressed-info.json
|
||||
|
||||
- name: Extract the metadata
|
||||
shell: bash
|
||||
run: |
|
||||
subwasm meta ${{ steps.srtool_build.outputs.wasm }}
|
||||
subwasm --json meta ${{ steps.srtool_build.outputs.wasm }} > ${{ matrix.runtime }}-metadata.json
|
||||
|
||||
- name: Check the metadata diff
|
||||
shell: bash
|
||||
# the following subwasm call will error for chains that are not known and/or live, that includes shell for instance
|
||||
run: |
|
||||
subwasm diff ${{ steps.srtool_build.outputs.wasm }} --chain-b ${{ matrix.runtime }} || \
|
||||
echo "Subwasm call failed, check the logs. This is likely because ${{ matrix.runtime }} is not known by subwasm" | \
|
||||
tee ${{ matrix.runtime }}-diff.txt
|
||||
|
||||
- name: Archive Subwasm results
|
||||
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
|
||||
with:
|
||||
name: ${{ matrix.runtime }}-runtime
|
||||
path: |
|
||||
${{ matrix.runtime }}-info.json
|
||||
${{ matrix.runtime }}-compressed-info.json
|
||||
${{ matrix.runtime }}-metadata.json
|
||||
${{ matrix.runtime }}-diff.txt
|
||||
@@ -1,201 +0,0 @@
|
||||
# .gitlab-ci.yml
|
||||
#
|
||||
# cumulus
|
||||
#
|
||||
# pipelines can be triggered manually in the web
|
||||
|
||||
stages:
|
||||
- test
|
||||
- build
|
||||
# used for manual job run for regenerate weights for release-* branches (not needed anymore, just leave it here for a while as PlanB)
|
||||
- benchmarks-build
|
||||
# used for manual job run for regenerate weights for release-* branches (not needed anymore, just leave it here for a while as PlanB)
|
||||
- benchmarks-run
|
||||
- publish
|
||||
- integration-tests
|
||||
- zombienet
|
||||
- short-benchmarks
|
||||
|
||||
default:
|
||||
interruptible: true
|
||||
retry:
|
||||
max: 2
|
||||
when:
|
||||
- runner_system_failure
|
||||
- unknown_failure
|
||||
- api_failure
|
||||
|
||||
variables:
|
||||
GIT_STRATEGY: fetch
|
||||
GIT_DEPTH: 100
|
||||
CARGO_INCREMENTAL: 0
|
||||
CI_IMAGE: !reference [.ci-unified, variables, CI_IMAGE]
|
||||
DOCKER_OS: "debian:stretch"
|
||||
ARCH: "x86_64"
|
||||
ZOMBIENET_IMAGE: "docker.io/paritytech/zombienet:v1.3.55"
|
||||
BUILDAH_IMAGE: "quay.io/buildah/stable:v1.29"
|
||||
BUILDAH_COMMAND: "buildah --storage-driver overlay2"
|
||||
|
||||
.common-before-script:
|
||||
before_script:
|
||||
- !reference [.job-switcher, before_script]
|
||||
- !reference [.timestamp, before_script]
|
||||
|
||||
.collect-artifacts:
|
||||
artifacts:
|
||||
name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
|
||||
when: on_success
|
||||
expire_in: 1 days
|
||||
paths:
|
||||
- ./artifacts/
|
||||
|
||||
# collecting vars for pipeline stopper
|
||||
# they will be used if the job fails
|
||||
.pipeline-stopper-vars:
|
||||
before_script:
|
||||
- echo "FAILED_JOB_URL=${CI_JOB_URL}" > pipeline-stopper.env
|
||||
- echo "FAILED_JOB_NAME=${CI_JOB_NAME}" >> pipeline-stopper.env
|
||||
- echo "FAILED_JOB_NAME=${CI_JOB_NAME}" >> pipeline-stopper.env
|
||||
- echo "PR_NUM=${CI_COMMIT_REF_NAME}" >> pipeline-stopper.env
|
||||
|
||||
.pipeline-stopper-artifacts:
|
||||
artifacts:
|
||||
reports:
|
||||
dotenv: pipeline-stopper.env
|
||||
|
||||
.common-refs:
|
||||
# these jobs run always*
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "schedule"
|
||||
- if: $CI_COMMIT_REF_NAME == "master"
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^release-parachains-v[0-9].*$/ # i.e. release-parachains-v1.0, release-parachains-v2.1rc1, release-parachains-v3000
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^polkadot-v[0-9]+\.[0-9]+.*$/ # i.e. polkadot-v1.0.99, polkadot-v2.1rc1
|
||||
|
||||
.pr-refs:
|
||||
# these jobs run always*
|
||||
rules:
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
|
||||
|
||||
.publish-refs:
|
||||
rules:
|
||||
- if: $CI_COMMIT_REF_NAME == "master"
|
||||
- if: $CI_PIPELINE_SOURCE == "schedule"
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1
|
||||
|
||||
# run benchmarks manually only on release-parachains-v* branch
|
||||
.benchmarks-manual-refs:
|
||||
rules:
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^release-parachains-v[0-9].*$/ # i.e. release-parachains-v1.0, release-parachains-v2.1rc1, release-parachains-v3000
|
||||
when: manual
|
||||
|
||||
# run benchmarks only on release-parachains-v* branch
|
||||
.benchmarks-refs:
|
||||
rules:
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^release-parachains-v[0-9].*$/ # i.e. release-parachains-v1.0, release-parachains-v2.1rc1, release-parachains-v3000
|
||||
|
||||
.zombienet-refs:
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "pipeline"
|
||||
when: never
|
||||
- if: $CI_PIPELINE_SOURCE == "schedule"
|
||||
when: never
|
||||
- if: $CI_COMMIT_REF_NAME == "master"
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
|
||||
|
||||
.job-switcher:
|
||||
before_script:
|
||||
- if echo "$CI_DISABLED_JOBS" | grep -xF "$CI_JOB_NAME"; then echo "The job has been cancelled in CI settings"; exit 0; fi
|
||||
|
||||
.docker-env:
|
||||
image: "${CI_IMAGE}"
|
||||
before_script:
|
||||
- !reference [.common-before-script, before_script]
|
||||
- rustup show
|
||||
- cargo --version
|
||||
- bash --version
|
||||
tags:
|
||||
- linux-docker-vm-c2
|
||||
|
||||
.kubernetes-env:
|
||||
image: "${CI_IMAGE}"
|
||||
before_script:
|
||||
- !reference [.common-before-script, before_script]
|
||||
tags:
|
||||
- kubernetes-parity-build
|
||||
|
||||
.git-commit-push:
|
||||
script:
|
||||
- git status
|
||||
# Set git config
|
||||
- rm -rf .git/config
|
||||
- git config --global user.email "${GITHUB_EMAIL}"
|
||||
- git config --global user.name "${GITHUB_USER}"
|
||||
- git config remote.origin.url "https://${GITHUB_USER}:${GITHUB_TOKEN}@github.com/paritytech/${CI_PROJECT_NAME}.git"
|
||||
- git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
|
||||
# push results to github
|
||||
- git checkout -b $BRANCHNAME
|
||||
- git add parachains/*
|
||||
- git commit -m "[benchmarks] pr with weights"
|
||||
- git push origin $BRANCHNAME
|
||||
|
||||
include:
|
||||
# test jobs
|
||||
- scripts/ci/gitlab/pipeline/test.yml
|
||||
# # build jobs
|
||||
- scripts/ci/gitlab/pipeline/build.yml
|
||||
# short-benchmarks jobs
|
||||
- scripts/ci/gitlab/pipeline/short-benchmarks.yml
|
||||
# # benchmarks jobs
|
||||
# # used for manual job run for regenerate weights for release-* branches (not needed anymore, just leave it here for a while as PlanB)
|
||||
- scripts/ci/gitlab/pipeline/benchmarks.yml
|
||||
# # publish jobs
|
||||
- scripts/ci/gitlab/pipeline/publish.yml
|
||||
# zombienet jobs
|
||||
- scripts/ci/gitlab/pipeline/zombienet.yml
|
||||
# timestamp handler
|
||||
- project: parity/infrastructure/ci_cd/shared
|
||||
ref: main
|
||||
file: /common/timestamp.yml
|
||||
- project: parity/infrastructure/ci_cd/shared
|
||||
ref: main
|
||||
file: /common/ci-unified.yml
|
||||
|
||||
|
||||
#### stage: .post
|
||||
|
||||
# This job cancels the whole pipeline if any of provided jobs fail.
|
||||
# In a DAG, every jobs chain is executed independently of others. The `fail_fast` principle suggests
|
||||
# to fail the pipeline as soon as possible to shorten the feedback loop.
|
||||
cancel-pipeline:
|
||||
stage: .post
|
||||
needs:
|
||||
- job: test-linux-stable
|
||||
rules:
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
|
||||
when: on_failure
|
||||
variables:
|
||||
PROJECT_ID: "${CI_PROJECT_ID}"
|
||||
PROJECT_NAME: "${CI_PROJECT_NAME}"
|
||||
PIPELINE_ID: "${CI_PIPELINE_ID}"
|
||||
FAILED_JOB_URL: "${FAILED_JOB_URL}"
|
||||
FAILED_JOB_NAME: "${FAILED_JOB_NAME}"
|
||||
PR_NUM: "${PR_NUM}"
|
||||
trigger:
|
||||
project: "parity/infrastructure/ci_cd/pipeline-stopper"
|
||||
branch: "as-improve"
|
||||
|
||||
remove-cancel-pipeline-message:
|
||||
stage: .post
|
||||
rules:
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
|
||||
variables:
|
||||
PROJECT_ID: "${CI_PROJECT_ID}"
|
||||
PROJECT_NAME: "${CI_PROJECT_NAME}"
|
||||
PIPELINE_ID: "${CI_PIPELINE_ID}"
|
||||
FAILED_JOB_URL: "https://gitlab.com"
|
||||
FAILED_JOB_NAME: "nope"
|
||||
PR_NUM: "${CI_COMMIT_REF_NAME}"
|
||||
trigger:
|
||||
project: "parity/infrastructure/ci_cd/pipeline-stopper"
|
||||
@@ -1,77 +0,0 @@
|
||||
# Changelog
|
||||
|
||||
Currently, the changelog is built locally. It will be moved to CI once labels stabilize.
|
||||
|
||||
For now, a bit of preparation is required before you can run the script:
|
||||
- fetch the srtool digests
|
||||
- store them under the `digests` folder as `<chain>-srtool-digest.json`
|
||||
- ensure the `.env` file is up to date with correct information
|
||||
|
||||
The content of the release notes is generated from the template files under the `scripts/ci/changelog/templates` folder.
|
||||
For readability and maintenance, the template is split into several small snippets.
|
||||
|
||||
Run:
|
||||
```
|
||||
./bin/changelog <ref_since> [<ref_until>=HEAD]
|
||||
```
|
||||
|
||||
For instance:
|
||||
```
|
||||
./bin/changelog parachains-v7.0.0-rc8
|
||||
```
|
||||
|
||||
A file called `release-notes.md` will be generated and can be used for the release.
|
||||
|
||||
## ENV
|
||||
|
||||
You may use the following ENV for testing:
|
||||
|
||||
```
|
||||
RUSTC_STABLE="rustc 1.56.1 (59eed8a2a 2021-11-01)"
|
||||
RUSTC_NIGHTLY="rustc 1.57.0-nightly (51e514c0f 2021-09-12)"
|
||||
PRE_RELEASE=true
|
||||
HIDE_SRTOOL_ROCOCO=true
|
||||
HIDE_SRTOOL_SHELL=true
|
||||
REF1=statemine-v5.0.0
|
||||
REF2=HEAD
|
||||
DEBUG=1
|
||||
NO_CACHE=1
|
||||
```
|
||||
|
||||
By default, the template will include all the information, including the runtime data. For clients releases, we don't
|
||||
need those and they can be skipped by setting the following env:
|
||||
```
|
||||
RELEASE_TYPE=client
|
||||
```
|
||||
|
||||
## Considered labels
|
||||
|
||||
The following list will likely evolve over time and it will be hard to keep it in sync. In any case, if you want to find
|
||||
all the labels that are used, search for `meta` in the templates. Currently, the considered labels are:
|
||||
|
||||
- Priority: C<N> labels
|
||||
- Audit: D<N> labels
|
||||
- E4 => new host function
|
||||
- B0 => silent, not showing up
|
||||
- B1-releasenotes (misc unless other labels)
|
||||
- B5-client (client changes)
|
||||
- B7-runtimenoteworthy (runtime changes)
|
||||
- T6-XCM
|
||||
|
||||
Note that labels with the same letter are mutually exclusive. A PR should not have both `B0` and `B5`, or both `C1` and
|
||||
`C9`. In case of conflicts, the template will decide which label will be considered.
|
||||
|
||||
## Dev and debugging
|
||||
|
||||
### Hot Reload
|
||||
|
||||
The following command allows **Hot Reload**:
|
||||
```
|
||||
fswatch templates -e ".*\.md$" | xargs -n1 -I{} ./bin/changelog statemine-v5.0.0
|
||||
```
|
||||
### Caching
|
||||
|
||||
By default, if the changelog data from Github is already present, the calls to the Github API will be skipped and the
|
||||
local version of the data will be used. This is much faster. If you know that some labels have changed in Github, you
|
||||
probably want to refresh the data. You can then either delete manually the `cumulus.json` file or `export NO_CACHE=1` to
|
||||
force refreshing the data.
|
||||
@@ -1,2 +0,0 @@
|
||||
/.gitlab-ci.yml filter=ci-prettier
|
||||
/scripts/ci/gitlab/pipeline/*.yml filter=ci-prettier
|
||||
Vendored
-26
@@ -1,26 +0,0 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "cargo"
|
||||
directory: "/"
|
||||
labels: ["A2-insubstantial", "B0-silent", "C1-low", "E2-dependencies"]
|
||||
# Handle updates for crates from github.com/paritytech/substrate manually.
|
||||
ignore:
|
||||
- dependency-name: "substrate-*"
|
||||
- dependency-name: "sc-*"
|
||||
- dependency-name: "sp-*"
|
||||
- dependency-name: "frame-*"
|
||||
- dependency-name: "fork-tree"
|
||||
- dependency-name: "frame-remote-externalities"
|
||||
- dependency-name: "pallet-*"
|
||||
- dependency-name: "beefy-*"
|
||||
- dependency-name: "try-runtime-*"
|
||||
- dependency-name: "test-runner"
|
||||
- dependency-name: "generate-bags"
|
||||
- dependency-name: "sub-tokens"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
- package-ecosystem: github-actions
|
||||
directory: '/'
|
||||
labels: ["A2-insubstantial", "B0-silent", "C1-low", "E2-dependencies"]
|
||||
schedule:
|
||||
interval: daily
|
||||
-42
@@ -1,42 +0,0 @@
|
||||
# 🔒 PROTECTED: Changes to locks-review-team should be approved by the current locks-review-team
|
||||
locks-review-team: locks-review
|
||||
team-leads-team: polkadot-review
|
||||
action-review-team: ci
|
||||
|
||||
rules:
|
||||
- name: Runtime files
|
||||
check_type: changed_files
|
||||
condition:
|
||||
include: ^runtime\/(kusama|polkadot)\/src\/.+\.rs$
|
||||
exclude: ^runtime\/(kusama|polkadot)\/src\/weights\/.+\.rs$
|
||||
all_distinct:
|
||||
- min_approvals: 1
|
||||
teams:
|
||||
- locks-review
|
||||
- min_approvals: 1
|
||||
teams:
|
||||
- polkadot-review
|
||||
|
||||
- name: Core developers
|
||||
check_type: changed_files
|
||||
condition:
|
||||
include: .*
|
||||
# excluding files from 'Runtime files' and 'CI files' rules
|
||||
exclude: ^runtime/(kusama|polkadot)/src/[^/]+\.rs$|^\.gitlab-ci\.yml|^(?!.*\.dic$|.*spellcheck\.toml$)scripts/ci/.*|^\.github/.*
|
||||
min_approvals: 3
|
||||
teams:
|
||||
- core-devs
|
||||
|
||||
- name: CI files
|
||||
check_type: changed_files
|
||||
condition:
|
||||
# dictionary files are excluded
|
||||
include: ^\.gitlab-ci\.yml|^(?!.*\.dic$|.*spellcheck\.toml$)scripts/ci/.*|^\.github/.*
|
||||
min_approvals: 2
|
||||
teams:
|
||||
- ci
|
||||
- release-engineering
|
||||
|
||||
prevent-review-request:
|
||||
teams:
|
||||
- core-devs
|
||||
@@ -1,24 +0,0 @@
|
||||
name: Notify devops when burn-in label applied
|
||||
on:
|
||||
pull_request:
|
||||
types: [labeled]
|
||||
|
||||
jobs:
|
||||
notify-devops:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
channel:
|
||||
- name: 'Team: DevOps'
|
||||
room: '!lUslSijLMgNcEKcAiE:parity.io'
|
||||
|
||||
steps:
|
||||
- name: Send Matrix message to ${{ matrix.channel.name }}
|
||||
if: startsWith(github.event.label.name, 'A1-')
|
||||
uses: s3krit/matrix-message-action@70ad3fb812ee0e45ff8999d6af11cafad11a6ecf # v0.0.3
|
||||
with:
|
||||
room_id: ${{ matrix.channel.room }}
|
||||
access_token: ${{ secrets.RELEASENOTES_MATRIX_V2_ACCESS_TOKEN }}
|
||||
server: m.parity.io
|
||||
message: |
|
||||
@room Burn-in request received for the following PR: ${{ github.event.pull_request.html_url }}
|
||||
-50
@@ -1,50 +0,0 @@
|
||||
name: Check D labels
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [labeled, opened, synchronize, unlabeled]
|
||||
paths:
|
||||
- runtime/polkadot/**
|
||||
- runtime/kusama/**
|
||||
- runtime/common/**
|
||||
- primitives/src/**
|
||||
|
||||
jobs:
|
||||
check-labels:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Pull image
|
||||
env:
|
||||
IMAGE: paritytech/ruled_labels:0.4.0
|
||||
run: docker pull $IMAGE
|
||||
|
||||
- name: Check labels
|
||||
env:
|
||||
IMAGE: paritytech/ruled_labels:0.4.0
|
||||
MOUNT: /work
|
||||
GITHUB_PR: ${{ github.event.pull_request.number }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
API_BASE: https://api.github.com/repos
|
||||
REPO: ${{ github.repository }}
|
||||
RULES_PATH: labels/ruled_labels
|
||||
CHECK_SPECS: specs_polkadot.yaml
|
||||
run: |
|
||||
echo "REPO: ${REPO}"
|
||||
echo "GITHUB_PR: ${GITHUB_PR}"
|
||||
# Clone repo with labels specs
|
||||
git clone https://github.com/paritytech/labels
|
||||
# Fetch the labels for the PR under test
|
||||
labels=$( curl -H "Authorization: token ${GITHUB_TOKEN}" -s "$API_BASE/${REPO}/pulls/${GITHUB_PR}" | jq '.labels | .[] | .name' | tr "\n" ",")
|
||||
|
||||
if [ -z "${labels}" ]; then
|
||||
docker run --rm -i -v $PWD/${RULES_PATH}/:$MOUNT $IMAGE check $MOUNT/$CHECK_SPECS --tags audit --no-label
|
||||
fi
|
||||
|
||||
labels_args=${labels: :-1}
|
||||
printf "Checking labels: %s\n" "${labels_args}"
|
||||
|
||||
# Prevent the shell from splitting labels with spaces
|
||||
IFS=","
|
||||
|
||||
# --dev is more useful to debug mode to debug
|
||||
docker run --rm -i -v $PWD/${RULES_PATH}/:$MOUNT $IMAGE check $MOUNT/$CHECK_SPECS --labels ${labels_args} --dev --tags audit
|
||||
-31
@@ -1,31 +0,0 @@
|
||||
# checks all networks we care about (kusama, polkadot, westend) and ensures
|
||||
# the bootnodes in their respective chainspecs are contactable
|
||||
|
||||
name: Check all bootnodes
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
# Catches v1.2.3 and v1.2.3-rc1
|
||||
- release-v[0-9]+.[0-9]+.[0-9]+*
|
||||
|
||||
jobs:
|
||||
check_bootnodes:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
runtime: [westend, kusama, polkadot]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v3
|
||||
- name: Install polkadot
|
||||
shell: bash
|
||||
run: |
|
||||
curl -L "$(curl -s https://api.github.com/repos/paritytech/polkadot/releases/latest \
|
||||
| jq -r '.assets | .[] | select(.name == "polkadot").browser_download_url')" \
|
||||
| sudo tee /usr/local/bin/polkadot > /dev/null
|
||||
sudo chmod +x /usr/local/bin/polkadot
|
||||
polkadot --version
|
||||
- name: Check ${{ matrix.runtime }} bootnodes
|
||||
shell: bash
|
||||
run: scripts/ci/github/check_bootnodes.sh node/service/chain-specs/${{ matrix.runtime }}.json
|
||||
-45
@@ -1,45 +0,0 @@
|
||||
name: Check labels
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [labeled, opened, synchronize, unlabeled]
|
||||
|
||||
jobs:
|
||||
check-labels:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Pull image
|
||||
env:
|
||||
IMAGE: paritytech/ruled_labels:0.4.0
|
||||
run: docker pull $IMAGE
|
||||
|
||||
- name: Check labels
|
||||
env:
|
||||
IMAGE: paritytech/ruled_labels:0.4.0
|
||||
MOUNT: /work
|
||||
GITHUB_PR: ${{ github.event.pull_request.number }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
API_BASE: https://api.github.com/repos
|
||||
REPO: ${{ github.repository }}
|
||||
RULES_PATH: labels/ruled_labels
|
||||
CHECK_SPECS: specs_polkadot.yaml
|
||||
run: |
|
||||
echo "REPO: ${REPO}"
|
||||
echo "GITHUB_PR: ${GITHUB_PR}"
|
||||
# Clone repo with labels specs
|
||||
git clone https://github.com/paritytech/labels
|
||||
# Fetch the labels for the PR under test
|
||||
labels=$( curl -H "Authorization: token ${GITHUB_TOKEN}" -s "$API_BASE/${REPO}/pulls/${GITHUB_PR}" | jq '.labels | .[] | .name' | tr "\n" ",")
|
||||
|
||||
if [ -z "${labels}" ]; then
|
||||
docker run --rm -i -v $PWD/${RULES_PATH}/:$MOUNT $IMAGE check $MOUNT/$CHECK_SPECS --tags PR --no-label
|
||||
fi
|
||||
|
||||
labels_args=${labels: :-1}
|
||||
printf "Checking labels: %s\n" "${labels_args}"
|
||||
|
||||
# Prevent the shell from splitting labels with spaces
|
||||
IFS=","
|
||||
|
||||
# --dev is more useful to debug mode to debug
|
||||
docker run --rm -i -v $PWD/${RULES_PATH}/:$MOUNT $IMAGE check $MOUNT/$CHECK_SPECS --labels ${labels_args} --dev --tags PR
|
||||
-26
@@ -1,26 +0,0 @@
|
||||
name: Check licenses
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
check-licenses:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3.8.1
|
||||
with:
|
||||
node-version: '18.x'
|
||||
registry-url: 'https://npm.pkg.github.com'
|
||||
scope: '@paritytech'
|
||||
- name: Check the licenses
|
||||
run: |
|
||||
shopt -s globstar
|
||||
|
||||
npx @paritytech/license-scanner@0.0.5 scan \
|
||||
--ensure-licenses=Apache-2.0 \
|
||||
--ensure-licenses=GPL-3.0-only \
|
||||
./**/*.rs
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -1,28 +0,0 @@
|
||||
# If a chainspec file is updated with new bootnodes, we check to make sure those bootnodes are contactable
|
||||
|
||||
name: Check new bootnodes
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'node/service/chain-specs/*.json'
|
||||
|
||||
jobs:
|
||||
check_bootnodes:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Install polkadot
|
||||
shell: bash
|
||||
run: |
|
||||
curl -L "$(curl -s https://api.github.com/repos/paritytech/polkadot/releases/latest \
|
||||
| jq -r '.assets | .[] | select(.name == "polkadot").browser_download_url')" \
|
||||
| sudo tee /usr/local/bin/polkadot > /dev/null
|
||||
sudo chmod +x /usr/local/bin/polkadot
|
||||
polkadot --version
|
||||
- name: Check new bootnodes
|
||||
shell: bash
|
||||
run: |
|
||||
scripts/ci/github/check_new_bootnodes.sh
|
||||
-49
@@ -1,49 +0,0 @@
|
||||
name: Check updated weights
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'runtime/*/src/weights/**'
|
||||
|
||||
jobs:
|
||||
check_weights_files:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
runtime: [westend, kusama, polkadot, rococo]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v3
|
||||
- name: Check weights files
|
||||
shell: bash
|
||||
run: |
|
||||
scripts/ci/github/verify_updated_weights.sh ${{ matrix.runtime }}
|
||||
|
||||
# This job uses https://github.com/ggwpez/substrate-weight-compare to compare the weights of the current
|
||||
# release with the last release, then adds them as a comment to the PR.
|
||||
check_weight_changes:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
runtime: [westend, kusama, polkadot, rococo]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Get latest release
|
||||
run: |
|
||||
LAST_RELEASE=$(curl -s https://api.github.com/repos/paritytech/polkadot/releases/latest | jq -r .tag_name)
|
||||
echo "LAST_RELEASE=$LAST_RELEASE" >> $GITHUB_ENV
|
||||
- name: Checkout current sources
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Check weight changes
|
||||
shell: bash
|
||||
run: |
|
||||
cargo install --git https://github.com/ggwpez/substrate-weight-compare swc
|
||||
./scripts/ci/github/check_weights_swc.sh ${{ matrix.runtime }} "$LAST_RELEASE" | tee swc_output_${{ matrix.runtime }}.md
|
||||
- name: Add comment
|
||||
uses: thollander/actions-comment-pull-request@v2
|
||||
with:
|
||||
filePath: ./swc_output_${{ matrix.runtime }}.md
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
-137
@@ -1,137 +0,0 @@
|
||||
name: Run nightly fuzzer jobs
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
|
||||
jobs:
|
||||
xcm-fuzzer:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Install minimal stable Rust
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
toolchain: stable
|
||||
override: true
|
||||
|
||||
- name: Install minimal nightly Rust
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
toolchain: nightly
|
||||
target: wasm32-unknown-unknown
|
||||
|
||||
- name: Install honggfuzz deps
|
||||
run: sudo apt-get install --no-install-recommends binutils-dev libunwind8-dev
|
||||
|
||||
- name: Install honggfuzz
|
||||
uses: actions-rs/cargo@v1
|
||||
with:
|
||||
command: install
|
||||
args: honggfuzz --version "0.5.54"
|
||||
|
||||
- name: Build fuzzer binaries
|
||||
working-directory: xcm/xcm-simulator/fuzzer/
|
||||
run: cargo hfuzz build
|
||||
|
||||
- name: Run fuzzer
|
||||
working-directory: xcm/xcm-simulator/fuzzer/
|
||||
run: bash $GITHUB_WORKSPACE/scripts/ci/github/run_fuzzer.sh xcm-fuzzer
|
||||
|
||||
erasure-coding-round-trip:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Cache Seed
|
||||
id: cache-seed-round-trip
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: erasure-coding/fuzzer/hfuzz_workspace
|
||||
key: ${{ runner.os }}-erasure-coding
|
||||
|
||||
- name: Install minimal stable Rust
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
toolchain: stable
|
||||
override: true
|
||||
|
||||
- name: Install minimal nightly Rust
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
toolchain: nightly
|
||||
target: wasm32-unknown-unknown
|
||||
|
||||
- name: Install honggfuzz deps
|
||||
run: sudo apt-get install --no-install-recommends binutils-dev libunwind8-dev
|
||||
|
||||
- name: Install honggfuzz
|
||||
uses: actions-rs/cargo@v1
|
||||
with:
|
||||
command: install
|
||||
args: honggfuzz --version "0.5.54"
|
||||
|
||||
- name: Build fuzzer binaries
|
||||
working-directory: erasure-coding/fuzzer
|
||||
run: cargo hfuzz build
|
||||
|
||||
- name: Run fuzzer
|
||||
working-directory: erasure-coding/fuzzer
|
||||
run: bash $GITHUB_WORKSPACE/scripts/ci/github/run_fuzzer.sh round_trip
|
||||
|
||||
erasure-coding-reconstruct:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Cache Seed
|
||||
id: cache-seed-reconstruct
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: erasure-coding/fuzzer/hfuzz_workspace
|
||||
key: ${{ runner.os }}-erasure-coding
|
||||
|
||||
- name: Install minimal stable Rust
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
toolchain: stable
|
||||
override: true
|
||||
|
||||
- name: Install minimal nightly Rust
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
toolchain: nightly
|
||||
target: wasm32-unknown-unknown
|
||||
|
||||
- name: Install honggfuzz deps
|
||||
run: sudo apt-get install --no-install-recommends binutils-dev libunwind8-dev
|
||||
|
||||
- name: Install honggfuzz
|
||||
uses: actions-rs/cargo@v1
|
||||
with:
|
||||
command: install
|
||||
args: honggfuzz --version "0.5.54"
|
||||
|
||||
- name: Build fuzzer binaries
|
||||
working-directory: erasure-coding/fuzzer
|
||||
run: cargo hfuzz build
|
||||
|
||||
- name: Run fuzzer
|
||||
working-directory: erasure-coding/fuzzer
|
||||
run: bash $GITHUB_WORKSPACE/scripts/ci/github/run_fuzzer.sh reconstruct
|
||||
-42
@@ -1,42 +0,0 @@
|
||||
name: Assign reviewers
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
types:
|
||||
- opened
|
||||
- reopened
|
||||
- synchronize
|
||||
- review_requested
|
||||
- review_request_removed
|
||||
- ready_for_review
|
||||
- converted_to_draft
|
||||
pull_request_review:
|
||||
|
||||
jobs:
|
||||
pr-custom-review:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Skip if pull request is in Draft
|
||||
# `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
|
||||
# recommended because when the PR is moved from "Draft" to "Ready to
|
||||
# review" the workflow will immediately be passing (since it was skipped),
|
||||
# even though it hasn't actually ran, since it takes a few seconds for
|
||||
# the workflow to start. This is also disclosed in:
|
||||
# https://github.community/t/dont-run-actions-on-draft-pull-requests/16817/17
|
||||
# That scenario would open an opportunity for the check to be bypassed:
|
||||
# 1. Get your PR approved
|
||||
# 2. Move it to Draft
|
||||
# 3. Push whatever commits you want
|
||||
# 4. Move it to "Ready for review"; now the workflow is passing (it was
|
||||
# skipped) and "Check reviews" is also passing (it won't be updated
|
||||
# until the workflow is finished)
|
||||
if: github.event.pull_request.draft == true
|
||||
run: exit 1
|
||||
- name: pr-custom-review
|
||||
uses: paritytech/pr-custom-review@action-v3
|
||||
with:
|
||||
checks-reviews-api: http://pcr.parity-prod.parity.io/api/v1/check_reviews
|
||||
@@ -1,21 +0,0 @@
|
||||
name: Release - Branch check
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
# Catches v1.2.3 and v1.2.3-rc1
|
||||
- release-v[0-9]+.[0-9]+.[0-9]+*
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
check_branch:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Run check
|
||||
shell: bash
|
||||
run: ./scripts/ci/github/check-rel-br
|
||||
@@ -1,71 +0,0 @@
|
||||
name: Release - RC automation
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
# Catches v1.2.3 and v1.2.3-rc1
|
||||
- release-v[0-9]+.[0-9]+.[0-9]+*
|
||||
jobs:
|
||||
tag_rc:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
channel:
|
||||
- name: "RelEng: Polkadot Release Coordination"
|
||||
room: '!cqAmzdIcbOFwrdrubV:parity.io'
|
||||
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- id: compute_tag
|
||||
name: Compute next rc tag
|
||||
shell: bash
|
||||
run: |
|
||||
# Get last rc tag if exists, else set it to {version}-rc1
|
||||
version=${GITHUB_REF#refs/heads/release-}
|
||||
echo "$version"
|
||||
echo "version=$version" >> $GITHUB_OUTPUT
|
||||
git tag -l
|
||||
last_rc=$(git tag -l "$version-rc*" | sort -V | tail -n 1)
|
||||
if [ -n "$last_rc" ]; then
|
||||
suffix=$(echo "$last_rc" | grep -Eo '[0-9]+$')
|
||||
echo $suffix
|
||||
((suffix++))
|
||||
echo $suffix
|
||||
echo "new_tag=$version-rc$suffix" >> $GITHUB_OUTPUT
|
||||
echo "first_rc=false" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "new_tag=$version-rc1" >> $GITHUB_OUTPUT
|
||||
echo "first_rc=true" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Apply new tag
|
||||
uses: tvdias/github-tagger@ed7350546e3e503b5e942dffd65bc8751a95e49d # v0.0.2
|
||||
with:
|
||||
# We can't use the normal GITHUB_TOKEN for the following reason:
|
||||
# https://docs.github.com/en/actions/reference/events-that-trigger-workflows#triggering-new-workflows-using-a-personal-access-token
|
||||
# RELEASE_BRANCH_TOKEN requires public_repo OAuth scope
|
||||
repo-token: "${{ secrets.RELEASE_BRANCH_TOKEN }}"
|
||||
tag: ${{ steps.compute_tag.outputs.new_tag }}
|
||||
|
||||
- id: create-issue
|
||||
uses: JasonEtco/create-an-issue@e27dddc79c92bc6e4562f268fffa5ed752639abd # v2.9.1
|
||||
# Only create the issue if it's the first release candidate
|
||||
if: steps.compute_tag.outputs.first_rc == 'true'
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
VERSION: ${{ steps.compute_tag.outputs.version }}
|
||||
with:
|
||||
filename: .github/ISSUE_TEMPLATE/release.md
|
||||
|
||||
- name: Send Matrix message to ${{ matrix.channel.name }}
|
||||
uses: s3krit/matrix-message-action@70ad3fb812ee0e45ff8999d6af11cafad11a6ecf # v0.0.3
|
||||
if: steps.create-issue.outputs.url != ''
|
||||
with:
|
||||
room_id: ${{ matrix.channel.room }}
|
||||
access_token: ${{ secrets.RELEASENOTES_MATRIX_V2_ACCESS_TOKEN }}
|
||||
server: m.parity.io
|
||||
message: |
|
||||
Release process for polkadot ${{ steps.compute_tag.outputs.version }} has been started.<br/>
|
||||
Tracking issue: ${{ steps.create-issue.outputs.url }}
|
||||
@@ -1,81 +0,0 @@
|
||||
# This workflow performs the Extrinsic Ordering Check on demand using a binary
|
||||
|
||||
name: Release - Extrinsic Ordering Check
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
reference_url:
|
||||
description: The WebSocket url of the reference node
|
||||
default: wss://kusama-rpc.polkadot.io
|
||||
required: true
|
||||
binary_url:
|
||||
description: A url to a Linux binary for the node containing the runtime to test
|
||||
default: https://releases.parity.io/polkadot/x86_64-debian:stretch/v0.9.10/polkadot
|
||||
required: true
|
||||
chain:
|
||||
description: The name of the chain under test. Usually, you would pass a local chain
|
||||
default: kusama-local
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
check:
|
||||
name: Run check
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
CHAIN: ${{github.event.inputs.chain}}
|
||||
BIN_URL: ${{github.event.inputs.binary_url}}
|
||||
REF_URL: ${{github.event.inputs.reference_url}}
|
||||
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Fetch binary
|
||||
run: |
|
||||
echo Fetching $BIN_URL
|
||||
wget $BIN_URL
|
||||
chmod a+x polkadot
|
||||
./polkadot --version
|
||||
|
||||
- name: Start local node
|
||||
run: |
|
||||
echo Running on $CHAIN
|
||||
./polkadot --chain=$CHAIN &
|
||||
|
||||
- name: Prepare output
|
||||
run: |
|
||||
VERSION=$(./polkadot --version)
|
||||
echo "Metadata comparison:" >> output.txt
|
||||
echo "Date: $(date)" >> output.txt
|
||||
echo "Reference: $REF_URL" >> output.txt
|
||||
echo "Target version: $VERSION" >> output.txt
|
||||
echo "Chain: $CHAIN" >> output.txt
|
||||
echo "----------------------------------------------------------------------" >> output.txt
|
||||
|
||||
- name: Pull polkadot-js-tools image
|
||||
run: docker pull jacogr/polkadot-js-tools
|
||||
|
||||
- name: Compare the metadata
|
||||
run: |
|
||||
CMD="docker run --pull always --network host jacogr/polkadot-js-tools metadata $REF_URL ws://localhost:9944"
|
||||
echo -e "Running:\n$CMD"
|
||||
$CMD >> output.txt
|
||||
sed -z -i 's/\n\n/\n/g' output.txt
|
||||
cat output.txt | egrep -n -i ''
|
||||
SUMMARY=$(./scripts/ci/github/extrinsic-ordering-filter.sh output.txt)
|
||||
echo -e $SUMMARY
|
||||
echo -e $SUMMARY >> output.txt
|
||||
|
||||
- name: Show result
|
||||
run: |
|
||||
cat output.txt
|
||||
|
||||
- name: Stop our local node
|
||||
run: pkill polkadot
|
||||
|
||||
- name: Save output as artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ${{ env.CHAIN }}
|
||||
path: |
|
||||
output.txt
|
||||
@@ -1,97 +0,0 @@
|
||||
# This workflow performs the Extrinsic Ordering Check on demand using two reference binaries
|
||||
|
||||
name: Release - Extrinsic API Check with reference bins
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
reference_binary_url:
|
||||
description: A url to a Linux binary for the node containing the reference runtime to test against
|
||||
default: https://releases.parity.io/polkadot/x86_64-debian:stretch/v0.9.26/polkadot
|
||||
required: true
|
||||
binary_url:
|
||||
description: A url to a Linux binary for the node containing the runtime to test
|
||||
default: https://releases.parity.io/polkadot/x86_64-debian:stretch/v0.9.27-rc1/polkadot
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
check:
|
||||
name: Run check
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
BIN_URL: ${{github.event.inputs.binary_url}}
|
||||
REF_URL: ${{github.event.inputs.reference_binary_url}}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
chain: [polkadot, kusama, westend, rococo]
|
||||
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Fetch reference binary
|
||||
run: |
|
||||
echo Fetching $REF_URL
|
||||
curl $REF_URL -o polkadot-ref
|
||||
chmod a+x polkadot-ref
|
||||
./polkadot-ref --version
|
||||
|
||||
- name: Fetch test binary
|
||||
run: |
|
||||
echo Fetching $BIN_URL
|
||||
curl $BIN_URL -o polkadot
|
||||
chmod a+x polkadot
|
||||
./polkadot --version
|
||||
|
||||
- name: Start local reference node
|
||||
run: |
|
||||
echo Running reference on ${{ matrix.chain }}-local
|
||||
./polkadot-ref --chain=${{ matrix.chain }}-local --rpc-port=9934 --ws-port=9945 --base-path=polkadot-ref-base/ &
|
||||
|
||||
- name: Start local test node
|
||||
run: |
|
||||
echo Running test on ${{ matrix.chain }}-local
|
||||
./polkadot --chain=${{ matrix.chain }}-local &
|
||||
|
||||
- name: Prepare output
|
||||
run: |
|
||||
REF_VERSION=$(./polkadot-ref --version)
|
||||
BIN_VERSION=$(./polkadot --version)
|
||||
echo "Metadata comparison:" >> output.txt
|
||||
echo "Date: $(date)" >> output.txt
|
||||
echo "Ref. binary: $REF_URL" >> output.txt
|
||||
echo "Test binary: $BIN_URL" >> output.txt
|
||||
echo "Ref. version: $REF_VERSION" >> output.txt
|
||||
echo "Test version: $BIN_VERSION" >> output.txt
|
||||
echo "Chain: ${{ matrix.chain }}-local" >> output.txt
|
||||
echo "----------------------------------------------------------------------" >> output.txt
|
||||
|
||||
- name: Pull polkadot-js-tools image
|
||||
run: docker pull jacogr/polkadot-js-tools
|
||||
|
||||
- name: Compare the metadata
|
||||
run: |
|
||||
CMD="docker run --pull always --network host jacogr/polkadot-js-tools metadata ws://localhost:9945 ws://localhost:9944"
|
||||
echo -e "Running:\n$CMD"
|
||||
$CMD >> output.txt
|
||||
sed -z -i 's/\n\n/\n/g' output.txt
|
||||
cat output.txt | egrep -n -i ''
|
||||
SUMMARY=$(./scripts/ci/github/extrinsic-ordering-filter.sh output.txt)
|
||||
echo -e $SUMMARY
|
||||
echo -e $SUMMARY >> output.txt
|
||||
|
||||
- name: Show result
|
||||
run: |
|
||||
cat output.txt
|
||||
|
||||
- name: Save output as artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ${{ matrix.chain }}
|
||||
path: |
|
||||
output.txt
|
||||
|
||||
- name: Stop our local nodes
|
||||
run: |
|
||||
pkill polkadot-ref
|
||||
pkill polkadot
|
||||
@@ -1,199 +0,0 @@
|
||||
name: Release - Publish draft
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
# Catches v1.2.3 and v1.2.3-rc1
|
||||
- v[0-9]+.[0-9]+.[0-9]+*
|
||||
|
||||
jobs:
|
||||
get-rust-versions:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: paritytech/ci-linux:production
|
||||
outputs:
|
||||
rustc-stable: ${{ steps.get-rust-versions.outputs.stable }}
|
||||
rustc-nightly: ${{ steps.get-rust-versions.outputs.nightly }}
|
||||
steps:
|
||||
- id: get-rust-versions
|
||||
run: |
|
||||
echo "stable=$(rustc +stable --version)" >> $GITHUB_OUTPUT
|
||||
echo "nightly=$(rustc +nightly --version)" >> $GITHUB_OUTPUT
|
||||
|
||||
build-runtimes:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
runtime: ["polkadot", "kusama", "westend", "rococo"]
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Cache target dir
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: "${{ github.workspace }}/runtime/${{ matrix.runtime }}/target"
|
||||
key: srtool-target-${{ matrix.runtime }}-${{ github.sha }}
|
||||
restore-keys: |
|
||||
srtool-target-${{ matrix.runtime }}-
|
||||
srtool-target-
|
||||
|
||||
- name: Build ${{ matrix.runtime }} runtime
|
||||
id: srtool_build
|
||||
uses: chevdor/srtool-actions@v0.8.0
|
||||
with:
|
||||
image: paritytech/srtool
|
||||
chain: ${{ matrix.runtime }}
|
||||
|
||||
- name: Store srtool digest to disk
|
||||
run: |
|
||||
echo '${{ steps.srtool_build.outputs.json }}' | jq > ${{ matrix.runtime }}_srtool_output.json
|
||||
|
||||
- name: Upload ${{ matrix.runtime }} srtool json
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ${{ matrix.runtime }}-srtool-json
|
||||
path: ${{ matrix.runtime }}_srtool_output.json
|
||||
|
||||
- name: Upload ${{ matrix.runtime }} runtime
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ${{ matrix.runtime }}-runtime
|
||||
path: |
|
||||
${{ steps.srtool_build.outputs.wasm_compressed }}
|
||||
|
||||
publish-draft-release:
|
||||
runs-on: ubuntu-latest
|
||||
needs: ["get-rust-versions", "build-runtimes"]
|
||||
outputs:
|
||||
release_url: ${{ steps.create-release.outputs.html_url }}
|
||||
asset_upload_url: ${{ steps.create-release.outputs.upload_url }}
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
path: polkadot
|
||||
|
||||
- name: Set up Ruby
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: 3.0.0
|
||||
|
||||
- name: Download srtool json output
|
||||
uses: actions/download-artifact@v3
|
||||
|
||||
- name: Prepare tooling
|
||||
run: |
|
||||
cd polkadot/scripts/ci/changelog
|
||||
gem install bundler changelogerator:0.9.1
|
||||
bundle install
|
||||
changelogerator --help
|
||||
|
||||
URL=https://github.com/chevdor/tera-cli/releases/download/v0.2.1/tera-cli_linux_amd64.deb
|
||||
wget $URL -O tera.deb
|
||||
sudo dpkg -i tera.deb
|
||||
tera --version
|
||||
|
||||
- name: Generate release notes
|
||||
env:
|
||||
RUSTC_STABLE: ${{ needs.get-rust-versions.outputs.rustc-stable }}
|
||||
RUSTC_NIGHTLY: ${{ needs.get-rust-versions.outputs.rustc-nightly }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
NO_CACHE: 1
|
||||
DEBUG: 1
|
||||
ROCOCO_DIGEST: ${{ github.workspace}}/rococo-srtool-json/rococo_srtool_output.json
|
||||
WESTEND_DIGEST: ${{ github.workspace}}/westend-srtool-json/westend_srtool_output.json
|
||||
KUSAMA_DIGEST: ${{ github.workspace}}/kusama-srtool-json/kusama_srtool_output.json
|
||||
POLKADOT_DIGEST: ${{ github.workspace}}/polkadot-srtool-json/polkadot_srtool_output.json
|
||||
PRE_RELEASE: ${{ github.event.inputs.pre_release }}
|
||||
run: |
|
||||
find ${{env.GITHUB_WORKSPACE}} -type f -name "*_srtool_output.json"
|
||||
ls -al $ROCOCO_DIGEST
|
||||
ls -al $WESTEND_DIGEST
|
||||
ls -al $KUSAMA_DIGEST
|
||||
ls -al $POLKADOT_DIGEST
|
||||
|
||||
cd polkadot/scripts/ci/changelog
|
||||
|
||||
./bin/changelog ${GITHUB_REF}
|
||||
ls -al release-notes.md
|
||||
ls -al context.json
|
||||
|
||||
- name: Archive artifact context.json
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: release-notes-context
|
||||
path: |
|
||||
polkadot/scripts/ci/changelog/context.json
|
||||
**/*_srtool_output.json
|
||||
|
||||
- name: Create draft release
|
||||
id: create-release
|
||||
uses: actions/create-release@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
tag_name: ${{ github.ref }}
|
||||
release_name: Polkadot ${{ github.ref }}
|
||||
body_path: ./polkadot/scripts/ci/changelog/release-notes.md
|
||||
draft: true
|
||||
|
||||
publish-runtimes:
|
||||
runs-on: ubuntu-latest
|
||||
needs: ["publish-draft-release"]
|
||||
env:
|
||||
RUNTIME_DIR: runtime
|
||||
strategy:
|
||||
matrix:
|
||||
runtime: ["polkadot", "kusama", "westend", "rococo"]
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v3
|
||||
- name: Download artifacts
|
||||
uses: actions/download-artifact@v3
|
||||
- name: Set up Ruby
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: 3.0.0
|
||||
- name: Get runtime version
|
||||
id: get-runtime-ver
|
||||
run: |
|
||||
echo "require './scripts/ci/github/lib.rb'" > script.rb
|
||||
echo "puts get_runtime(runtime: \"${{ matrix.runtime }}\", runtime_dir: \"$RUNTIME_DIR\")" >> script.rb
|
||||
|
||||
echo "Current folder: $PWD"
|
||||
ls "$RUNTIME_DIR/${{ matrix.runtime }}"
|
||||
runtime_ver=$(ruby script.rb)
|
||||
echo "Found version: >$runtime_ver<"
|
||||
echo "runtime_ver=$runtime_ver" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Upload compressed ${{ matrix.runtime }} wasm
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ needs.publish-draft-release.outputs.asset_upload_url }}
|
||||
asset_path: "${{ matrix.runtime }}-runtime/${{ matrix.runtime }}_runtime.compact.compressed.wasm"
|
||||
asset_name: ${{ matrix.runtime }}_runtime-v${{ steps.get-runtime-ver.outputs.runtime_ver }}.compact.compressed.wasm
|
||||
asset_content_type: application/wasm
|
||||
|
||||
post_to_matrix:
|
||||
runs-on: ubuntu-latest
|
||||
needs: publish-draft-release
|
||||
strategy:
|
||||
matrix:
|
||||
channel:
|
||||
- name: "RelEng: Polkadot Release Coordination"
|
||||
room: '!cqAmzdIcbOFwrdrubV:parity.io'
|
||||
|
||||
steps:
|
||||
- name: Send Matrix message to ${{ matrix.channel.name }}
|
||||
uses: s3krit/matrix-message-action@70ad3fb812ee0e45ff8999d6af11cafad11a6ecf # v0.0.3
|
||||
with:
|
||||
room_id: ${{ matrix.channel.room }}
|
||||
access_token: ${{ secrets.RELEASENOTES_MATRIX_V2_ACCESS_TOKEN }}
|
||||
server: m.parity.io
|
||||
message: |
|
||||
**New version of polkadot tagged**: ${{ github.ref }}<br/>
|
||||
Draft release created: ${{ needs.publish-draft-release.outputs.release_url }}
|
||||
-49
@@ -1,49 +0,0 @@
|
||||
name: Release - Send new release notification to matrix channels
|
||||
on:
|
||||
release:
|
||||
types:
|
||||
- published
|
||||
|
||||
jobs:
|
||||
ping_matrix:
|
||||
strategy:
|
||||
matrix:
|
||||
channel:
|
||||
- name: '#KusamaValidatorLounge:polkadot.builders'
|
||||
room: '!LhjZccBOqFNYKLdmbb:polkadot.builders'
|
||||
pre-releases: false
|
||||
- name: '#kusama-announcements:matrix.parity.io'
|
||||
room: '!FMwxpQnYhRCNDRsYGI:matrix.parity.io'
|
||||
pre-release: false
|
||||
- name: '#polkadotvalidatorlounge:web3.foundation'
|
||||
room: '!NZrbtteFeqYKCUGQtr:matrix.parity.io'
|
||||
pre-release: false
|
||||
- name: '#polkadot-announcements:matrix.parity.io'
|
||||
room: '!UqHPWiCBGZWxrmYBkF:matrix.parity.io'
|
||||
pre-release: false
|
||||
- name: "RelEng: Polkadot Release Coordination"
|
||||
room: '!cqAmzdIcbOFwrdrubV:parity.io'
|
||||
pre-release: true
|
||||
- name: 'Ledger <> Polkadot Coordination'
|
||||
room: '!EoIhaKfGPmFOBrNSHT:web3.foundation'
|
||||
pre-release: true
|
||||
- name: 'General: Rust, Polkadot, Substrate'
|
||||
room: '!aJymqQYtCjjqImFLSb:parity.io'
|
||||
pre-release: false
|
||||
- name: 'Team: DevOps'
|
||||
room: '!lUslSijLMgNcEKcAiE:parity.io'
|
||||
pre-release: true
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Send Matrix message to ${{ matrix.channel.name }}
|
||||
if: github.event.release.prerelease == false || matrix.channel.pre-release
|
||||
uses: s3krit/matrix-message-action@70ad3fb812ee0e45ff8999d6af11cafad11a6ecf # v0.0.3
|
||||
with:
|
||||
room_id: ${{ matrix.channel.room }}
|
||||
access_token: ${{ secrets.RELEASENOTES_MATRIX_V2_ACCESS_TOKEN }}
|
||||
server: m.parity.io
|
||||
message: |
|
||||
***Polkadot ${{github.event.release.tag_name}} has been released!***<br/>
|
||||
${{github.event.release.html_url}}<br/><br/>
|
||||
${{github.event.release.body}}<br/>
|
||||
@@ -1,287 +0,0 @@
|
||||
# .gitlab-ci.yml
|
||||
#
|
||||
# polkadot
|
||||
#
|
||||
# Pipelines can be triggered manually in the web.
|
||||
#
|
||||
# Please do not add new jobs without "rules:" and "*-env". There are &test-refs for everything,
|
||||
# "docker-env" is used for Rust jobs.
|
||||
# And "kubernetes-env" for everything else. Please mention "image:" container name to be used
|
||||
# with it, as there's no default one.
|
||||
|
||||
# All jobs are sorted according to their duration using DAG mechanism
|
||||
# Currently, test-linux-stable job is the longest one and other jobs are
|
||||
# sorted in order to complete during this job and occupy less runners in one
|
||||
# moment of time.
|
||||
|
||||
stages:
|
||||
- .pre
|
||||
- weights
|
||||
- check
|
||||
- test
|
||||
- build
|
||||
- publish
|
||||
- zombienet
|
||||
- short-benchmarks
|
||||
|
||||
workflow:
|
||||
rules:
|
||||
- if: $CI_COMMIT_TAG
|
||||
- if: $CI_COMMIT_BRANCH
|
||||
|
||||
variables:
|
||||
GIT_STRATEGY: fetch
|
||||
GIT_DEPTH: 100
|
||||
CI_SERVER_NAME: "GitLab CI"
|
||||
CI_IMAGE: !reference [.ci-unified, variables, CI_IMAGE]
|
||||
BUILDAH_IMAGE: "quay.io/buildah/stable:v1.29"
|
||||
BUILDAH_COMMAND: "buildah --storage-driver overlay2"
|
||||
DOCKER_OS: "debian:stretch"
|
||||
ARCH: "x86_64"
|
||||
ZOMBIENET_IMAGE: "docker.io/paritytech/zombienet:v1.3.65"
|
||||
|
||||
default:
|
||||
cache: {}
|
||||
retry:
|
||||
max: 2
|
||||
when:
|
||||
- runner_system_failure
|
||||
- unknown_failure
|
||||
- api_failure
|
||||
interruptible: true
|
||||
|
||||
.common-before-script:
|
||||
before_script:
|
||||
- !reference [.job-switcher, before_script]
|
||||
- !reference [.timestamp, before_script]
|
||||
|
||||
.collect-artifacts:
|
||||
artifacts:
|
||||
name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
|
||||
when: on_success
|
||||
expire_in: 7 days
|
||||
paths:
|
||||
- ./artifacts/
|
||||
|
||||
.collect-artifacts-short:
|
||||
artifacts:
|
||||
name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
|
||||
when: on_success
|
||||
expire_in: 1 days
|
||||
paths:
|
||||
- ./artifacts/
|
||||
|
||||
# collecting vars for pipeline stopper
|
||||
# they will be used if the job fails
|
||||
.pipeline-stopper-vars:
|
||||
before_script:
|
||||
- echo "FAILED_JOB_URL=${CI_JOB_URL}" > pipeline-stopper.env
|
||||
- echo "FAILED_JOB_NAME=${CI_JOB_NAME}" >> pipeline-stopper.env
|
||||
- echo "FAILED_JOB_NAME=${CI_JOB_NAME}" >> pipeline-stopper.env
|
||||
- echo "PR_NUM=${CI_COMMIT_REF_NAME}" >> pipeline-stopper.env
|
||||
|
||||
.pipeline-stopper-artifacts:
|
||||
artifacts:
|
||||
reports:
|
||||
dotenv: pipeline-stopper.env
|
||||
|
||||
.job-switcher:
|
||||
before_script:
|
||||
- if echo "$CI_DISABLED_JOBS" | grep -xF "$CI_JOB_NAME"; then echo "The job has been cancelled in CI settings"; exit 0; fi
|
||||
|
||||
.kubernetes-env:
|
||||
image: "${CI_IMAGE}"
|
||||
before_script:
|
||||
- !reference [.common-before-script, before_script]
|
||||
tags:
|
||||
- kubernetes-parity-build
|
||||
|
||||
.docker-env:
|
||||
image: "${CI_IMAGE}"
|
||||
before_script:
|
||||
- !reference [.common-before-script, before_script]
|
||||
tags:
|
||||
- linux-docker-vm-c2
|
||||
|
||||
.compiler-info:
|
||||
before_script:
|
||||
- !reference [.common-before-script, before_script]
|
||||
- rustup show
|
||||
- cargo --version
|
||||
|
||||
.test-refs:
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "web"
|
||||
- if: $CI_PIPELINE_SOURCE == "schedule"
|
||||
- if: $CI_COMMIT_REF_NAME == "master"
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
|
||||
|
||||
.common-refs:
|
||||
# these jobs run always*
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "web"
|
||||
- if: $CI_PIPELINE_SOURCE == "schedule"
|
||||
- if: $CI_COMMIT_REF_NAME == "master"
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^release-v[0-9]+\.[0-9]+.*$/ # i.e. release-v0.9.27
|
||||
|
||||
.test-pr-refs:
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "pipeline"
|
||||
when: never
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
|
||||
|
||||
.zombienet-refs:
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "pipeline"
|
||||
when: never
|
||||
- if: $CI_PIPELINE_SOURCE == "schedule"
|
||||
when: never
|
||||
- if: $CI_COMMIT_REF_NAME == "master"
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
|
||||
|
||||
.deploy-testnet-refs:
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "pipeline"
|
||||
when: never
|
||||
- if: $CI_PIPELINE_SOURCE == "schedule"
|
||||
- if: $CI_COMMIT_REF_NAME == "master"
|
||||
|
||||
.publish-refs:
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "pipeline"
|
||||
when: never
|
||||
- if: $CI_PIPELINE_SOURCE == "schedule"
|
||||
- if: $CI_PIPELINE_SOURCE == "web" &&
|
||||
$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
|
||||
|
||||
.build-push-image:
|
||||
variables:
|
||||
CI_IMAGE: "${BUILDAH_IMAGE}"
|
||||
|
||||
REGISTRY: "docker.io"
|
||||
DOCKER_OWNER: "paritypr"
|
||||
DOCKER_USER: "${PARITYPR_USER}"
|
||||
DOCKER_PASS: "${PARITYPR_PASS}"
|
||||
IMAGE: "${REGISTRY}/${DOCKER_OWNER}/${IMAGE_NAME}"
|
||||
|
||||
ENGINE: "${BUILDAH_COMMAND}"
|
||||
BUILDAH_FORMAT: "docker"
|
||||
SKIP_IMAGE_VALIDATION: 1
|
||||
|
||||
PROJECT_ROOT: "."
|
||||
BIN_FOLDER: "./artifacts"
|
||||
VCS_REF: "${CI_COMMIT_SHA}"
|
||||
|
||||
before_script:
|
||||
- !reference [.common-before-script, before_script]
|
||||
- test -s ./artifacts/VERSION || exit 1
|
||||
- test -s ./artifacts/EXTRATAG || exit 1
|
||||
- export VERSION="$(cat ./artifacts/VERSION)"
|
||||
- EXTRATAG="$(cat ./artifacts/EXTRATAG)"
|
||||
- echo "Polkadot version = ${VERSION} (EXTRATAG = ${EXTRATAG})"
|
||||
script:
|
||||
- test "$DOCKER_USER" -a "$DOCKER_PASS" ||
|
||||
( echo "no docker credentials provided"; exit 1 )
|
||||
- TAGS="${VERSION},${EXTRATAG}" scripts/ci/dockerfiles/build-injected.sh
|
||||
- echo "$DOCKER_PASS" |
|
||||
buildah login --username "$DOCKER_USER" --password-stdin "${REGISTRY}"
|
||||
- $BUILDAH_COMMAND info
|
||||
- $BUILDAH_COMMAND push --format=v2s2 "$IMAGE:$VERSION"
|
||||
- $BUILDAH_COMMAND push --format=v2s2 "$IMAGE:$EXTRATAG"
|
||||
after_script:
|
||||
- buildah logout --all
|
||||
|
||||
#### stage: .pre
|
||||
|
||||
# By default our pipelines are interruptible, but some special pipelines shouldn't be interrupted:
|
||||
# * multi-project pipelines such as the ones triggered by the scripts repo
|
||||
#
|
||||
# In those cases, we add an uninterruptible .pre job; once that one has started,
|
||||
# the entire pipeline becomes uninterruptible.
|
||||
uninterruptible-pipeline:
|
||||
extends: .kubernetes-env
|
||||
variables:
|
||||
CI_IMAGE: "paritytech/tools:latest"
|
||||
stage: .pre
|
||||
interruptible: false
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "pipeline"
|
||||
script: "true"
|
||||
|
||||
include:
|
||||
# weights jobs
|
||||
- scripts/ci/gitlab/pipeline/weights.yml
|
||||
# check jobs
|
||||
- scripts/ci/gitlab/pipeline/check.yml
|
||||
# test jobs
|
||||
- scripts/ci/gitlab/pipeline/test.yml
|
||||
# build jobs
|
||||
- scripts/ci/gitlab/pipeline/build.yml
|
||||
# short-benchmarks jobs
|
||||
- scripts/ci/gitlab/pipeline/short-benchmarks.yml
|
||||
# publish jobs
|
||||
- scripts/ci/gitlab/pipeline/publish.yml
|
||||
# zombienet jobs
|
||||
- scripts/ci/gitlab/pipeline/zombienet.yml
|
||||
# timestamp handler
|
||||
- project: parity/infrastructure/ci_cd/shared
|
||||
ref: main
|
||||
file: /common/timestamp.yml
|
||||
- project: parity/infrastructure/ci_cd/shared
|
||||
ref: main
|
||||
file: /common/ci-unified.yml
|
||||
|
||||
|
||||
#### stage: .post
|
||||
|
||||
deploy-parity-testnet:
|
||||
stage: .post
|
||||
extends:
|
||||
- .deploy-testnet-refs
|
||||
variables:
|
||||
POLKADOT_CI_COMMIT_NAME: "${CI_COMMIT_REF_NAME}"
|
||||
POLKADOT_CI_COMMIT_REF: "${CI_COMMIT_SHORT_SHA}"
|
||||
allow_failure: false
|
||||
trigger: "parity/infrastructure/parity-testnet"
|
||||
|
||||
# This job cancels the whole pipeline if any of provided jobs fail.
|
||||
# In a DAG, every jobs chain is executed independently of others. The `fail_fast` principle suggests
|
||||
# to fail the pipeline as soon as possible to shorten the feedback loop.
|
||||
.cancel-pipeline-template:
|
||||
stage: .post
|
||||
rules:
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
|
||||
when: on_failure
|
||||
variables:
|
||||
PROJECT_ID: "${CI_PROJECT_ID}"
|
||||
PROJECT_NAME: "${CI_PROJECT_NAME}"
|
||||
PIPELINE_ID: "${CI_PIPELINE_ID}"
|
||||
FAILED_JOB_URL: "${FAILED_JOB_URL}"
|
||||
FAILED_JOB_NAME: "${FAILED_JOB_NAME}"
|
||||
PR_NUM: "${PR_NUM}"
|
||||
trigger:
|
||||
project: "parity/infrastructure/ci_cd/pipeline-stopper"
|
||||
branch: "as-improve"
|
||||
|
||||
remove-cancel-pipeline-message:
|
||||
stage: .post
|
||||
rules:
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
|
||||
variables:
|
||||
PROJECT_ID: "${CI_PROJECT_ID}"
|
||||
PROJECT_NAME: "${CI_PROJECT_NAME}"
|
||||
PIPELINE_ID: "${CI_PIPELINE_ID}"
|
||||
FAILED_JOB_URL: "https://gitlab.com"
|
||||
FAILED_JOB_NAME: "nope"
|
||||
PR_NUM: "${CI_COMMIT_REF_NAME}"
|
||||
trigger:
|
||||
project: "parity/infrastructure/ci_cd/pipeline-stopper"
|
||||
|
||||
cancel-pipeline-test-linux-stable:
|
||||
extends: .cancel-pipeline-template
|
||||
needs:
|
||||
- job: test-linux-stable
|
||||
@@ -1,4 +1,2 @@
|
||||
Cargo.lock linguist-generated=true
|
||||
/.gitlab-ci.yml filter=ci-prettier
|
||||
/scripts/ci/gitlab/pipeline/*.yml filter=ci-prettier
|
||||
frame/**/src/weights.rs linguist-generated=true
|
||||
|
||||
Vendored
-12
@@ -1,12 +0,0 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "cargo"
|
||||
directory: "/"
|
||||
labels: ["A2-insubstantial", "B0-silent", "C1-low", "E2-dependencies"]
|
||||
schedule:
|
||||
interval: "daily"
|
||||
- package-ecosystem: github-actions
|
||||
directory: '/'
|
||||
labels: ["A2-insubstantial", "B0-silent", "C1-low", "E2-dependencies"]
|
||||
schedule:
|
||||
interval: daily
|
||||
-39
@@ -1,39 +0,0 @@
|
||||
# 🔒 PROTECTED: Changes to locks-review-team should be approved by the current locks-review-team
|
||||
locks-review-team: locks-review
|
||||
team-leads-team: polkadot-review
|
||||
action-review-team: ci
|
||||
|
||||
rules:
|
||||
- name: Core developers
|
||||
check_type: changed_files
|
||||
condition:
|
||||
include: .*
|
||||
# excluding files from 'CI team' and 'FRAME coders' rules
|
||||
exclude: ^\.gitlab-ci\.yml|^scripts/ci/.*|^\.github/.*|^\.config/nextest.toml|^frame/(?!.*(nfts/.*|uniques/.*|babe/.*|grandpa/.*|beefy|merkle-mountain-range/.*|contracts/.*|election|nomination-pools/.*|staking/.*|aura/.*))
|
||||
min_approvals: 2
|
||||
teams:
|
||||
- core-devs
|
||||
|
||||
- name: FRAME coders
|
||||
check_type: changed_files
|
||||
condition:
|
||||
include: ^frame/(?!.*(nfts/.*|uniques/.*|babe/.*|grandpa/.*|beefy|merkle-mountain-range/.*|contracts/.*|election|nomination-pools/.*|staking/.*|aura/.*))
|
||||
all:
|
||||
- min_approvals: 2
|
||||
teams:
|
||||
- core-devs
|
||||
- min_approvals: 1
|
||||
teams:
|
||||
- frame-coders
|
||||
|
||||
- name: CI team
|
||||
check_type: changed_files
|
||||
condition:
|
||||
include: ^\.gitlab-ci\.yml|^scripts/ci/.*|^\.github/.*|^\.config/nextest.toml
|
||||
min_approvals: 2
|
||||
teams:
|
||||
- ci
|
||||
|
||||
prevent-review-request:
|
||||
teams:
|
||||
- core-devs
|
||||
Vendored
-18
@@ -1,18 +0,0 @@
|
||||
# Number of days of inactivity before an issue becomes stale
|
||||
daysUntilStale: 30
|
||||
# Number of days of inactivity before a stale issue is closed
|
||||
daysUntilClose: 14
|
||||
# Issues with these labels will never be considered stale
|
||||
exemptLabels:
|
||||
- "D9-needsaudit 👮"
|
||||
# Label to use when marking an issue as stale
|
||||
staleLabel: "A3-stale"
|
||||
# we only bother with pull requests
|
||||
only: pulls
|
||||
# Comment to post when marking an issue as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
Hey, is anyone still working on this? Due to the inactivity this issue has
|
||||
been automatically marked as stale. It will be closed if no further activity
|
||||
occurs. Thank you for your contributions.
|
||||
# Comment to post when closing a stale issue. Set to `false` to disable
|
||||
closeComment: false
|
||||
@@ -1,17 +0,0 @@
|
||||
# If the author of the issues is not a contributor to the project, label
|
||||
# the issue with 'Z0-unconfirmed'
|
||||
|
||||
name: Label New Issues
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
|
||||
jobs:
|
||||
label-new-issues:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Label drafts
|
||||
uses: andymckay/labeler@e6c4322d0397f3240f0e7e30a33b5c5df2d39e90 # 1.0.4
|
||||
if: github.event.issue.author_association == 'NONE'
|
||||
with:
|
||||
add-labels: "I10-unconfirmed"
|
||||
@@ -1,24 +0,0 @@
|
||||
name: Notify devops when burn-in label applied
|
||||
on:
|
||||
pull_request:
|
||||
types: [labeled]
|
||||
|
||||
jobs:
|
||||
notify-devops:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
channel:
|
||||
- name: 'Team: DevOps'
|
||||
room: '!lUslSijLMgNcEKcAiE:parity.io'
|
||||
|
||||
steps:
|
||||
- name: Notify devops
|
||||
if: startsWith(github.event.label.name, 'A1-')
|
||||
uses: s3krit/matrix-message-action@70ad3fb812ee0e45ff8999d6af11cafad11a6ecf # v0.0.3
|
||||
with:
|
||||
room_id: ${{ matrix.channel.room }}
|
||||
access_token: ${{ secrets.RELEASENOTES_MATRIX_V2_ACCESS_TOKEN }}
|
||||
server: "m.parity.io"
|
||||
message: |
|
||||
@room Burn-in request received for [${{ github.event.pull_request.title }}](${{ github.event.pull_request.html_url }})
|
||||
-48
@@ -1,48 +0,0 @@
|
||||
name: Check D labels
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [labeled, opened, synchronize, unlabeled]
|
||||
paths:
|
||||
- frame/**
|
||||
- primitives/**
|
||||
|
||||
env:
|
||||
IMAGE: paritytech/ruled_labels:0.4.0
|
||||
|
||||
jobs:
|
||||
check-labels:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Pull image
|
||||
run: docker pull $IMAGE
|
||||
|
||||
- name: Check labels
|
||||
env:
|
||||
MOUNT: /work
|
||||
GITHUB_PR: ${{ github.event.pull_request.number }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
API_BASE: https://api.github.com/repos
|
||||
REPO: ${{ github.repository }}
|
||||
RULES_PATH: labels/ruled_labels
|
||||
CHECK_SPECS: specs_substrate.yaml
|
||||
run: |
|
||||
echo "REPO: ${REPO}"
|
||||
echo "GITHUB_PR: ${GITHUB_PR}"
|
||||
# Clone repo with labels specs
|
||||
git clone https://github.com/paritytech/labels
|
||||
# Fetch the labels for the PR under test
|
||||
labels=$( curl -H "Authorization: token ${GITHUB_TOKEN}" -s "$API_BASE/${REPO}/pulls/${GITHUB_PR}" | jq '.labels | .[] | .name' | tr "\n" ",")
|
||||
|
||||
if [ -z "${labels}" ]; then
|
||||
docker run --rm -i -v $PWD/${RULES_PATH}/:$MOUNT $IMAGE check $MOUNT/$CHECK_SPECS --tags audit --no-label
|
||||
fi
|
||||
|
||||
labels_args=${labels: :-1}
|
||||
printf "Checking labels: %s\n" "${labels_args}"
|
||||
|
||||
# Prevent the shell from splitting labels with spaces
|
||||
IFS=","
|
||||
|
||||
# --dev is more useful to debug mode to debug
|
||||
docker run --rm -i -v $PWD/${RULES_PATH}/:$MOUNT $IMAGE check $MOUNT/$CHECK_SPECS --labels ${labels_args} --dev --tags audit
|
||||
-45
@@ -1,45 +0,0 @@
|
||||
name: Check labels
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [labeled, opened, synchronize, unlabeled]
|
||||
|
||||
env:
|
||||
IMAGE: paritytech/ruled_labels:0.4.0
|
||||
|
||||
jobs:
|
||||
check-labels:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Pull image
|
||||
run: docker pull $IMAGE
|
||||
|
||||
- name: Check labels
|
||||
env:
|
||||
MOUNT: /work
|
||||
GITHUB_PR: ${{ github.event.pull_request.number }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
API_BASE: https://api.github.com/repos
|
||||
REPO: ${{ github.repository }}
|
||||
RULES_PATH: labels/ruled_labels
|
||||
CHECK_SPECS: specs_substrate.yaml
|
||||
run: |
|
||||
echo "REPO: ${REPO}"
|
||||
echo "GITHUB_PR: ${GITHUB_PR}"
|
||||
# Clone repo with labels specs
|
||||
git clone https://github.com/paritytech/labels
|
||||
# Fetch the labels for the PR under test
|
||||
labels=$( curl -H "Authorization: token ${GITHUB_TOKEN}" -s "$API_BASE/${REPO}/pulls/${GITHUB_PR}" | jq '.labels | .[] | .name' | tr "\n" ",")
|
||||
|
||||
if [ -z "${labels}" ]; then
|
||||
docker run --rm -i -v $PWD/${RULES_PATH}/:$MOUNT $IMAGE check $MOUNT/$CHECK_SPECS --tags PR --no-label
|
||||
fi
|
||||
|
||||
labels_args=${labels: :-1}
|
||||
printf "Checking labels: %s\n" "${labels_args}"
|
||||
|
||||
# Prevent the shell from splitting labels with spaces
|
||||
IFS=","
|
||||
|
||||
# --dev is more useful to debug mode to debug
|
||||
docker run --rm -i -v $PWD/${RULES_PATH}/:$MOUNT $IMAGE check $MOUNT/$CHECK_SPECS --labels ${labels_args} --dev --tags PR
|
||||
-19
@@ -1,19 +0,0 @@
|
||||
name: Check Links
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
markdown-link-check:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: gaurav-nelson/github-action-markdown-link-check@0a51127e9955b855a9bbfa1ff5577f1d1338c9a5 # 1.0.14
|
||||
with:
|
||||
use-quiet-mode: 'yes'
|
||||
config-file: '.github/workflows/mlc_config.json'
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"ignorePatterns": [
|
||||
{
|
||||
"pattern": "^https://crates.io",
|
||||
}
|
||||
]
|
||||
}
|
||||
-43
@@ -1,43 +0,0 @@
|
||||
name: Monthly Snapshot Tag
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 1 1 * *"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Take Snapshot
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Get the tags by date
|
||||
id: tags
|
||||
run: |
|
||||
echo "new=$(date +'monthly-%Y-%m')" >> $GITHUB_OUTPUT
|
||||
echo "old=$(date -d'1 month ago' +'monthly-%Y-%m')" >> $GITHUB_OUTPUT
|
||||
- name: Checkout branch "master"
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
ref: 'master'
|
||||
fetch-depth: 0
|
||||
- name: Generate changelog
|
||||
id: changelog
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
echo "# Automatic snapshot pre-release ${{ steps.tags.outputs.new }}" > Changelog.md
|
||||
echo "" >> Changelog.md
|
||||
echo "## Changes since last snapshot (${{ steps.tags.outputs.old }})" >> Changelog.md
|
||||
echo "" >> Changelog.md
|
||||
./scripts/ci/github/generate_changelog.sh ${{ steps.tags.outputs.old }} >> Changelog.md
|
||||
- name: Release snapshot
|
||||
id: release-snapshot
|
||||
uses: actions/create-release@0cb9c9b65d5d1901c1f53e5e66eaf4afd303e70e # v1.1.4 latest version, repo archived
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
tag_name: ${{ steps.tags.outputs.new }}
|
||||
release_name: ${{ steps.tags.outputs.new }}
|
||||
draft: false
|
||||
prerelease: true
|
||||
body_path: Changelog.md
|
||||
@@ -1,42 +0,0 @@
|
||||
name: Assign reviewers
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
types:
|
||||
- opened
|
||||
- reopened
|
||||
- synchronize
|
||||
- review_requested
|
||||
- review_request_removed
|
||||
- ready_for_review
|
||||
- converted_to_draft
|
||||
pull_request_review:
|
||||
|
||||
jobs:
|
||||
pr-custom-review:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Skip if pull request is in Draft
|
||||
# `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
|
||||
# recommended because when the PR is moved from "Draft" to "Ready to
|
||||
# review" the workflow will immediately be passing (since it was skipped),
|
||||
# even though it hasn't actually ran, since it takes a few seconds for
|
||||
# the workflow to start. This is also disclosed in:
|
||||
# https://github.community/t/dont-run-actions-on-draft-pull-requests/16817/17
|
||||
# That scenario would open an opportunity for the check to be bypassed:
|
||||
# 1. Get your PR approved
|
||||
# 2. Move it to Draft
|
||||
# 3. Push whatever commits you want
|
||||
# 4. Move it to "Ready for review"; now the workflow is passing (it was
|
||||
# skipped) and "Check reviews" is also passing (it won't be updated
|
||||
# until the workflow is finished)
|
||||
if: github.event.pull_request.draft == true
|
||||
run: exit 1
|
||||
- name: pr-custom-review
|
||||
uses: paritytech/pr-custom-review@action-v3
|
||||
with:
|
||||
checks-reviews-api: http://pcr.parity-prod.parity.io/api/v1/check_reviews
|
||||
-31
@@ -1,31 +0,0 @@
|
||||
name: Pushes release updates to a pre-defined Matrix room
|
||||
on:
|
||||
release:
|
||||
types:
|
||||
- edited
|
||||
- prereleased
|
||||
- published
|
||||
jobs:
|
||||
ping_matrix:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
channel:
|
||||
- name: 'General: Rust, Polkadot, Substrate'
|
||||
room: '!aJymqQYtCjjqImFLSb:parity.io'
|
||||
pre-release: false
|
||||
|
||||
steps:
|
||||
- name: send message
|
||||
uses: s3krit/matrix-message-action@70ad3fb812ee0e45ff8999d6af11cafad11a6ecf # v0.0.3
|
||||
with:
|
||||
room_id: ${{ matrix.channel.room }}
|
||||
access_token: ${{ secrets.RELEASENOTES_MATRIX_V2_ACCESS_TOKEN }}
|
||||
server: "m.parity.io"
|
||||
message: |
|
||||
***${{github.event.repository.full_name}}:*** A release has been ${{github.event.action}}<br/>
|
||||
Release version [${{github.event.release.tag_name}}](${{github.event.release.html_url}})
|
||||
|
||||
-----
|
||||
|
||||
${{github.event.release.body}}<br/>
|
||||
-20
@@ -1,20 +0,0 @@
|
||||
# Github action to ensure the `release` tag always tracks latest release
|
||||
|
||||
name: Retag release
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [ published ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Set Git tag
|
||||
uses: s3krit/walking-tag-action@d04f7a53b72ceda4e20283736ce3627011275178 # latest version from master
|
||||
with:
|
||||
tag-name: release
|
||||
tag-message: Latest release
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -1,412 +0,0 @@
|
||||
# .gitlab-ci.yml
|
||||
#
|
||||
# substrate
|
||||
#
|
||||
# pipelines can be triggered manually in the web
|
||||
#
|
||||
# Currently the file is divided into subfiles. Each stage has a different file which
|
||||
# can be found here: scripts/ci/gitlab/pipeline/<stage_name>.yml
|
||||
#
|
||||
# Instead of YAML anchors "extends" is used.
|
||||
# Useful links:
|
||||
# https://docs.gitlab.com/ee/ci/yaml/index.html#extends
|
||||
# https://docs.gitlab.com/ee/ci/yaml/yaml_optimization.html#reference-tags
|
||||
#
|
||||
# SAMPLE JOB TEMPLATE - This is not a complete example but is enough to build a
|
||||
# simple CI job. For full documentation, visit https://docs.gitlab.com/ee/ci/yaml/
|
||||
#
|
||||
# my-example-job:
|
||||
# stage: test # One of the stages listed below this job (required)
|
||||
# image: paritytech/tools:latest # Any docker image (required)
|
||||
# allow_failure: true # Allow the pipeline to continue if this job fails (default: false)
|
||||
# needs:
|
||||
# - job: test-linux # Any jobs that are required to run before this job (optional)
|
||||
# variables:
|
||||
# MY_ENVIRONMENT_VARIABLE: "some useful value" # Environment variables passed to the job (optional)
|
||||
# script:
|
||||
# - echo "List of shell commands to run in your job"
|
||||
# - echo "You can also just specify a script here, like so:"
|
||||
# - ./scripts/ci/gitlab/my_amazing_script.sh
|
||||
|
||||
stages:
|
||||
- check
|
||||
- test
|
||||
- build
|
||||
- publish
|
||||
- notify
|
||||
- zombienet
|
||||
- deploy
|
||||
|
||||
workflow:
|
||||
rules:
|
||||
- if: $CI_COMMIT_TAG
|
||||
- if: $CI_COMMIT_BRANCH
|
||||
|
||||
variables:
|
||||
GIT_STRATEGY: fetch
|
||||
GIT_DEPTH: 100
|
||||
CARGO_INCREMENTAL: 0
|
||||
DOCKER_OS: "debian:bullseye"
|
||||
ARCH: "x86_64"
|
||||
CI_IMAGE: !reference [.ci-unified, variables, CI_IMAGE]
|
||||
BUILDAH_IMAGE: "quay.io/buildah/stable:v1.29"
|
||||
BUILDAH_COMMAND: "buildah --storage-driver overlay2"
|
||||
RELENG_SCRIPTS_BRANCH: "master"
|
||||
|
||||
RUSTY_CACHIER_SINGLE_BRANCH: master
|
||||
RUSTY_CACHIER_DONT_OPERATE_ON_MAIN_BRANCH: "true"
|
||||
RUSTY_CACHIER_MINIO_ALIAS: rustycachier_gcs
|
||||
RUSTY_CACHIER_MINIO_BUCKET: parity-build-rusty-cachier
|
||||
RUSTY_CACHIER_COMPRESSION_METHOD: zstd
|
||||
|
||||
NEXTEST_FAILURE_OUTPUT: immediate-final
|
||||
NEXTEST_SUCCESS_OUTPUT: final
|
||||
ZOMBIENET_IMAGE: "docker.io/paritytech/zombienet:v1.3.55"
|
||||
|
||||
default:
|
||||
retry:
|
||||
max: 2
|
||||
when:
|
||||
- runner_system_failure
|
||||
- unknown_failure
|
||||
- api_failure
|
||||
cache: {}
|
||||
interruptible: true
|
||||
|
||||
.collect-artifacts:
|
||||
artifacts:
|
||||
name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
|
||||
when: on_success
|
||||
expire_in: 7 days
|
||||
paths:
|
||||
- artifacts/
|
||||
|
||||
.collect-artifacts-short:
|
||||
artifacts:
|
||||
name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
|
||||
when: on_success
|
||||
expire_in: 3 hours
|
||||
paths:
|
||||
- artifacts/
|
||||
|
||||
.prepare-env:
|
||||
before_script:
|
||||
# TODO: remove unset invocation when we'll be free from 'ENV RUSTC_WRAPPER=sccache' & sccache
|
||||
# itself in all images
|
||||
- unset RUSTC_WRAPPER
|
||||
# $WASM_BUILD_WORKSPACE_HINT enables wasm-builder to find the Cargo.lock from within generated
|
||||
# packages
|
||||
- export WASM_BUILD_WORKSPACE_HINT="$PWD"
|
||||
# ensure that RUSTFLAGS are set correctly
|
||||
- echo $RUSTFLAGS
|
||||
|
||||
.job-switcher:
|
||||
before_script:
|
||||
- if echo "$CI_DISABLED_JOBS" | grep -xF "$CI_JOB_NAME"; then echo "The job has been cancelled in CI settings"; exit 0; fi
|
||||
|
||||
.kubernetes-env:
|
||||
image: "${CI_IMAGE}"
|
||||
before_script:
|
||||
- !reference [.timestamp, before_script]
|
||||
- !reference [.job-switcher, before_script]
|
||||
- !reference [.prepare-env, before_script]
|
||||
tags:
|
||||
- kubernetes-parity-build
|
||||
|
||||
.rust-info-script:
|
||||
script:
|
||||
- rustup show
|
||||
- cargo --version
|
||||
- rustup +nightly show
|
||||
- cargo +nightly --version
|
||||
|
||||
.pipeline-stopper-vars:
|
||||
script:
|
||||
- !reference [.job-switcher, before_script]
|
||||
- echo "Collecting env variables for the cancel-pipeline job"
|
||||
- echo "FAILED_JOB_URL=${CI_JOB_URL}" > pipeline-stopper.env
|
||||
- echo "FAILED_JOB_NAME=${CI_JOB_NAME}" >> pipeline-stopper.env
|
||||
- echo "PR_NUM=${CI_COMMIT_REF_NAME}" >> pipeline-stopper.env
|
||||
|
||||
.pipeline-stopper-artifacts:
|
||||
artifacts:
|
||||
reports:
|
||||
dotenv: pipeline-stopper.env
|
||||
|
||||
.docker-env:
|
||||
image: "${CI_IMAGE}"
|
||||
before_script:
|
||||
- !reference [.timestamp, before_script]
|
||||
- !reference [.job-switcher, before_script]
|
||||
- !reference [.prepare-env, before_script]
|
||||
- !reference [.rust-info-script, script]
|
||||
- !reference [.rusty-cachier, before_script]
|
||||
- !reference [.pipeline-stopper-vars, script]
|
||||
after_script:
|
||||
- !reference [.rusty-cachier, after_script]
|
||||
tags:
|
||||
- linux-docker-vm-c2
|
||||
|
||||
# rusty-cachier's hidden job. Parts of this job are used to instrument the pipeline's other real jobs with rusty-cachier
|
||||
# Description of the commands is available here - https://gitlab.parity.io/parity/infrastructure/ci_cd/rusty-cachier/client#description
|
||||
.rusty-cachier:
|
||||
before_script:
|
||||
- curl -s https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.parity.io/parity/infrastructure/ci_cd/rusty-cachier/client/-/raw/release/util/install.sh | bash
|
||||
- rusty-cachier environment check --gracefully
|
||||
- $(rusty-cachier environment inject)
|
||||
- rusty-cachier project mtime
|
||||
after_script:
|
||||
- env RUSTY_CACHIER_SUPRESS_OUTPUT=true rusty-cachier snapshot destroy
|
||||
|
||||
.test-refs:
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "web"
|
||||
- if: $CI_PIPELINE_SOURCE == "schedule"
|
||||
- if: $CI_COMMIT_REF_NAME == "master"
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1
|
||||
|
||||
# handle the specific case where benches could store incorrect bench data because of the downstream staging runs
|
||||
# exclude cargo-check-benches from such runs
|
||||
.test-refs-check-benches:
|
||||
rules:
|
||||
- if: $CI_COMMIT_REF_NAME == "master" && $CI_PIPELINE_SOURCE == "pipeline" && $CI_IMAGE =~ /staging$/
|
||||
when: never
|
||||
- if: $CI_PIPELINE_SOURCE == "web"
|
||||
- if: $CI_PIPELINE_SOURCE == "schedule"
|
||||
- if: $CI_COMMIT_REF_NAME == "master"
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1
|
||||
|
||||
.test-refs-no-trigger:
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "pipeline"
|
||||
when: never
|
||||
- if: $CI_PIPELINE_SOURCE == "web"
|
||||
- if: $CI_PIPELINE_SOURCE == "schedule"
|
||||
- if: $CI_COMMIT_REF_NAME == "master"
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^ci-release-.*$/
|
||||
|
||||
.test-refs-no-trigger-prs-only:
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "pipeline"
|
||||
when: never
|
||||
- if: $CI_PIPELINE_SOURCE == "web"
|
||||
- if: $CI_PIPELINE_SOURCE == "schedule"
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
|
||||
|
||||
.publish-refs:
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "pipeline"
|
||||
when: never
|
||||
- if: $CI_PIPELINE_SOURCE == "web"
|
||||
- if: $CI_PIPELINE_SOURCE == "schedule"
|
||||
- if: $CI_COMMIT_REF_NAME == "master"
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1
|
||||
|
||||
.build-refs:
|
||||
# publish-refs + PRs
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "pipeline"
|
||||
when: never
|
||||
- if: $CI_PIPELINE_SOURCE == "web"
|
||||
- if: $CI_PIPELINE_SOURCE == "schedule"
|
||||
- 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 =~ /^[0-9]+$/ # PRs
|
||||
|
||||
.zombienet-refs:
|
||||
extends: .build-refs
|
||||
|
||||
.crates-publishing-variables:
|
||||
variables:
|
||||
CRATESIO_CRATES_OWNER: parity-crate-owner
|
||||
REPO: substrate
|
||||
REPO_OWNER: paritytech
|
||||
|
||||
.crates-publishing-pipeline:
|
||||
extends: .crates-publishing-variables
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "schedule" && $CI_COMMIT_REF_NAME == "master" && $PIPELINE == "automatic-crate-publishing"
|
||||
|
||||
.crates-publishing-template:
|
||||
extends:
|
||||
- .docker-env
|
||||
- .crates-publishing-variables
|
||||
# collect artifacts even on failure so that we know how the crates were generated (they'll be
|
||||
# generated to the artifacts folder according to SPUB_TMP further down)
|
||||
artifacts:
|
||||
name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
|
||||
when: always
|
||||
expire_in: 7 days
|
||||
paths:
|
||||
- artifacts/
|
||||
variables:
|
||||
SPUB_TMP: artifacts
|
||||
# disable timestamping for the crate publishing jobs, they leave stray child processes behind
|
||||
# which don't interact well with the timestamping script
|
||||
CI_DISABLE_TIMESTAMP: 1
|
||||
|
||||
#### stage: .pre
|
||||
|
||||
check-crates-publishing-pipeline:
|
||||
stage: .pre
|
||||
extends:
|
||||
- .kubernetes-env
|
||||
- .crates-publishing-pipeline
|
||||
script:
|
||||
- git clone
|
||||
--depth 1
|
||||
--branch "$RELENG_SCRIPTS_BRANCH"
|
||||
https://github.com/paritytech/releng-scripts.git
|
||||
- ONLY_CHECK_PIPELINE=true ./releng-scripts/publish-crates
|
||||
|
||||
# By default our pipelines are interruptible, but some special pipelines shouldn't be interrupted:
|
||||
# * multi-project pipelines such as the ones triggered by the scripts repo
|
||||
# * the scheduled automatic-crate-publishing pipeline
|
||||
#
|
||||
# In those cases, we add an uninterruptible .pre job; once that one has started,
|
||||
# the entire pipeline becomes uninterruptible
|
||||
uninterruptible-pipeline:
|
||||
extends: .kubernetes-env
|
||||
variables:
|
||||
CI_IMAGE: "paritytech/tools:latest"
|
||||
stage: .pre
|
||||
interruptible: false
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "pipeline"
|
||||
- if: $CI_PIPELINE_SOURCE == "schedule" && $PIPELINE == "automatic-crate-publishing"
|
||||
script: "true"
|
||||
|
||||
include:
|
||||
# check jobs
|
||||
- scripts/ci/gitlab/pipeline/check.yml
|
||||
# tests jobs
|
||||
- scripts/ci/gitlab/pipeline/test.yml
|
||||
# build jobs
|
||||
- scripts/ci/gitlab/pipeline/build.yml
|
||||
# publish jobs
|
||||
- scripts/ci/gitlab/pipeline/publish.yml
|
||||
# zombienet jobs
|
||||
- scripts/ci/gitlab/pipeline/zombienet.yml
|
||||
# The crate-publishing pipeline requires a customized `interruptible` configuration. Unfortunately
|
||||
# `interruptible` can't currently be dynamically set based on variables as per:
|
||||
# - https://gitlab.com/gitlab-org/gitlab/-/issues/38349
|
||||
# - https://gitlab.com/gitlab-org/gitlab/-/issues/194023
|
||||
# Thus we work around that limitation by using conditional includes.
|
||||
# For crate-publishing pipelines: run it with defaults + `interruptible: false`. The WHOLE
|
||||
# pipeline is made uninterruptible to ensure that test jobs also get a chance to run to
|
||||
# completion, because the publishing jobs depends on them AS INTENDED: crates should not be
|
||||
# published before their source code is checked.
|
||||
- project: parity/infrastructure/ci_cd/shared
|
||||
ref: main
|
||||
file: /common/timestamp.yml
|
||||
- project: parity/infrastructure/ci_cd/shared
|
||||
ref: main
|
||||
file: /common/ci-unified.yml
|
||||
|
||||
|
||||
#### stage: notify
|
||||
|
||||
# This job notifies rusty-cachier about the latest commit with the cache.
|
||||
# This info is later used for the cache distribution and an overlay creation.
|
||||
# Note that we don't use any .rusty-cachier references as we assume that a pipeline has reached this stage with working rusty-cachier.
|
||||
rusty-cachier-notify:
|
||||
stage: notify
|
||||
extends: .kubernetes-env
|
||||
variables:
|
||||
CI_IMAGE: paritytech/rusty-cachier-env:latest
|
||||
GIT_STRATEGY: none
|
||||
dependencies: []
|
||||
script:
|
||||
- curl -s https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.parity.io/parity/infrastructure/ci_cd/rusty-cachier/client/-/raw/release/util/install.sh | bash
|
||||
- rusty-cachier cache notify
|
||||
|
||||
#### stage: .post
|
||||
|
||||
# This job cancels the whole pipeline if any of provided jobs fail.
|
||||
# In a DAG, every jobs chain is executed independently of others. The `fail_fast` principle suggests
|
||||
# to fail the pipeline as soon as possible to shorten the feedback loop.
|
||||
.cancel-pipeline-template:
|
||||
stage: .post
|
||||
rules:
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
|
||||
when: on_failure
|
||||
variables:
|
||||
PROJECT_ID: "${CI_PROJECT_ID}"
|
||||
PROJECT_NAME: "${CI_PROJECT_NAME}"
|
||||
PIPELINE_ID: "${CI_PIPELINE_ID}"
|
||||
FAILED_JOB_URL: "${FAILED_JOB_URL}"
|
||||
FAILED_JOB_NAME: "${FAILED_JOB_NAME}"
|
||||
PR_NUM: "${PR_NUM}"
|
||||
trigger:
|
||||
project: "parity/infrastructure/ci_cd/pipeline-stopper"
|
||||
|
||||
remove-cancel-pipeline-message:
|
||||
stage: .post
|
||||
rules:
|
||||
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
|
||||
variables:
|
||||
PROJECT_ID: "${CI_PROJECT_ID}"
|
||||
PROJECT_NAME: "${CI_PROJECT_NAME}"
|
||||
PIPELINE_ID: "${CI_PIPELINE_ID}"
|
||||
FAILED_JOB_URL: "https://gitlab.com"
|
||||
FAILED_JOB_NAME: "nope"
|
||||
PR_NUM: "${CI_COMMIT_REF_NAME}"
|
||||
trigger:
|
||||
project: "parity/infrastructure/ci_cd/pipeline-stopper"
|
||||
branch: "as-improve"
|
||||
|
||||
# need to copy jobs this way because otherwise gitlab will wait
|
||||
# for all 3 jobs to finish instead of cancelling if one fails
|
||||
cancel-pipeline-test-linux-stable1:
|
||||
extends: .cancel-pipeline-template
|
||||
needs:
|
||||
- job: "test-linux-stable 1/3"
|
||||
|
||||
cancel-pipeline-test-linux-stable2:
|
||||
extends: .cancel-pipeline-template
|
||||
needs:
|
||||
- job: "test-linux-stable 2/3"
|
||||
|
||||
cancel-pipeline-test-linux-stable3:
|
||||
extends: .cancel-pipeline-template
|
||||
needs:
|
||||
- job: "test-linux-stable 3/3"
|
||||
|
||||
cancel-pipeline-cargo-check-benches1:
|
||||
extends: .cancel-pipeline-template
|
||||
needs:
|
||||
- job: "cargo-check-benches 1/2"
|
||||
|
||||
cancel-pipeline-cargo-check-benches2:
|
||||
extends: .cancel-pipeline-template
|
||||
needs:
|
||||
- job: "cargo-check-benches 2/2"
|
||||
|
||||
cancel-pipeline-test-linux-stable-int:
|
||||
extends: .cancel-pipeline-template
|
||||
needs:
|
||||
- job: test-linux-stable-int
|
||||
|
||||
cancel-pipeline-cargo-check-each-crate-1:
|
||||
extends: .cancel-pipeline-template
|
||||
needs:
|
||||
- job: "cargo-check-each-crate 1/2"
|
||||
|
||||
cancel-pipeline-cargo-check-each-crate-2:
|
||||
extends: .cancel-pipeline-template
|
||||
needs:
|
||||
- job: "cargo-check-each-crate 2/2"
|
||||
|
||||
cancel-pipeline-cargo-check-each-crate-macos:
|
||||
extends: .cancel-pipeline-template
|
||||
needs:
|
||||
- job: cargo-check-each-crate-macos
|
||||
|
||||
cancel-pipeline-check-tracing:
|
||||
extends: .cancel-pipeline-template
|
||||
needs:
|
||||
- job: check-tracing
|
||||
Reference in New Issue
Block a user