CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
73 lines
2.5 KiB
ReStructuredText
73 lines
2.5 KiB
ReStructuredText
.. _AddingNewCIJobs:
|
|
|
|
==================
|
|
Adding New CI Jobs
|
|
==================
|
|
|
|
.. contents::
|
|
:local:
|
|
|
|
Adding The Job
|
|
==============
|
|
|
|
libc++ uses Buildkite for running its CI. Setting up new CI jobs is easy, and
|
|
these jobs can run either on our existing infrastructure, or on your own.
|
|
|
|
If you need to run the job on your own machines, please follow the
|
|
`Buildkite guide <https://buildkite.com/docs/agent/v3>`_ to setup your
|
|
own agents. Make sure you tag your agents in a way that you'll be able
|
|
to recognize them when defining your job below. Finally, in order for the
|
|
agent to register itself to Buildkite, it will need a BuildKite Agent token.
|
|
Please contact a maintainer to get your token.
|
|
|
|
Then, simply add a job to the Buildkite pipeline by editing ``libcxx/utils/ci/buildkite-pipeline.yml``.
|
|
Take a look at how the surrounding jobs are defined and do something similar.
|
|
An example of a job definition is:
|
|
|
|
.. code-block:: yaml
|
|
|
|
- label: "C++11"
|
|
command: "libcxx/utils/ci/run-buildbot generic-cxx11"
|
|
env:
|
|
CC: clang
|
|
CXX: clang++
|
|
artifact_paths:
|
|
- "**/test-results.xml"
|
|
agents:
|
|
queue: "libcxx-builders"
|
|
os: "linux"
|
|
retry:
|
|
[...]
|
|
|
|
If you create your own agents, put them in the ``libcxx-builders`` queue and
|
|
use agent tags to allow targeting your agents from the Buildkite pipeline
|
|
config appropriately.
|
|
|
|
We try to keep the pipeline definition file as simple as possible, and to
|
|
keep any script used for CI inside ``libcxx/utils/ci``. This ensures that
|
|
it's possible to reproduce CI issues locally with ease, understanding of
|
|
course that some setups may require access to special hardware that is not
|
|
available.
|
|
|
|
Finally, add your contact info to ``libcxx/utils/ci/BOT_OWNERS.txt``. This will
|
|
be used to contact you when there are issues with the bot.
|
|
|
|
Testing Your New Job
|
|
====================
|
|
|
|
Testing your new job is easy -- once your agent is set up (if any), just open
|
|
a code review and the libc++ CI pipeline will run, including any changes you
|
|
might have made to the pipeline definition itself.
|
|
|
|
Service Level Agreement
|
|
=======================
|
|
|
|
To keep the libc++ CI useful for everyone, we aim for a quick turnaround time
|
|
for all CI jobs. This allows the overall pipeline to finish in a reasonable
|
|
amount of time, which is important because it directly affects our development
|
|
velocity. We also try to make sure that jobs run on reliable infrastructure in
|
|
order to avoid flaky failures, which reduce the value of CI for everyone.
|
|
|
|
We may be reluctant to add and support CI jobs that take a long time to finish
|
|
or that are too flaky.
|