Buildkite โ
Run your Shiplight E2E tests in Buildkite and upload the results to Shiplight Cloud. Buildkite uses the same shiplight CLI as every other provider โ only the pipeline syntax differs.
Before you start โ
- A scaffolded Shiplight test project (
/shiplight init). See the CI/CD overview for how the pieces fit together. - An org API token from app.shiplight.ai/api-tokens. Expose it to the job as
SHIPLIGHT_API_TOKENvia your agent's secret mechanism (e.g. thesecretsfield or a secrets plugin) โ never commit it to the pipeline file.
Pipeline โ
Create .buildkite/pipeline.yml at your repository root:
yaml
steps:
- label: ":test_tube: Shiplight E2E"
plugins:
- docker#v5.11.0:
image: "node:20"
env:
SHIPLIGHT_REPORT_TO_CLOUD: "1"
# SHIPLIGHT_API_TOKEN is provided as a secret, not set here.
command: |
npm install
npx playwright install --with-deps chromium
set +e
npx shiplight test; STATUS=$?
npx shiplight report # upload regardless of the test result
exit $STATUSNotes โ
SHIPLIGHT_API_TOKENandSHIPLIGHT_REPORT_TO_CLOUD=1are required on every non-Shiplight runner โ they are provided automatically only on Shiplight-hosted GitHub runners.- Install Chromium yourself (
npx playwright install --with-deps chromium); no stock image ships it. - Buildkite stops a
commandlist on the first failure, so the template captures the test exit code, always runsreport, then re-exits with the original status โ that's how the upload survives a red run. - Not available on Buildkite: Shiplight-hosted runners, the self-healing action cache, automatic LLM credentials, and auto-triage โ those are GitHub Actions only.
- Project in a subdirectory (e.g.
tests/e2e)?cd tests/e2eas the first line of thecommand.