elastic / elastic/logstash

dra: automate minor release preparation via `bump-minor-logstash.yml` GitHub Action

Open
#19,460 0 comments 1 reaction 3 assignees Claimed by @donoghuc View on GitHub
automation DRA release
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.