From 0b3f41e0f9538187b32cd320548fefde25936e2e Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Molins Date: Thu, 23 Jul 2026 15:29:03 +0200 Subject: [PATCH 1/8] docs(backport): document checklist comment and remove stale screenshot Add a new "Backport checklist comment" section to developer-workflow-support-old-package.md explaining when the post-backport-checklist workflow posts a comment, what it shows, that it is currently informational only (no checkboxes yet), and how to suppress a branch via `archived` or `maintained_until` in .backports.yml. Remove the orphaned backport_input_step.png screenshot, which was no longer referenced by any documentation page. Co-Authored-By: Claude Sonnet 4.6 --- .../developer-workflow-support-old-package.md | 37 ++++++++++++++++++ docs/extend/images/backport_input_step.png | Bin 32197 -> 0 bytes 2 files changed, 37 insertions(+) delete mode 100644 docs/extend/images/backport_input_step.png diff --git a/docs/extend/developer-workflow-support-old-package.md b/docs/extend/developer-workflow-support-old-package.md index 67c605709ed..ea7221133c1 100644 --- a/docs/extend/developer-workflow-support-old-package.md +++ b/docs/extend/developer-workflow-support-old-package.md @@ -154,6 +154,43 @@ Sometimes, when we drop the support for an earlier version of the stack and late In order to keep track, this new PR should have a reference (relates) to the backport PR too in its description. +## Backport checklist comment + +When you open or update a pull request targeting `main`, the `post-backport-checklist.yml` workflow automatically posts a comment listing the active backport branches for every package touched by that PR. The comment is updated on every push — any manual edits are overwritten. It only appears when at least one package in the PR's diff has active backport branches in `.backports.yml`. + +Example comment: + +``` +## Backport branches + +> [!IMPORTANT] +> Only branches for packages touched by this PR's current diff are shown. +> This comment is updated automatically on each push — manual edits will be overwritten. + +Active backport branches for the packages touched by this PR: + +**aws** +- `backport-aws-1.19` (maintained until 2025-06-30) +- `backport-aws-6.x` + +--- + +> [!TIP] +> If a branch above is no longer required, set `archived: true` in its entry in `.backports.yml` to stop it appearing here. +> If the branch has a known end-of-life date, prefer `maintained_until: "YYYY-MM-DD"` — it will be excluded automatically once that date passes. +``` + +The comment is currently **informational only** — no checkboxes are rendered and no automation is triggered by it. If you do not intend to backport, you can safely ignore it. + +**Suppressing a branch from the checklist:** + +To stop a branch appearing in the checklist, update its entry in `.backports.yml`: + +- **`archived: true`** — excludes the branch immediately, with no fixed end-of-life date. +- **`maintained_until: "YYYY-MM-DD"`** — excludes the branch automatically once that date passes; preferred when the end-of-life date is known. + +Archiving a branch does not delete it. Packages can still be published from an archived branch; archiving only removes the branch from the checklist and inventory validation. + ## Known issues 1. Missing `elastic-package stack shellinit` in backport branch: diff --git a/docs/extend/images/backport_input_step.png b/docs/extend/images/backport_input_step.png deleted file mode 100644 index 0ff21d04163e447ef78dc5ccb966f4eab3e77933..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32197 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 Date: Thu, 23 Jul 2026 17:14:50 +0200 Subject: [PATCH 2/8] docs(backport): document package owner synchronization (#19686) Add a new "Package owner synchronization" section to developer-workflow-support-old-package.md covering: - Automatic sync during apply: what is synced (manifest.yml owner.github, CODEOWNERS package line and sub-path entries), the separate "Sync package owners from main" commit, no-op behavior when already in sync, and warn-and-continue when main is unreachable or the package has been removed. - check-backport-owners CI step: when it runs (PRs targeting backport-* branches on packages/** or CODEOWNERS changes), the three PR comment outcomes (in-sync / mismatch with team list / check-failed), required author action on mismatch, and that soft_fail: true means a mismatch does not block merge. Co-Authored-By: Claude Sonnet 4.6 --- .../developer-workflow-support-old-package.md | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/extend/developer-workflow-support-old-package.md b/docs/extend/developer-workflow-support-old-package.md index ea7221133c1..b47bd889b7a 100644 --- a/docs/extend/developer-workflow-support-old-package.md +++ b/docs/extend/developer-workflow-support-old-package.md @@ -154,6 +154,31 @@ Sometimes, when we drop the support for an earlier version of the stack and late In order to keep track, this new PR should have a reference (relates) to the backport PR too in its description. +## Package owner synchronization + +Backport branches are created from historical commits, so their `manifest.yml` owner field and `.github/CODEOWNERS` entries may be stale from the start and can drift further as packages change hands on `main`. Because GitHub resolves PR reviewers from the CODEOWNERS on the PR's **base branch**, a stale backport branch notifies the wrong team. + +Two mechanisms keep owners in sync. + +### Automatic sync during apply + +When `backport_apply.sh` (or `mage applyBackport`) creates a backport PR, it automatically syncs the package's owners from `main` as a separate commit on top of the cherry-pick: + +- **What is synced:** the `owner.github` field in `manifest.yml`, the package's own `.github/CODEOWNERS` line, and any sub-path entries nested under the package (data streams, `kibana/` directory, and other subdirectory overrides). +- **Commit message:** `Sync package owners from main` +- **No-op:** if the owners already match `main`, the commit is skipped silently. +- **Warn-and-continue:** if `main` cannot be fetched, or the package no longer exists on `main`, a warning is printed and the apply continues without syncing. The backport PR is still opened; the CI check below surfaces any remaining mismatch. + +### CI check: `check-backport-owners` + +A Buildkite step runs on every pull request targeting a `backport-*` branch (triggered when `packages/**` or `.github/CODEOWNERS` changes) and posts a comment on the PR with one of three outcomes: + +- **✅ In sync** — `Package owners are in sync with main.` No action needed. +- **Mismatch** — `Package owners are out of sync with main:` followed by a list of packages and the team(s) they should now be owned by. Update `manifest.yml` (`owner.github`) and `.github/CODEOWNERS` for each listed package to match the teams shown. +- **Check failed** — `The backport owner check failed to run` with a link to the build log. This is usually a transient network error fetching `main`; re-run the build. + +The step is currently `soft_fail: true` — a mismatch posts a warning comment but does not block merge. + ## Backport checklist comment When you open or update a pull request targeting `main`, the `post-backport-checklist.yml` workflow automatically posts a comment listing the active backport branches for every package touched by that PR. The comment is updated on every push — any manual edits are overwritten. It only appears when at least one package in the PR's diff has active backport branches in `.backports.yml`. From 087a2e2c4b8293d41c799528acb2ce8272a70dd9 Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Molins Date: Thu, 23 Jul 2026 18:14:41 +0200 Subject: [PATCH 3/8] docs(backport): expand .backports.yml field documentation (#19264) Expand the maintained_until and archived field descriptions in the .backports.yml schema table to document their full semantics: maintained_until excludes the branch automatically once the date passes (strictly before today UTC), and is preferred when the end-of-life date is known; archived: true excludes the branch immediately and does not delete it. Also add the previously undocumented remove_other_packages field, explaining its default true behavior and why it exists. Co-Authored-By: Claude Sonnet 4.6 --- docs/extend/developer-workflow-support-old-package.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/extend/developer-workflow-support-old-package.md b/docs/extend/developer-workflow-support-old-package.md index b47bd889b7a..f1f7d6c5cf9 100644 --- a/docs/extend/developer-workflow-support-old-package.md +++ b/docs/extend/developer-workflow-support-old-package.md @@ -126,8 +126,9 @@ Sometimes, when we drop the support for an earlier version of the stack and late * **`branch`** — name of the backport branch to create, following the format `backport--.` * **`base_version`** — the package version to branch from (e.g. `1.19.5`, `1.0.0-beta1`) * **`base_commit`** — the commit SHA found in the previous step - * **`maintained_until`** — set to a `YYYY-MM-DD` date if the branch has a known end-of-life, otherwise `null` - * **`archived`** — set to `false` for a new active branch + * **`maintained_until`** — `null` for a new active branch. Set to a `YYYY-MM-DD` date when the branch has a known end-of-life: the branch is automatically excluded from the checklist and inventory validation once that date passes (strictly before today in UTC). Prefer this over `archived: true` when the end-of-life date is known in advance. + * **`archived`** — `false` for a new active branch. Set to `true` to immediately exclude the branch from the checklist and inventory validation, with no fixed end-of-life date. Archiving does **not** delete the branch — packages can still be published from it; archiving only removes it from automated tooling. + * **`remove_other_packages`** — `true` (default): when the branch is created, all packages other than the target are removed from `packages/`. `false`: all packages are kept. The default of `true` keeps the branch lean and avoids running tests for unrelated packages on every PR. Once the PR is opened, CI automatically: From f56221b542de23955da0ce2059891278046e1075 Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Molins Date: Fri, 24 Jul 2026 11:31:47 +0200 Subject: [PATCH 4/8] docs(ci): document changelog link check and scope backports inventory step MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a note in ci_pipelines.md documenting the check-changelog-pr-links Buildkite step: what it validates (changelog entry links match the PR being merged), that it is soft_fail, and how to skip it via the changelog-link-check:skip label. Explain that the sync-backport-changelog workflow adds this label automatically on sync PRs since their entries intentionally reference the original backport PR. Also clarify that check-backports-inventory runs on PRs targeting main and direct pushes to main only — it is skipped on backport-branch PRs, which carry only a subset of packages. Relates to #19284. Co-Authored-By: Claude Sonnet 4.6 --- docs/ci_pipelines.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/ci_pipelines.md b/docs/ci_pipelines.md index a9e92f6d5da..d0906a6cb6e 100644 --- a/docs/ci_pipelines.md +++ b/docs/ci_pipelines.md @@ -27,6 +27,8 @@ Special comments that can be added in the Pull Request (by Elastic employees): - `/test stack 8.18.0-SNAPSHOT` - `/test stack 9.0.0-SNAPSHOT` +**Changelog link check (`check-changelog-pr-links`):** on pull requests that modify a `changelog.yml` file, a step validates that every changelog entry's linked PR number matches the PR being merged (`soft_fail: true` — a failure posts an annotation but does not block merge). To skip this check on a PR, add the label `changelog-link-check:skip`. This label is added automatically by the `sync-backport-changelog` workflow on changelog sync PRs, because their entries intentionally link to the original backport PR rather than the sync PR itself. + There are some environment variables that can be added into this pipeline to enable customizations: - **FORCE_CHECK_ALL**: If `true`, this forces the CI to check all packages even if those packages have no file updated/added/deleted. Default: `false`. - **STACK_VERSION**: Force the CI steps to spin up a specific Elastic stack version to run the tests. Default: unset. @@ -229,7 +231,7 @@ The pipeline https://buildkite.com/elastic/integrations-backport/ handles this c - **Manually from the UI**: restricted to members of the `ecosystem` Buildkite team. As part of the PR that modifies `.backports.yml`, CI automatically: -- Validates the new inventory schema (`check-backports-inventory` step). +- Validates the new inventory schema (`check-backports-inventory` step). This step runs on PRs targeting `main` and direct pushes to `main` only — it is skipped on PRs targeting `backport-*` branches, which carry only a subset of packages and would fail the validation unnecessarily. - Runs a **dry run** of the branch creation (`trigger-backport-dryrun` step), verifying the commit exists and the branch does not already exist, without pushing anything. By default, the created branch only contains the target package — all other packages in `packages/` are removed to keep the branch lean. From babbf7e23d3a36925c273d46859c427f6c0479e1 Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Molins Date: Fri, 24 Jul 2026 12:19:16 +0200 Subject: [PATCH 5/8] docs(backport): document backport_apply.sh and add changelog version check (#19214) Rewrite step 3 in developer-workflow-support-old-package.md to document backport_apply.sh as the recommended tool: syntax, required/optional arguments, and a numbered description of what it does end-to-end (cherry-pick, version bump, changelog entry with placeholder link, owner sync commit, PR creation, and link fix). Keep the manual cherry-pick as an alternative and preserve the note about subsequent fixes not needing a new branch. Add a forward-looking note about the auto-backport workflow (PR #20197). Add a note to ci_pipelines.md about the coming check-changelog-versions-in-main step, which catches sync collisions on backport-branch PRs before merge. Relates to #19284. Co-Authored-By: Claude Sonnet 4.6 --- docs/ci_pipelines.md | 2 + .../developer-workflow-support-old-package.md | 48 +++++++++++++++++-- 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/docs/ci_pipelines.md b/docs/ci_pipelines.md index d0906a6cb6e..c29f4757b0d 100644 --- a/docs/ci_pipelines.md +++ b/docs/ci_pipelines.md @@ -236,6 +236,8 @@ As part of the PR that modifies `.backports.yml`, CI automatically: By default, the created branch only contains the target package — all other packages in `packages/` are removed to keep the branch lean. +On pull requests targeting a `backport-*` branch, an additional step (`check-changelog-versions-in-main`) verifies that no changelog version introduced by the PR already exists on `main`, catching sync collisions before merge. This step is coming with the auto-backport workflow (PR #20197). + The pipeline can also be triggered manually from the UI (restricted to members of the `ecosystem` team). The following parameters can be configured when triggering manually: - **REMOVE_OTHER_PACKAGES**: If `true`, only the target package is kept in the `packages/` directory; all others are removed. Default: `true`. diff --git a/docs/extend/developer-workflow-support-old-package.md b/docs/extend/developer-workflow-support-old-package.md index f1f7d6c5cf9..f8fceadaead 100644 --- a/docs/extend/developer-workflow-support-old-package.md +++ b/docs/extend/developer-workflow-support-old-package.md @@ -141,13 +141,53 @@ Sometimes, when we drop the support for an earlier version of the stack and late 3. **Create a PR for the bug fix** - Create a new branch in your own remote (it is advised **not to use** a branch name starting with `backport-`), and apply bugfixes there. Remember to update the version in the package manifest (update patch version like `1.19.`) and add a new changelog entry for this patch version. + **Recommended: use `backport_apply.sh`** - Once ready, open a PR selecting as a base branch the one created above: `backport--.` (e.g. `backport-aws-1.19`). + `backport_apply.sh` handles the entire process: cherry-picking the commit, bumping the patch version, writing the changelog entry, syncing package owners, and opening a PR. - Once this PR is merged, this new version of the package is going to be published automatically following the usual CI/CD jobs. Wait for the package to appear in the [Elastic Package Registry](https://epr.elastic.co/) before proceeding to the next step. + ```bash + dev/scripts/backport_apply.sh \ + --sha \ + --package \ + --target \ + --open-pr + ``` + + Required arguments: + + | Argument | Description | + |----------|-------------| + | `--sha` | Merge commit SHA on `main` to cherry-pick (minimum 8 characters; from step 1). | + | `--package` | Package name as it appears in `manifest.yml`. | + | `--target` | Version series (e.g. `6.14`) or full branch name (e.g. `backport-aws-6.14`); the branch name is derived automatically from the version series. | + + Common optional flags: + + | Flag | Description | + |------|-------------| + | `--open-pr` | Create a GitHub PR after pushing the working branch. | + | `--dry-run` | Commit locally and skip push and PR creation; use to review the result before opening a PR. | + + What the script does, in order: + + 1. Fetches the backport branch and creates a local working branch (`auto-backport/--`). + 2. Cherry-picks ``, auto-resolving version-only conflicts in `manifest.yml`; restores `changelog.yml` to HEAD (it is regenerated in the next step). + 3. Bumps the patch version in `manifest.yml` and inserts a new `changelog.yml` entry (with a placeholder link that is fixed after the PR is opened). + 4. Syncs package owners from `main` as a separate commit — see [Package owner synchronization](#package-owner-synchronization). + 5. Pushes the working branch and opens a PR against the backport branch (with `--open-pr`). + 6. Replaces the placeholder link in `changelog.yml` with the real backport PR URL and pushes a second `Fix changelog link to backport PR` commit. + + If the cherry-pick conflicts on files beyond a version-line difference in `manifest.yml`, the script reports the conflicting files and cleans up. In this case, apply the fix manually (see the alternative path below). + + > **Coming soon:** once the auto-backport workflow lands, checking a branch checkbox in the backport checklist comment will trigger the same process automatically on merge — no manual invocation of `backport_apply.sh` needed. The script remains useful for ad-hoc backports and retries. + + **Alternative: manual cherry-pick** + + Create a new branch in your own remote (do **not** use a name starting with `backport-`), apply the bug fix, bump the patch version in `manifest.yml`, and add a `changelog.yml` entry. Open a PR targeting the backport branch. + + Once this PR is merged, the new version of the package is published automatically. Wait for it to appear in the [Elastic Package Registry](https://epr.elastic.co/) before proceeding to the next step. - If it is needed to release a new fix for that version, there is no need to create a new branch. Just create a new PR to merge a new branch onto the same backport branch created previously. + For subsequent fixes to the same version, no new branch is needed — open a new PR against the same backport branch. 4. **Update changelog in main** From 15c49c87a9a64b687aed38afe24dcde1f5524f53 Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Molins Date: Fri, 24 Jul 2026 12:32:59 +0200 Subject: [PATCH 6/8] docs(backport): changelog sync to main is now automatic (#19215) Co-Authored-By: Claude Sonnet 4.6 --- docs/extend/developer-workflow-support-old-package.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/extend/developer-workflow-support-old-package.md b/docs/extend/developer-workflow-support-old-package.md index f8fceadaead..035144abb17 100644 --- a/docs/extend/developer-workflow-support-old-package.md +++ b/docs/extend/developer-workflow-support-old-package.md @@ -191,9 +191,12 @@ Sometimes, when we drop the support for an earlier version of the stack and late 4. **Update changelog in main** - Once PR has been merged in the corresponding backport branch (e.g. `backport-aws-1.19`) and the package has been published, a new Pull Request should be created manually to update the changelog in the main branch to include the new version published in the backport branch. Make sure to add the changelog entry following the version order. + This step is handled automatically. When a backport PR is merged, the `sync-backport-changelog.yml` workflow fires and opens a PR against `main` that adds the new changelog entry for the backport version. The sync PR is created with two labels: - In order to keep track, this new PR should have a reference (relates) to the backport PR too in its description. + - `backport:sync-changelog` — identifies it as an automated sync PR. + - `changelog-link-check:skip` — skips the changelog link validation (the entry's link points to the backport PR, not the sync PR itself). + + After the workflow runs, a comment is posted on the merged backport PR linking to the sync PR or reporting a failure. No manual action is needed. ## Package owner synchronization From 19b11b6f9bf06141f0c1d55fa78a1ed2271d0c1a Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Molins Date: Fri, 24 Jul 2026 15:58:32 +0200 Subject: [PATCH 7/8] docs(ci): add integrations-backport-dispatch pipeline (#19211) Co-Authored-By: Claude Sonnet 4.6 --- docs/ci_pipelines.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/ci_pipelines.md b/docs/ci_pipelines.md index c29f4757b0d..f0d4e32456c 100644 --- a/docs/ci_pipelines.md +++ b/docs/ci_pipelines.md @@ -2,13 +2,14 @@ This section describes the CI pipelines available in this repository. -Currently, there are six different pipelines: +Currently, there are seven different pipelines: - https://buildkite.com/elastic/integrations: pipeline in charge of testing all packages using a local Elastic stack. More info at [section](#pull-requests-and-pushes-to-specific-branches). - https://buildkite.com/elastic/integrations-serverless: pipeline in charge of testing all packages using an Elastic Serverless project. More info at [section](#serverless-pipeline). - https://buildkite.com/elastic/integrations-publish: pipeline to publish the new versions of packages. More info at [section](#publish-packages). - https://buildkite.com/elastic/integrations-schedule-daily/: pipeline running every night to test packages in different scenarios. More info at [section](#daily-job). - https://buildkite.com/elastic/integrations-schedule-weekly/: pipeline running once per week to test packages in different scenarios. More info at [section](#weekly-job). -- https://buildkite.com/elastic/integrations-backport/: pipeline to create backport branches. Triggered automatically when a new entry is merged into `.backports.yml`, or manually from the UI by members of the `ecosystem` team. More info at [section](#backport-branches-pipeline). +- https://buildkite.com/elastic/integrations-backport/: pipeline to create backport branches. Triggered automatically by the dispatch pipeline when a new entry is merged into `.backports.yml`, or manually from the UI by members of the `ecosystem` team. More info at [section](#backport-branches-pipeline). +- `integrations-backport-dispatch` (private): dedicated private pipeline that triggers `integrations-backport` on merges to `main` where `.backports.yml` changed. More info at [section](#backport-branches-pipeline). ## Pull Requests and pushes to specific branches @@ -227,11 +228,13 @@ be used in each pipeline are detailed in the corresponding sections of each pipe Releasing hotfixes from earlier versions of packages requires creating `backport-*` branches from specific commits in the `main` branch. The pipeline https://buildkite.com/elastic/integrations-backport/ handles this creation and can be triggered in two ways: -- **Automatically (recommended)**: when a PR adding a new entry to `.backports.yml` is merged into `main`, the `integrations` pipeline detects the change and triggers the backport pipeline automatically. A comment is posted on the merged PR reporting success or failure of the branch creation. +- **Automatically (recommended)**: when a PR adding a new entry to `.backports.yml` is merged into `main`, the private `integrations-backport-dispatch` pipeline detects the change and triggers `integrations-backport` to create the branch. A comment is posted on the merged PR reporting success or failure of the branch creation. - **Manually from the UI**: restricted to members of the `ecosystem` Buildkite team. +The `integrations-backport-dispatch` private pipeline is responsible for triggering branch creation on pushes to `main`. This split from the public `integrations` pipeline exists because Buildkite restricts public pipelines from triggering private pipelines in certain scenarios (fork builds, specific webhook configurations) — a dedicated private dispatch pipeline eliminates that failure mode. As a safeguard, `trigger_backport.sh` exits with an error if branch creation is attempted from any pipeline other than `integrations-backport-dispatch`. + As part of the PR that modifies `.backports.yml`, CI automatically: -- Validates the new inventory schema (`check-backports-inventory` step). This step runs on PRs targeting `main` and direct pushes to `main` only — it is skipped on PRs targeting `backport-*` branches, which carry only a subset of packages and would fail the validation unnecessarily. +- Validates the new inventory schema (`check-backports-inventory` step). In the public `integrations` pipeline this step runs on PRs targeting `main` only — it is skipped on PRs targeting `backport-*` branches, which carry only a subset of packages and would fail the validation unnecessarily. On pushes to `main`, the `integrations-backport-dispatch` pipeline runs its own validation before triggering branch creation. - Runs a **dry run** of the branch creation (`trigger-backport-dryrun` step), verifying the commit exists and the branch does not already exist, without pushing anything. By default, the created branch only contains the target package — all other packages in `packages/` are removed to keep the branch lean. From e76316dda2d60035f17c120667a003e55f6b3d36 Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Molins Date: Fri, 24 Jul 2026 17:34:22 +0200 Subject: [PATCH 8/8] =?UTF-8?q?docs(backport):=20fix=20review=20findings?= =?UTF-8?q?=20=E2=80=94=20field=20semantics=20and=20stale=20example=20date?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- docs/ci_pipelines.md | 2 +- .../extend/developer-workflow-support-old-package.md | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/ci_pipelines.md b/docs/ci_pipelines.md index f0d4e32456c..42e9ea26522 100644 --- a/docs/ci_pipelines.md +++ b/docs/ci_pipelines.md @@ -239,7 +239,7 @@ As part of the PR that modifies `.backports.yml`, CI automatically: By default, the created branch only contains the target package — all other packages in `packages/` are removed to keep the branch lean. -On pull requests targeting a `backport-*` branch, an additional step (`check-changelog-versions-in-main`) verifies that no changelog version introduced by the PR already exists on `main`, catching sync collisions before merge. This step is coming with the auto-backport workflow (PR #20197). +On pull requests targeting a `backport-*` branch, an additional step (`check-changelog-versions-in-main`) is coming with the auto-backport workflow (PR #20197) — it will verify that no changelog version introduced by the PR already exists on `main`, catching sync collisions before merge. The pipeline can also be triggered manually from the UI (restricted to members of the `ecosystem` team). The following parameters can be configured when triggering manually: - **REMOVE_OTHER_PACKAGES**: If `true`, only the target package is kept in the `packages/` directory; all others are removed. Default: `true`. diff --git a/docs/extend/developer-workflow-support-old-package.md b/docs/extend/developer-workflow-support-old-package.md index 035144abb17..34c8129f705 100644 --- a/docs/extend/developer-workflow-support-old-package.md +++ b/docs/extend/developer-workflow-support-old-package.md @@ -107,6 +107,7 @@ Sometimes, when we drop the support for an earlier version of the stack and late base_commit: "" maintained_until: null archived: false + remove_other_packages: true ``` Example for the `aws` package at version `1.19.5`: @@ -118,6 +119,7 @@ Sometimes, when we drop the support for an earlier version of the stack and late base_commit: "8cb321075afb9b77ea965e1373a03a603d9c9796" maintained_until: null archived: false + remove_other_packages: true ``` Fields: @@ -126,9 +128,9 @@ Sometimes, when we drop the support for an earlier version of the stack and late * **`branch`** — name of the backport branch to create, following the format `backport--.` * **`base_version`** — the package version to branch from (e.g. `1.19.5`, `1.0.0-beta1`) * **`base_commit`** — the commit SHA found in the previous step - * **`maintained_until`** — `null` for a new active branch. Set to a `YYYY-MM-DD` date when the branch has a known end-of-life: the branch is automatically excluded from the checklist and inventory validation once that date passes (strictly before today in UTC). Prefer this over `archived: true` when the end-of-life date is known in advance. - * **`archived`** — `false` for a new active branch. Set to `true` to immediately exclude the branch from the checklist and inventory validation, with no fixed end-of-life date. Archiving does **not** delete the branch — packages can still be published from it; archiving only removes it from automated tooling. - * **`remove_other_packages`** — `true` (default): when the branch is created, all packages other than the target are removed from `packages/`. `false`: all packages are kept. The default of `true` keeps the branch lean and avoids running tests for unrelated packages on every PR. + * **`maintained_until`** — `null` for a new active branch. Set to a `YYYY-MM-DD` date when the branch has a known end-of-life: the branch is automatically excluded from the checklist and branch creation once that date passes (strictly before today in UTC). Prefer this over `archived: true` when the end-of-life date is known in advance. + * **`archived`** — `false` for a new active branch. Set to `true` to immediately exclude the branch from the checklist and branch creation, with no fixed end-of-life date. Archiving does **not** delete the branch — packages can still be published from it; archiving only removes it from automated tooling. + * **`remove_other_packages`** — required. `true`: when the branch is created, all packages other than the target are removed from `packages/`. `false`: all packages are kept. Set to `true` for the standard case — it keeps the branch lean and avoids running tests for unrelated packages on every PR. Once the PR is opened, CI automatically: @@ -239,7 +241,7 @@ Example comment: Active backport branches for the packages touched by this PR: **aws** -- `backport-aws-1.19` (maintained until 2025-06-30) +- `backport-aws-1.19` (maintained until 2027-06-30) - `backport-aws-6.x` --- @@ -258,7 +260,7 @@ To stop a branch appearing in the checklist, update its entry in `.backports.yml - **`archived: true`** — excludes the branch immediately, with no fixed end-of-life date. - **`maintained_until: "YYYY-MM-DD"`** — excludes the branch automatically once that date passes; preferred when the end-of-life date is known. -Archiving a branch does not delete it. Packages can still be published from an archived branch; archiving only removes the branch from the checklist and inventory validation. +Archiving a branch does not delete it. Packages can still be published from an archived branch; archiving only removes the branch from the checklist and branch creation. ## Known issues