Skip to content

Migrate from Segment to Twilio Buildkite#850

Merged
sayan-das-in merged 10 commits into
masterfrom
buildkite-migrations
Jun 23, 2026
Merged

Migrate from Segment to Twilio Buildkite#850
sayan-das-in merged 10 commits into
masterfrom
buildkite-migrations

Conversation

@AnkitSegment

@AnkitSegment AnkitSegment commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Summary

Fixes the Buildkite pipeline on the Twilio locked-down general-039 agents. The previous pipeline still depended on Segment-only infrastructure and failed every run.

Verified green on build #11 (Build and Test + SauceLabs both passed).

Root causes fixed

  • Segment cache-buildkite-pluginshasum: command not found + S3 403 on the locked-down agents. Removed.
  • No browser in the test image — tests run Karma ChromeHeadless, but node:*-alpine ships no browser. Added a CI image with Chromium.
  • No public internet egressdocker.io pulls TLS-timeout, so apk add chromium can't reach the public Alpine CDN. Chromium is installed from the Twilio base-alpine apk mirror.
  • phantomjs-prebuilt postinstall download (the real blocker) — several integrations pull it as a devDependency; its install downloads a binary from a public CDN and fails yarn install. It has no skip flag, so a tiny phantomjs stub on PATH reporting 2.1.1 makes its installer skip the download. The phantom launcher is unused — tests only run ChromeHeadless.
  • SauceLabs used an unauthenticated Segment ECR image; moved to the same compose CI image.

Changes

File Change
.buildkite/Dockerfile.ci CI image: node (Twilio ECR mirror) + Chromium (Twilio base-alpine apk mirror) + phantomjs stub
docker-compose-ci.yml Compose service that builds the CI image and runs the suite
.buildkite/pipeline.yml Build/Test + SauceLabs steps via the docker-compose plugin with mount-checkout
karma.conf.js ChromeHeadlessNoSandbox launcher (container runs as root)
.npmrc Twilio Artifactory virtual-npm registry

Notes / follow-ups

  • On a branch with no integration changes, yarn test runs --since master and reports "no packages" — passes without exercising integration tests. The CI infra is verified working; a branch touching an integration will exercise real Chrome runs.
  • The Upload Assets steps still call ./.buildkite/upload.sh / publish.sh, which rely on Segment agent hooks (SEGMENT_LIB_PATH, run-with-role). Being verified separately on staging.

🤖 Generated with Claude Code

Testing

Testing not required as migrating from Segment to Twilio BK.

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants