dra: automate minor release preparation via `bump-minor-logstash.yml` GitHub Action
- Dominant language
- Java
- Stars
- 14.9k
- Forks
- 3.5k
- Avg merge
- 1d 4h
- Merged PRs (30d)
- 88
Description
## Summary
Following the work done in #19280 (which wired `.buildkite/version_bump_pipeline.yml` to trigger `bump-logstash.yml` for **patch** releases), we now want to implement the equivalent automation for **minor** releases.
The release process for minor releases is currently documented in the [logstash-release-checklist-minor.md](https://github.com/elastic/ingest-dev/blob/main/.github/ISSUE_TEMPLATE/logstash-release-checklist-minor.md) template. The goal of this issue is to automate the steps up to (and including) the **`Week before release`** section — specifically the steps that involve opening pull requests — and to wire the new action into the Buildkite version bump pipeline.
## Tasks
### 1. Create the `bump-minor-logstash.yml` GitHub Action
Create a new GitHub Actions workflow file at `.github/workflows/bump-minor-logstash.yml` that automates the PR-creation steps described in the [minor release checklist](https://github.com/elastic/ingest-dev/blob/main/.github/ISSUE_TEMPLATE/logstash-release-checklist-minor.md) up to (but **not** including) the `Week before release` section.
The action should automate the following steps:
#### Before feature freeze
- Open a PR against the release branch to check and unpin any active pins in the Logstash [gemspec](https://github.com/elastic/logstash/blob/main/logstash-core/logstash-core.gemspec) or [Gemfile](https://github.com/elastic/logstash/blob/main/Gemfile) if needed.
- Open a PR to create the new release branch (e.g. `9.1`) on `elastic/logstash` and `elastic/logstash-docs`. _(Skip if this is the last minor version in a major.)_
- Open a PR to update `versions.yml` on `main` to the next minor (e.g. `9.0.0` → `9.1.0`).
- Open a PR to add a new bundler lock file (e.g. `Gemfile.jruby-.lock.release`) to the release branch:
- Copy lock file from previous minor branch.
- Update the lock file via `./gradlew clean installDefaultGems` and `./vendor/jruby/bin/jruby -S bundle update --all --strict`.
#### After feature freeze
- Open a PR to update `versions.yml` on `main` to the latest minor, if applicable.
> **Note:** Steps that are purely manual (e.g., QA testing, doc coordination, DRA monitoring, Slack notifications) should **not** be automated. The action should only create pull requests and stop there.
### 2. Wire the new action into `.buildkite/version_bump_pipeline.yml`
Update [`.buildkite/version_bump_pipeline.yml`](https://github.com/elastic/logstash/blob/main/.buildkite/version_bump_pipeline.yml) to add a new step that triggers `bump-minor-logstash.yml` when `WORKFLOW == "minor"`, analogous to the existing `patch` step:
```yaml
- label: "Bump version minor"
if: build.env("WORKFLOW") == "minor"
plugins:
- elastic/vault-github-token#v0.1.0:
- elastic/gh-cli#v0.1.1:
version: "2.88.1"
wait: true
workflow-file: "bump-minor-logstash.yml"
workflow-ref: "main"
workflow-inputs:
logstash-version: "${NEW_VERSION}"
logstash-branch: "${BRANCH}"
```
## References
- PR that implemented patch release automation: https://github.com/elastic/logstash/pull/19280
- Minor release checklist template: https://github.com/elastic/ingest-dev/blob/main/.github/ISSUE_TEMPLATE/logstash-release-checklist-minor.md
- Current version bump pipeline: https://github.com/elastic/logstash/blob/main/.buildkite/version_bump_pipeline.yml
- Existing `bump-logstash.yml` action (reference for pattern): https://github.com/elastic/logstash/actions/workflows/bump-logstash.yml
Contributor guide
Assessment
This issue has not been assessed yet.