Commit graph

47 commits

Author SHA1 Message Date
github-actions[bot]
6a3ce58b38
Enable packaging tests in exhaustive pipeline (#15781) (#15806)
This commit adds the packaging tests (that were refactored in #15696
to not rely on Vagrant) in a new "acceptance" group.

Relates: https://github.com/elastic/ingest-dev/issues/1722
(cherry picked from commit 16c4d8827e)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2024-01-17 18:08:32 +02:00
github-actions[bot]
c25a89fc71
Add Docker acceptance to exhaustive BK pipeline (#15748) (#15798)
This commit adds the Docker acceptance tests in the acceptance phase
of the exhaustive tests pipeline.

- Relates: https://github.com/elastic/ingest-dev/issues/1722

(cherry picked from commit fca1fccb66)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2024-01-12 09:32:27 +02:00
github-actions[bot]
03f8661d15
Add retries to PR pipeline steps (#15787) (#15794)
There is occasional flakiness mainly with IT tests requiring us to
manually retry such failures when we raise PR (or the first
group of the exhaustive suite, which runs the same steps).

This commit adds up to 3 retries for all the steps of the PR
pipeline.

(cherry picked from commit 739e8a3ef0)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2024-01-11 16:48:33 +02:00
Dimitrios Liappis
f769651393
Run BK exhaustive pipeline when code is pushed (#15738) (#15771)
This commit enables running the exhaustive tests Buildkite pipeline
(i.e. the equivalent to the `main` Jenkins tests) ; the trigger is
code events, i.e. direct pushes, merge commits and creation of new branches.

CI is skipped if changes are only related to files under `docs/`.

(cherry picked from commit c8726b79f3)
2024-01-10 12:03:06 +02:00
github-actions[bot]
8727fe8e17
JUnit result annotation for Buildkite PR jobs (#15741) (#15745)
This commit adds annotations for Java unit tests (in the pull request pipeline) helping
identify failing unit tests quickly.

(cherry picked from commit 286088915f)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2024-01-04 17:49:13 +02:00
github-actions[bot]
c557a9b7eb
Skip input step when triggering JDK matrix jobs (#15733) (#15735)
PR#15729 missed the input step. As a result when the job is triggered
the steps are executed, but the pause icon still shows in the job
requiring manual unblock[^1]

This commit also skips the input step when the job is triggered from
the scheduler pipeline.

[^1] https://buildkite.com/elastic/logstash-linux-jdk-matrix-pipeline/builds/86

(cherry picked from commit a8b64a32e9)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2024-01-02 14:35:48 +02:00
github-actions[bot]
5871b600ec
Don't block triggered JDK matrix Buildkite jobs (#15729) (#15731)
The recent PRs #15668 and #15705 refactored jobs with a custom schedule
to leverage a centralized trigger pipeline.

An unexpected sideffect of this is that the conditional for the wait
step doesn't work anymore.

This commit skips the wait step when the JDK matrix pipelines get triggered
from another pipeline.

(cherry picked from commit 82ac474b13)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2024-01-02 11:59:03 +02:00
github-actions[bot]
84b4fec2da
[ci] Add testing phase to exhaustive tests suite (#15711) (#15717)
This is the second part of the migration of the exhaustive/main
Jenkins Job to Buildkite. So far we've migrated the "compatibility
phase" and this commit adds the "testing phase"[^1], which is essentially
the same amount of tests that we ran on PR jobs.

Relates https://github.com/elastic/ingest-dev/issues/1722
Depends https://github.com/elastic/logstash/pull/15708

[^1]: For more details, refer to the sequence diagram in https://github.com/elastic/ingest-dev/issues/1722#issuecomment-1824378635

(cherry picked from commit 9538338abb)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2023-12-21 12:42:47 +02:00
github-actions[bot]
86ea320679
[ci] Reusable unit + IT test steps for Buildkite (#15708) (#15714)
This commit is a pre-requisite for adding unit + IT tests in a
dedicated phase of the Exhaustive tests pipeline.

It refactors the tests currently used by PR jobs, so that they become
reusable.

(cherry picked from commit 03d7b59f2a)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2023-12-20 18:50:17 +02:00
github-actions[bot]
dae1585325
[ci] Compatibility tests for Exhaustive suite (#15641) (#15647)
This commit adds the compatibility tier for the Exhaustive tests suite.
Specifically, we introduce two new groups (running in parallel) for Linux and Windows compat tests.
Linux picks one OS per family from [^] and likewise Windows one of the three available choices from the same file.

We also support manual override, if user chooses to, by setting `LINUX_OS` or `WINDOWS_OS` as env vars in the Buildkite build prompt (in this case there is no randomization, and only one OS can be defined for Linux and Windows respectively).

For example:
```
LINUX_OS=rhel-9
WINDOWS_OS=windows=216
```

Relates:

- https://github.com/elastic/ingest-dev/issues/1722

[^1]: 4d6bd955e6/.buildkite/scripts/common/vm-images.json

(cherry picked from commit d42b938f81)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2023-11-30 20:58:51 +02:00
github-actions[bot]
be32ecd557
[ci] Switch to Adoptium distro for JDK 11 (#15629) (#15633)
AdoptOpenJDK is nowadays Adoptium, so we replace it in favor of
the latter which is actively maintained.

Relates https://github.com/elastic/logstash/pull/15628

(cherry picked from commit 6446bba962)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2023-11-29 12:21:03 +02:00
github-actions[bot]
34056f378d
[ci] Fix scheduled JDK matrix CI jobs (#15623) (#15625)
This commit fixes failed scheduled JDK matrix CI jobs, that
can't access the default values for the OS and JDK from the input
steps, as observed in [^1] and [^2].

[^1] https://buildkite.com/elastic/logstash-linux-jdk-matrix-pipeline/builds/53#018c1371-b760-4c28-9203-340c0a1df150
[^2]: https://buildkite.com/elastic/logstash-windows-jdk-matrix-pipeline/builds/35#018c1371-b72e-48b4-b707-ce103eb6039c

(cherry picked from commit f0019bf33c)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2023-11-28 16:33:34 +02:00
github-actions[bot]
3e2a250cbd
[ci] Initial Exhaustive tests Buildkite pipeline (#15607) (#15615)
This commit adds a skeleton Buildkite pipeline for the Exhaustive tests
suite.

(cherry picked from commit db50983ab5)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2023-11-27 12:25:44 +02:00
github-actions[bot]
0835b50f81
[ci] Use GCP prod image for Linux JDK matrix job (#15600) (#15602)
So far we've been using images from the -qa GCP image project throughput
the development of the Logstash Linux JDK matrix pipeline for quicker
iteration.

As we have scheduled weekly builds of those images that promote to
prod[^1] we can now switch to the prod version of the GCP images.

[^1]: https://buildkite.com/elastic/ci-vm-images/builds/2888

Relates https://github.com/elastic/ingest-dev/issues/1725

(cherry picked from commit e259e04e53)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2023-11-20 19:09:54 +02:00
github-actions[bot]
8a563519e6
[ci] Support amazonlinux for JDK matrix pipeline (#15595) (#15598)
The last part of the Logstash JDK matrix CI migration from Jenkins to
Buildkite is AmazonLinux 2023.

While we have a working image[^1], this is the only step that requires
a agent that runs on AWS.

This commit refactors the builder to support GCP or AWS agents depending
on the OS.

[^1]: https://github.com/elastic/ci-agent-images/pull/441

(cherry picked from commit 8fa3bd0d7f)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2023-11-20 12:28:34 +02:00
Dimitrios Liappis
06d00405ca
[ci] Add yaml language server to pipelines (#15590) (#15591)
Add missing yaml-language-server definition to Buildkite pipeline files (static and dynamic generated) for consistency and to ease spotting errors with editors.

(cherry picked from commit cd01abb1c7)

Backport of #15590
2023-11-15 18:45:35 +02:00
github-actions[bot]
4df57ee316
[ci] Fix image name for Rocky Linux 8 (#15584) (#15587)
Fix typo for image name of Rocky Linux 8 for JDK matrix jobs.

(cherry picked from commit ce63ea4a51)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2023-11-15 10:17:31 +02:00
github-actions[bot]
34c88e7f79
[ci] JDK matrix Buildkite pipelines (pt 2/Windows) (#15563) (#15567)
This commit adds JDK matrix Buildkite pipelines for
Windows 2022, 2019 and 2016.

It also makes the groups easier to read (on both Linux and Windows
pipelines) by removing the os-jdk prefix from the job labels.

`testDLQWriterFlusherRemovesExpiredSegmentWhenCurrentHeadSegmentIsEmpty`
fails on Windows Buildkite agents and it's a test issue tracked in
https://github.com/elastic/logstash/issues/15562.

Relates:

- https://github.com/elastic/logstash/pull/15539
- https://github.com/elastic/ingest-dev/issues/1725

(cherry picked from commit 0ede19a0e1)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2023-11-13 18:50:29 +02:00
github-actions[bot]
a233e9273b
[ci] JDK matrix Buildkite pipelines (part 1) (#15539) (#15555)
This commit is the first part of the migration of JDK matrix tests
from Jenkins to Buildkite. There will be two separate pipelines, for
Linux and Windows.

Linux is currently limited to Ubuntu 22.04 and 20.04, but
additional operating systems will be added outside of the Logstash
repository seamlessly through additional VM images.

Steps are created dynamically and the underlying script is meant to be
common for Linux and Windows. Windows is currently a stub and
will be added in a follow up PR.

Relates:

- https://github.com/elastic/ingest-dev/issues/1725
- https://github.com/elastic/ci-agent-images/pull/424

(cherry picked from commit 956bf483f2)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2023-11-10 15:36:11 +02:00
github-actions[bot]
05125cc000
[ci] Split JDK matrix pipelines per OS (#15534) (#15536)
This commit splits the generic Buildkite pipelines introduced
in #15520 for JDK tests to separate pipelines for Linux and Windows.

(cherry picked from commit 07147b3e40)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2023-11-07 15:49:03 +02:00
github-actions[bot]
83f4f0bbc3
[ci] Initial JDK matrix Buildkite pipeline (#15520) (#15521)
This commit adds a skeleton Buildkite pipeline for the JDK matrix tests.

Relates:

- https://github.com/elastic/logstash/pull/15519
- https://github.com/elastic/ingest-dev/issues/1725

(cherry picked from commit ccc41d76ff)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2023-11-02 18:57:29 +02:00
github-actions[bot]
f3c319d2d9
[ci] aarch64 Buildkite pipeline part 2 (#15473) (#15504)
This commit is the follow up PR after #15466, which migrates away
the remaining aarch64 acceptance test Jenkins jobs to Buildkite.

Relates:

- #15466
- https://github.com/elastic/ingest-dev/issues/1724

(cherry picked from commit c384190718)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2023-10-26 09:38:14 +03:00
github-actions[bot]
c4ae135b0c
[ci] re-enable Java unit tests on aarch64 pipeline (#15492) (#15493)
PR#15466 skipped the Java unit tests as on the `main` and `8.11`
branches they attempted to run sonar scans (which are only meant to
run for PRs).

This commit re-enables the Java unit tests, taking advantage of #15486,
disabling the sonar scan part of the test suite.

(cherry picked from commit 16da966290)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2023-10-25 11:40:29 +03:00
github-actions[bot]
124e90111c
[ci] aarch64 Buildkite pipeline part 1 (#15466) (#15481)
This commit is the first part of migrating away the aarch64 Jenkins
jobs to Buildkite. It adds a group of exhaustive test steps in the
aarch64 pipeline.

The java unit tests are temporarily disabled as they run SonarQube
scans which need to be associated with pull requests.

Relates:

https://github.com/elastic/ingest-dev/issues/1724
(cherry picked from commit 36656de4f0)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2023-10-24 09:24:02 +03:00
github-actions[bot]
516c7a6851
[ci] Initial aarch64 Buildkite pipeline (#15460) (#15468)
This commit adds a skeleton Buildkite pipeline for aarch64
exhaustive tests.

- https://github.com/elastic/logstash/pull/15459
- https://github.com/elastic/ingest-dev/issues/1724

(cherry picked from commit 0083738cde)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2023-10-18 14:47:32 +03:00
github-actions[bot]
6d0d636777
Migrate remaining PR jobs to Buildkite #15444 (#15450)
This commit adds the remaining steps for the Buildkite pull request pipeline i.e.

- `IT Persistent Queues / part 1`
- `IT Persistent Queues / part 2`
- `x-pack unit tests`
- `x-pack integration`

Once merged we will be able to retire the corresponding Logstash pull request multijob.

Relates:

- https://github.com/elastic/logstash/pull/15438
- https://github.com/elastic/logstash/pull/15437
- https://github.com/elastic/ingest-dev/issues/1721
- https://github.com/elastic/logstash/pull/15279

(cherry picked from commit 555a8ff8e3)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2023-10-15 19:55:51 +03:00
github-actions[bot]
13962d8557
[ci] Add PR it-tests (part 1+2) to Buildkite (#15438) (#15445)
This commit adds integration tests to the
Buildkite PR pipeline.

Relates:

- https://github.com/elastic/logstash/pull/15437
- https://github.com/elastic/ingest-dev/issues/1721
- https://github.com/elastic/logstash/pull/15279

(cherry picked from commit 816d7e6b2b)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2023-10-14 09:44:33 +03:00
github-actions[bot]
761aa8646b
[ci] Commit PR based Java unit tests for Buildkite (#15437) (#15441)
This commit adds Java unit tests (including sonar scans) to the
Buildkite pull request pipeline.

Relates: https://github.com/elastic/ingest-dev/issues/1721
(cherry picked from commit e285425d54)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2023-10-13 11:46:37 +03:00
Dimitrios Liappis
4708a48d1c
[ci] Backport Buildkite PR pipeline to 8.11 (#15430)
This is a backport of the initial Pull Request pipeline for Buildkite.

While currently we haven't migrated all PR jobs from Jenkins, this is needed so PRs against non `main` branches don't fail this check (also giving us the possibility to test functionality against non `main` branches).

Relates:

- #15402
- #15413
- #15415
- #15421
- https://github.com/elastic/ingest-dev/issues/1721

## Release notes
[rn:skip]
2023-10-12 16:44:50 +03:00
github-actions[bot]
09c70df7a9
[DRA] Remove wait step in buildkite (#15366) (#15391)
DRA artifact builds support two optional parameters
`VERSION_QUALIFIER_OPT` and `DRA_DRY_RUN`.  The most important is
`VERSION_QUALIFIER_OPT` which should be provided when `alpha1` or
similar versions need to be built.

Currently, after clicking new build, the pipeline takes ~20s to
assemble the steps and then pauses the job waiting for these options to be
filled (or just accept the empty defaults) and press continue.

I feel that this could be trappy behavior because the majority of the
use cases don't need it, and it's likely that a user manually clicks
build and forgets that they'd need to confirm these parameters later
on, left with a hanging build.

This commit makes the parameters optional. If needed, they should be
defined explicitly as Environment Variables in the New Build prompt,
after expanding the Options section.

The downside of this approach is that when needed, users need to
consult the documentation about the environment variable names.

(cherry picked from commit 94dfd4773b)

Co-authored-by: Dimitrios Liappis <dimitrios.liappis@gmail.com>
2023-10-05 15:53:39 +03:00
Dimitrios Liappis
da51a6ac53
[buildkite] DRA staging + snapshot pipelines (#15344)
This commit is the step after #15337 and switches away from the generically named [logstash-dra-pipeline-ci](https://buildkite.com/elastic/logstash-dra-pipeline-ci)
pipeline to two separate pipelines for `snapshot` and `staging`, reflecting the current structure in [Jenkins](https://logstash-ci.elastic.co/view/DRA/).

We define a daily schedule for `snapshot`, but it's commented out for now, until we ramp down the Jenkins job.

Finally, as we've created a dedicated Buildkite team for `logstash`, we place both pipelines under this team.

Relates:

- https://github.com/elastic/ingest-dev/issues/1720
- https://github.com/elastic/logstash/pull/15337
2023-10-02 12:10:59 +03:00
Dimitrios Liappis
05c2627123
[DRA, buildkite] Use GCP vms for package build step (#15356)
We seem to be hitting a weird issue with the psych gem when running in a container:

```
> Task :bootstrap
2023-09-27T15:13:23.844Z [Execution worker Thread 5] WARN FilenoUtil : Native subprocess control requires open access to the JDK IO subsystem
Pass '--add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED' to enable.
Error Errno::ENOENT, retrying 1/10
No such file or directory - /buildkite/builds/bk-agent-prod-k8s-1695827479442731913/elastic/logstash-dra-pipeline-ci/vendor/bundle/jruby/3.1.0/gems/psych-5.1.0-java/deps.lst
```

This commit works around this problem by running inside a VM. The underlying root cause (and that gradle should be erroring in this case) will be investigated separately.
2023-09-28 11:16:51 +03:00
Dimitrios Liappis
12a98250cb
[DRA,buildkite] Use AWS aarch64 instance type (#15352)
We've spotted network flakiness downloading artifacts with gradle (connection resets) when using GCP/t2a on us-central1.
This commit switches to AWS Graviton instance types for building the aarch64 artifacts.
2023-09-27 16:41:51 +03:00
Dimitrios Liappis
dd77c9f927
[ci] Commit DRA -SNAPSHOT buildkite pipeline (#15337)
This commit adds support for building + publishing DRA (-SNAPSHOT for now) artifacts for Logstash. It builds on top of #15312 and therefore only targets the `main` branch and is intended to be run manually during a trial period before we retire the corresponding Jenkins job.

The structure is similar to Jenkins:

1. Three steps runs in parallel to build packages, x86_64 docker and aarch64 docker artifacts.

2. Once 1. is successfully done, use release manager to publish the artifacts.

We generate the pipeline steps for 1. and 2. dynamically (with a simple Python script) to avoid repetition for future PRs: we will add a new pipeline in a follow up PR for -STAGING.

The actual shell scripts are simplified copies from the existing `dra*` scripts under https://github.com/elastic/logstash/tree/main/ci; the simplification comes from native support for copying artifacts between steps in Buildkite and
not having to use an intermediate bucket.

Relates: https://github.com/elastic/ingest-dev/issues/1720
Blocked by: https://github.com/elastic/ci/pull/2312/files
2023-09-26 16:00:56 +03:00
Dimitrios Liappis
77d2ec31fa
[CI] Add initial buildkite pipeline for DRA (#15312)
Add initial buildkite pipeline for DRA artifacts.
This is a "hello-world" pipeline skeleton required to iterate on migrating the actual DRA jobs.
This commit also updates the backstage component for logstash to become a top level entity with the
necessary annotations and linked dependencies to pipelines.

Relates https://github.com/elastic/ingest-dev/issues/1720
2023-09-12 12:05:24 +03:00
kaisecheng
fb66e9888c
Fix serverless test for api protection (#15252) 2023-08-16 14:02:11 +01:00
kaisecheng
9af7c7cef4
Serverless test against restricted API key (#15224)
This commit changes the serverless tests to use a restricted API key with necessary permissions and disables Logstash legacy monitoring test.

Fixes: #15234

Co-authored-by: João Duarte <jsvd@users.noreply.github.com>
2023-08-02 15:27:46 +01:00
kaisecheng
0f8695593e
buildkite serverless test (#15150)
This commit adds a Buildkite pipeline to test against serverless endpoint daily

Tests cover 
- es-output
- es-input
- es-filter
- central pipeline management
- legacy monitoring
- dlq
- integration-filter
- kibana API
- metricbeat stack monitoring

Co-authored-by: João Duarte <jsvd@users.noreply.github.com>
Co-authored-by: João Duarte <jsvduarte@gmail.com>
2023-07-19 17:21:53 +01:00
Mashhur
07b663561c
Snyk scans Logstash container vulnerabilities. (#15117)
* Snyk scans Logstash container vulnerabilities.

* Exclude integ test and tools when Snyk scanning.

* Remote repo url fix for main branch.

* Update .buildkite/scripts/snyk/report.sh

Simplify the logic to retrieve the version from `versions.yml`

Co-authored-by: kaisecheng <69120390+kaisecheng@users.noreply.github.com>

* Add backstage definition for Snyk Report pipeline.

---------

Co-authored-by: kaisecheng <69120390+kaisecheng@users.noreply.github.com>
2023-07-12 14:54:03 -07:00
João Duarte
1022a8f63a
Update serverless_integration_pipeline.yml to invoke es output test 2023-06-28 14:58:24 +02:00
João Duarte
0a35754392
Delete serverless_pipeline.yml 2023-06-28 13:37:33 +02:00
João Duarte
caff3bf1ce
Rename serverless_integration_pipeline.yml.yml to serverless_integration_pipeline.yml 2023-06-27 16:54:34 +02:00
elastic-backstage-prod[bot]
a9112fc8f7
Create catalog-info file (#15072)
This will eventually replace the pipeline definition in the catalog repo, using the local file instead.

---------

Co-authored-by: elastic-backstage-prod[bot] <123036547+elastic-backstage-prod[bot]@users.noreply.github.com>
Co-authored-by: João Duarte <jsvd@users.noreply.github.com>
2023-06-27 12:29:30 +02:00
kaisecheng
e919305fee
placeholder for serverless test in buildkite (#15112)
Use any Buildkite agent for empty serverless pipeline.

Co-authored-by: Mashhur <99575341+mashhurs@users.noreply.github.com>
2023-06-26 22:11:46 +02:00
Mashhur
6f6a446f3c
Install Java on Buildkite Agent. (#15097) 2023-06-22 09:10:33 -07:00
Mashhur
e3b9324602
Read Snyk token from logstash repo scoped vault. (#15096) 2023-06-20 13:29:47 -07:00
Mashhur
9c080eac53
Snyk Integration (#15083)
* This commit includes number of changes:
- adds initial pipeline steps, each step proceeds one branch report job
- a script to resolve current and previous release latest branches from the release URL. Noting that it considers the branches from snapshots where upcoming releases will be our interest.
- pseudo logic to download logstash, build and report to Snyk. In order to script fully work we need a logstash machine to access Buildkite vault, which I am working.

* Source optimization and use Buildkite Vault to access to Snyk token.

* Add git branch and head to Snyk project tag.

* Dynamically resolve latest branches instead of manually defining.

* Update .buildkite/scripts/snyk/report.sh

Improve comment readability.

Co-authored-by: João Duarte <jsvd@users.noreply.github.com>

---------

Co-authored-by: João Duarte <jsvd@users.noreply.github.com>
2023-06-20 08:25:21 -07:00