From 080772cafdc95ba577687e5de071549d61f7342b Mon Sep 17 00:00:00 2001 From: skudasov Date: Wed, 18 Mar 2026 10:39:21 +0100 Subject: [PATCH 1/5] fix summary, doc fixes --- book/src/framework/compat.md | 28 +++++++--------------------- framework/compat.go | 10 ++++++---- 2 files changed, 13 insertions(+), 25 deletions(-) diff --git a/book/src/framework/compat.md b/book/src/framework/compat.md index 5ba57f39a..8a62db0b8 100644 --- a/book/src/framework/compat.md +++ b/book/src/framework/compat.md @@ -10,7 +10,7 @@ Compatibility testing verifies that your product remains functional when Chainli 3. Boot environment with the oldest image → run tests (baseline) 4. For each next version: a. Pull the new Docker image - b. Upgrade N nodes (stop container, swap image, restart — DB volumes preserved) + b. Upgrade N nodes (stop container, swap image, restart — node DB volumes preserved) c. Run tests again (mixed-version cluster) 5. Repeat until the latest version is fully deployed and tested ``` @@ -37,12 +37,12 @@ Add the following secrets to your repository (`Settings → Secrets and variable |---|---|---| | `PRODUCT_IAM_ROLE` | ARN of the IAM role that grants ECR pull access. Name it with your product name, for example CCV_IAM_ROLE | `arn:aws:iam:::role/gha-smartcontractkit-` | | `JD_REGISTRY` | Private ECR registry ID for JD images | `.dkr.ecr.us-west-2.amazonaws.com` | -| `JD_IMAGE` | Full JD image reference (used by your environment config) | `.dkr.ecr.us-west-2.amazonaws.com/job-distributor:0.12.7` | +| `JD_IMAGE` | Full JD image reference (used by your environment config) | `.dkr.ecr.us-west-2.amazonaws.com/job-distributor:0.22.1` | Using the GitHub CLI: ```bash -gh secret set CCV_IAM_ROLE # paste the IAM role ARN +gh secret set PRODUCT_IAM_ROLE # paste the IAM role ARN gh secret set JD_REGISTRY # paste the JD registry URL gh secret set JD_IMAGE # paste the JD image reference ``` @@ -62,14 +62,14 @@ The workflow performs the following on each run: - name: Authenticate to AWS ECR uses: ./.github/actions/aws-ecr-auth with: - role-to-assume: ${{ secrets.CCV_IAM_ROLE }} + role-to-assume: ${{ secrets.PRODUCT_IAM_ROLE }} aws-region: us-east-1 registry-type: public - name: Authenticate to AWS ECR (JD) uses: ./.github/actions/aws-ecr-auth with: - role-to-assume: ${{ secrets.CCV_IAM_ROLE }} + role-to-assume: ${{ secrets.PRODUCT_IAM_ROLE }} aws-region: us-west-2 registry-type: private registries: ${{ secrets.JD_REGISTRY }} @@ -90,23 +90,9 @@ The workflow performs the following on each run: ### Step 4 — Add a Nightly Trigger -Compatibility tests are typically run on a nightly schedule rather than on every PR. Add a nightly workflow (or a separate trigger in the same file) that points to your product configuration: +Compatibility tests are typically run on a nightly schedule rather than on every PR. Add a nightly workflow that points to your product configuration: -```yaml -# .github/workflows/devenv-nightly-compat.yml -on: - schedule: - - cron: '0 6 * * *' # 06:00 UTC every night, after the nightly CL image is built - workflow_dispatch: # allow manual runs - -jobs: - compat: - uses: ./.github/workflows/devenv-compat.yml - secrets: inherit - with: -``` - -See the [chainlink nightly example](https://github.com/smartcontractkit/chainlink/blob/sot-upgrade-workflow/.github/workflows/devenv-nightly-compat.yml#L42) for a complete reference. +See the [chainlink nightly example](https://github.com/smartcontractkit/chainlink/blob/develop/.github/workflows/devenv-nightly-compat.yml#L42) for a complete reference. ### Step 5 — Write Your Compatibility Tests diff --git a/framework/compat.go b/framework/compat.go index e1e192243..16f39b5b4 100644 --- a/framework/compat.go +++ b/framework/compat.go @@ -47,13 +47,14 @@ type UpgradeContext struct { type UpgradeNRollingSummaryTemplate struct { Total int Earliest string + Latest string Sequence []string } // WriteRollingNUpgradeSummary renders an upgrade summary and writes it to ci_summary.txt func WriteRollingNUpgradeSummary(tmpl UpgradeNRollingSummaryTemplate) error { r, err := RenderTemplate(` -Testing upgrade sequence for previous versions: +Testing upgrade sequence to {{.Latest}} from previous versions: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ {{- range .Sequence}} • {{.}} @@ -79,7 +80,7 @@ type UpgradeSOTDONSummary struct { // WriteSOTDONUpgradeSummary renders an upgrade summary and writes it to ci_summary.txt func WriteSOTDONUpgradeSummary(tmpl UpgradeSOTDONSummary) error { r, err := RenderTemplate(` -Testing upgrade sequence for DON versions from RANE SOT, for product {{.ProductName}}: +Testing upgrade sequence to {{.Latest}} for DON versions from RANE SOT, for product {{.ProductName}}: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ {{- range $index, $version := .Sequence}} • {{$version}} @@ -158,7 +159,7 @@ func UpgradeNProductUniqueVersionsRolling(ctx context.Context, u UpgradeContext) DONSize: u.DonNodes, Earliest: u.Refs[0], Latest: u.Refs[len(u.Refs)-1], - Sequence: u.Refs, + Sequence: u.Refs[:len(u.Refs)-1], SequenceChunks: donRefs, }, ); err != nil { @@ -224,7 +225,8 @@ func UpgradeNRolling(ctx context.Context, u UpgradeContext) error { UpgradeNRollingSummaryTemplate{ Total: len(u.Refs), Earliest: u.Refs[0], - Sequence: u.Refs, + Latest: u.Refs[len(u.Refs)-1], + Sequence: u.Refs[:len(u.Refs)-1], }, ); err != nil { return err From eeed3a5c73f1d95d6fd412e8990437c6ea0a3d88 Mon Sep 17 00:00:00 2001 From: skudasov Date: Wed, 18 Mar 2026 10:40:16 +0100 Subject: [PATCH 2/5] changelog --- framework/.changeset/v0.15.7.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 framework/.changeset/v0.15.7.md diff --git a/framework/.changeset/v0.15.7.md b/framework/.changeset/v0.15.7.md new file mode 100644 index 000000000..c72b7f6ef --- /dev/null +++ b/framework/.changeset/v0.15.7.md @@ -0,0 +1 @@ +- Compat testing summary update From 8cbd564b14dddc66a1c79ec22179563f54939fd1 Mon Sep 17 00:00:00 2001 From: skudasov Date: Wed, 18 Mar 2026 10:42:40 +0100 Subject: [PATCH 3/5] fix --- book/src/framework/compat.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/src/framework/compat.md b/book/src/framework/compat.md index 8a62db0b8..ae11d299e 100644 --- a/book/src/framework/compat.md +++ b/book/src/framework/compat.md @@ -49,7 +49,7 @@ gh secret set JD_IMAGE # paste the JD image reference ### Step 3 — Copy the Compat Pipeline -Copy `devenv-compat.yml` from [chainlink/sot-upgrade-workflow](https://github.com/smartcontractkit/chainlink/blob/sot-upgrade-workflow/.github/workflows/devenv-compat.yml) into your repository at `.github/workflows/devenv-compat.yml`. +Copy `devenv-compat.yml` from [chainlink](https://github.com/smartcontractkit/chainlink/blob/develop/.github/workflows/devenv-compat.yml) into your repository at `.github/workflows/devenv-compat.yml`. The workflow performs the following on each run: From 25d1b387bb17537dd45917634a899691fccfa8da Mon Sep 17 00:00:00 2001 From: skudasov Date: Wed, 18 Mar 2026 10:48:04 +0100 Subject: [PATCH 4/5] trigger docs build --- .github/workflows/docs.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index c9a206a35..dfaa34d49 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -3,10 +3,11 @@ name: GH Pages Deploy (Docs, mdbook) on: push: - branches: - - main - tags: - - '*' + # push: + # branches: + # - main + # tags: + # - '*' jobs: build-deploy: From 9c1045569106875f6142d51cb420ea7dfd9900ce Mon Sep 17 00:00:00 2001 From: skudasov Date: Wed, 18 Mar 2026 10:50:41 +0100 Subject: [PATCH 5/5] undo --- .github/workflows/docs.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index dfaa34d49..c9a206a35 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -3,11 +3,10 @@ name: GH Pages Deploy (Docs, mdbook) on: push: - # push: - # branches: - # - main - # tags: - # - '*' + branches: + - main + tags: + - '*' jobs: build-deploy: