Primary goal
Every test currently run by .travis.yml in this repository MUST also run in GitHub Actions after this change. That is the single criterion for success. Read .travis.yml carefully (including any matrix.include, env matrices, and jobs.include entries) and make sure every combination has an equivalent GHA job. Do not silently drop matrix entries.
Context
The logstash-plugins/.ci repository now hosts shared reusable GitHub Actions workflows that replace the old Travis-based setup. Two pilot plugins have already been migrated and are the canonical examples to follow:
The shared reusable workflows live here and are what your new workflow files must call. The canonical branch is 1.x — always use @1.x as the ref:
logstash-plugins/.ci/.github/workflows/unit-tests.yml@1.x — unit tests
logstash-plugins/.ci/.github/workflows/integration-tests.yml@1.x — integration tests
logstash-plugins/.ci/.github/workflows/secure-integration-tests.yml@1.x — secure integration tests
logstash-plugins/.ci/.github/workflows/performance.yml@1.x — performance tests
Read the source of those reusable workflows here so you know what inputs they accept and what matrices they already define: https://github.com/logstash-plugins/.ci/tree/1.x/.github/workflows. The reusable workflows already handle the elastic-stack-version / snapshot matrix — do not redefine that matrix in this repo; just call the reusable workflow.
The reference POC issue and PR (filter-grok, unit-only case):
What to do
1. Inspect .travis.yml
Determine which test types this plugin runs. Map each to a GHA workflow file you need to add:
| Travis signal |
Add this workflow file |
| Base matrix runs unit tests (always true) |
.github/workflows/unit-tests.yml calling unit-tests.yml |
INTEGRATION=true in any matrix env |
.github/workflows/integration-tests.yml calling integration-tests.yml |
SECURE_INTEGRATION=true in any matrix env |
.github/workflows/secure-integration-tests.yml calling secure-integration-tests.yml |
HAS_PERFORMANCE_TESTS=1 or a _performance job entry |
.github/workflows/performance.yml calling performance.yml |
Only add the workflow files for test types this plugin actually runs. If .travis.yml does not exercise integration tests, do not add an integration workflow.
2. Add the consumer workflow file(s)
Follow this exact shape (this is what the kafka and elasticsearch-output PRs use). The unit-test version:
name: Unit Tests
on:
push:
pull_request:
branches:
- main
workflow_dispatch:
jobs:
tests:
uses: logstash-plugins/.ci/.github/workflows/unit-tests.yml@1.x
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
with:
timeout-minutes: 60
For integration / secure integration / performance, copy the same shape and swap name, the uses: target, and any inputs the reusable workflow accepts. If the plugin's default branch is not main (e.g. it's master), substitute the correct branch name in both pull_request.branches and the concurrency cancel-in-progress expression.
timeout-minutes should reflect the plugin's actual needs — start with what .travis.yml uses, or 60 if unspecified.
3. Update README.md status badges
This is required. Replace any Travis badge with the equivalent GitHub Actions badges — one per workflow file you added.
Replace lines that look like:
[](https://travis-ci.com/logstash-plugins/<repo>)
With one badge per added workflow, e.g.:
[](https://github.com/logstash-plugins/<repo>/actions/workflows/unit-tests.yml)
[](https://github.com/logstash-plugins/<repo>/actions/workflows/integration-tests.yml)
[](https://github.com/logstash-plugins/<repo>/actions/workflows/secure-integration-tests.yml)
Reference: logstash-plugins/logstash-output-elasticsearch#1257.
If the README has no Travis badge at all, add the GHA badge(s) near the top of the file (above the description, matching the convention used in other plugins).
4. Delete .travis.yml
Remove .travis.yml from the repository as part of this PR. Also remove any other Travis-only files if present (e.g. .travis/). The whole point of this migration is to retire Travis for this plugin.
Before deleting, walk through .travis.yml one more time and convince yourself that every matrix entry, env var, and job is covered by the GHA workflows you added. Include that mapping in the PR description (see below).
Explicitly out of scope
- Do not modify plugin source code, specs, or
Gemfile. If you believe a code change is required, stop and call it out in the PR description instead of making the change.
- Do not change the default branch, repo settings, or any other workflow files beyond what is described above.
Branch / PR requirements
The PR must be raised from a branch in the logstash-plugins/<repo> repository itself, not from a fork. GitHub Actions secrets and reusable-workflow access are not granted to fork-based PRs, so workflows will not run if the PR comes from a fork. Push your working branch directly to logstash-plugins/<repo> and open the PR from there.
PR description must include
- A table mapping each
.travis.yml matrix entry / env combination to the corresponding GHA job(s), demonstrating full parity.
- The list of new workflow files added.
- The README badge changes.
- Confirmation that
.travis.yml (and any other Travis files) has been deleted.
Primary goal
Every test currently run by
.travis.ymlin this repository MUST also run in GitHub Actions after this change. That is the single criterion for success. Read.travis.ymlcarefully (including anymatrix.include,envmatrices, andjobs.includeentries) and make sure every combination has an equivalent GHA job. Do not silently drop matrix entries.Context
The
logstash-plugins/.cirepository now hosts shared reusable GitHub Actions workflows that replace the old Travis-based setup. Two pilot plugins have already been migrated and are the canonical examples to follow:logstash-integration-kafkalogstash-output-elasticsearchThe shared reusable workflows live here and are what your new workflow files must call. The canonical branch is
1.x— always use@1.xas the ref:logstash-plugins/.ci/.github/workflows/unit-tests.yml@1.x— unit testslogstash-plugins/.ci/.github/workflows/integration-tests.yml@1.x— integration testslogstash-plugins/.ci/.github/workflows/secure-integration-tests.yml@1.x— secure integration testslogstash-plugins/.ci/.github/workflows/performance.yml@1.x— performance testsRead the source of those reusable workflows here so you know what inputs they accept and what matrices they already define: https://github.com/logstash-plugins/.ci/tree/1.x/.github/workflows. The reusable workflows already handle the elastic-stack-version / snapshot matrix — do not redefine that matrix in this repo; just call the reusable workflow.
The reference POC issue and PR (filter-grok, unit-only case):
What to do
1. Inspect
.travis.ymlDetermine which test types this plugin runs. Map each to a GHA workflow file you need to add:
.github/workflows/unit-tests.ymlcallingunit-tests.ymlINTEGRATION=truein any matrix env.github/workflows/integration-tests.ymlcallingintegration-tests.ymlSECURE_INTEGRATION=truein any matrix env.github/workflows/secure-integration-tests.ymlcallingsecure-integration-tests.ymlHAS_PERFORMANCE_TESTS=1or a_performancejob entry.github/workflows/performance.ymlcallingperformance.ymlOnly add the workflow files for test types this plugin actually runs. If
.travis.ymldoes not exercise integration tests, do not add an integration workflow.2. Add the consumer workflow file(s)
Follow this exact shape (this is what the kafka and elasticsearch-output PRs use). The unit-test version:
For integration / secure integration / performance, copy the same shape and swap
name, theuses:target, and any inputs the reusable workflow accepts. If the plugin's default branch is notmain(e.g. it'smaster), substitute the correct branch name in bothpull_request.branchesand the concurrencycancel-in-progressexpression.timeout-minutesshould reflect the plugin's actual needs — start with what.travis.ymluses, or 60 if unspecified.3. Update
README.mdstatus badgesThis is required. Replace any Travis badge with the equivalent GitHub Actions badges — one per workflow file you added.
Replace lines that look like:
With one badge per added workflow, e.g.:
Reference: logstash-plugins/logstash-output-elasticsearch#1257.
If the README has no Travis badge at all, add the GHA badge(s) near the top of the file (above the description, matching the convention used in other plugins).
4. Delete
.travis.ymlRemove
.travis.ymlfrom the repository as part of this PR. Also remove any other Travis-only files if present (e.g..travis/). The whole point of this migration is to retire Travis for this plugin.Before deleting, walk through
.travis.ymlone more time and convince yourself that every matrix entry, env var, and job is covered by the GHA workflows you added. Include that mapping in the PR description (see below).Explicitly out of scope
Gemfile. If you believe a code change is required, stop and call it out in the PR description instead of making the change.Branch / PR requirements
The PR must be raised from a branch in the
logstash-plugins/<repo>repository itself, not from a fork. GitHub Actions secrets and reusable-workflow access are not granted to fork-based PRs, so workflows will not run if the PR comes from a fork. Push your working branch directly tologstash-plugins/<repo>and open the PR from there.PR description must include
.travis.ymlmatrix entry / env combination to the corresponding GHA job(s), demonstrating full parity..travis.yml(and any other Travis files) has been deleted.