ci: migrate from CircleCI to GitHub Actions#6753
Open
nicksieger wants to merge 26 commits into
Open
Conversation
- Add GitHub Actions workflows for CI, linting, integration tests, Windows builds, docs checks, and releases - Remove TILT_CLOUD_TOKEN dependency from release-ci.sh - Workflows replicate CircleCI functionality with equivalent GitHub Actions Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> Signed-off-by: Nick Sieger <nick@nicksieger.com>
Replace SSH deploy keys (TILT_BUILD_DEPLOY_KEY, DEPLOY_SSH_KEY) with GitHub App token generation using actions/create-github-app-token. - docs.yml: checkout tilt.build via actions/checkout with app token - release.yml: generate token with access to tilt, tilt.build, cloud.tilt.dev, tilt-extensions repos for release script pushes - update git config email to tilt-team@docker.com Also pin all actions to their commit shas. Signed-off-by: Nick Sieger <nick@nicksieger.com> Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Nick Sieger <nick@nicksieger.com>
Signed-off-by: Nick Sieger <nick@nicksieger.com>
Signed-off-by: Nick Sieger <nick@nicksieger.com>
The mounted Docker socket is owned by root:docker on the host, requiring elevated permissions from within the container. Signed-off-by: Nick Sieger <nick@nicksieger.com>
- Running as root causes Git ownership mismatch with files checked out by the container default user - Fetch master branch ref for `git merge-base master HEAD` in build Signed-off-by: Nick Sieger <nick@nicksieger.com>
fixes fatal: ambiguous argument '': unknown revision or path not in the working tree. Signed-off-by: Nick Sieger <nick@nicksieger.com>
The dind service has DNS resolution issues in GitHub Actions container jobs. Switch to mounting the host Docker socket, which is simpler and more reliable. Requires --user root and git safe directory config. Signed-off-by: Nick Sieger <nick@nicksieger.com>
Signed-off-by: Nick Sieger <nick@nicksieger.com>
Signed-off-by: Nick Sieger <nick@nicksieger.com>
Signed-off-by: Nick Sieger <nick@nicksieger.com>
Signed-off-by: Nick Sieger <nick@nicksieger.com>
Signed-off-by: Nick Sieger <nick@nicksieger.com>
The Makefile's install target uses `git merge-base master HEAD`, which requires a local master branch. actions/checkout only fetches the PR branch, so we need to explicitly fetch master and create the local ref. - ci.yml: add Fetch master branch step - integration.yml: add fetch-depth: 0 and Fetch master branch step to build-integration and test-extensions jobs - docs.yml: add git safe directory and Fetch master branch step Signed-off-by: Nick Sieger <nick@nicksieger.com>
Signed-off-by: Nick Sieger <nick@nicksieger.com>
Signed-off-by: Nick Sieger <nick@nicksieger.com>
Signed-off-by: Nick Sieger <nick@nicksieger.com>
Signed-off-by: Nick Sieger <nick@nicksieger.com>
Signed-off-by: Nick Sieger <nick@nicksieger.com>
Fail the run if the docker socket isn't connected to gid 118 Signed-off-by: Nick Sieger <nick@nicksieger.com>
When running as non-root, go install puts binaries in $HOME/go/bin (/github/home/go/bin), but the container PATH only includes /root/go/bin. Set GOBIN=/usr/local/bin to install tilt to a directory that's already in PATH. Also require build-integration to succeed first before running. Signed-off-by: Nick Sieger <nick@nicksieger.com>
Exit code 137 indicates the process was killed by OOM killer. Unlike CircleCI's setup_remote_docker which provides isolation, GitHub Actions socket mounting shares the host's Docker resources and memory pool. Add docker system prune before setting up Kind clusters to free memory from unused containers, images, and volumes accumulated from previous runs or other jobs on the same runner. Signed-off-by: Nick Sieger <nick@nicksieger.com>
Split integration tests into 4 parallel jobs to reduce memory pressure and prevent OOM kills: - quick: Analytics, config, crash, CRD, demo, env tests (19 tests) - docker-compose: Docker Compose tests (3 tests) - live-update: Live update tests (5 tests) - k8s-deploy: K8s deployment and job tests (14 tests) Each job sets up its own Kind cluster and runs a subset of tests, reducing peak memory usage. Jobs run in parallel with fail-fast disabled so failures in one group don't cancel others. Signed-off-by: Nick Sieger <nick@nicksieger.com>
7 tasks
3fb061f to
08d2916
Compare
Signed-off-by: Nick Sieger <nick@nicksieger.com>
08d2916 to
799d62a
Compare
Signed-off-by: Nick Sieger <nick@nicksieger.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Migrate CI/CD pipeline from CircleCI to GitHub Actions.
New Workflow Files
ci.ymllint.ymlintegration.ymlwindows.ymldocs.ymlrelease.ymlChanges
TILT_CLOUD_TOKENdependency fromscripts/release-ci.shRequired GitHub Configuration
Variables (Settings > Secrets and variables > Actions > Variables)
TILT_APP_IDSecrets (Settings > Secrets and variables > Actions > Secrets)
TILT_APP_PRIVATE_KEYSLACK_WEBHOOK_URLDOCKER_USERNAMEDOCKER_TOKENPULUMI_ACCESS_TOKENGitHub App Requirements
The GitHub App must be installed on the
tilt-devorganization with access to:tilt- for release operationstilt.build- for docs verification and release updatescloud.tilt.dev- for release record updatestilt-extensions- for extension version updatesMigration Notes
setup_remote_dockerreplaced with Docker-in-Docker service containerscircleci-agent step halt) replaced with job-levelif:conditionsTest plan
🤖 Generated with Claude Code