There are 3 main stages that run on GitHub actions for every push or Pull Request:
- Linting
- Test
- System tests
There are some other stages that run for every push on the main branches:
- Microbenchmark
- Benchmarks
- Packaging - see below.
- Tests should be triggered on branch, tag and PR basis.
- Commits that are only affecting the docs files should not trigger any test or similar stages that are not required.
- This is not the case yet, but if Github secrets are required then Pull Requests from forked repositories won't run any build accessing those secrets. If needed, then create a feature branch.
Once a PR has been opened then there are two different ways you can trigger builds in the CI:
- Commit based.
- UI based, any Elasticians can force a build through the GitHub UI
Every time there is a merge to main or any release branches the main workflow will lint and test all for Linux, Windows and MacOS.
The packaging and release automation relies on the Unified Release process and Buildkite for generating the
DRA
packages, for further details please go to the buildkite folder.
There is a GitHub workflow in charge to populate what the workflow run in terms of jobs and steps. Those details can be seen in here (NOTE: only available for Elasticians).
Smoke tests are triggered based on a specific scheduler, see smoke-tests-ess and smoke-tests-os for further details.
updatecli is the tool we use to automatically bump some of the dependencies related to
the Elastic Stack versions used for the different tests, the elastic/Beats.git
specific version used by the APM Server or the Golang bump automation.