Skip to content

Migrate website build & deploy from Travis-CI to Cloud Build#882

Open
nkinkade wants to merge 2 commits into
mainfrom
sandbox-kinkade
Open

Migrate website build & deploy from Travis-CI to Cloud Build#882
nkinkade wants to merge 2 commits into
mainfrom
sandbox-kinkade

Conversation

@nkinkade

@nkinkade nkinkade commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Migrate website build & deploy from Travis-CI to Google Cloud Build

Replaces the Travis-CI build/deploy with Google Cloud Build, matching M-Lab's
conventions (per-project triggers, $PROJECT_ID substitution, deploy as the
Cloud Build service account).

What changes

  • Add cloudbuild.yaml — builds the Jekyll site (reusing the existing
    _tests/travis-checks logic) and deploys. The deploy target is selected by
    the triggering project, guarded by $PROJECT_ID:
    • mlab-sandbox (push to sandbox-*) → GCS website.mlab-sandbox…
    • mlab-staging (push to main) → GCS website.mlab-staging…
    • mlab-oti (git tag) → Firebase Hosting
  • Add Dockerfile.build — builder image (Ruby 3.1, Node 18 for the r.js
    optimizer, Jupyter/nbconvert for the notebook plugin, firebase-tools).
  • Remove .travis.yml + firebase-deploy.sh, the m-lab/travis submodule,
    and the defunct travis-ci.org badge; update CONTRIBUTING.md.
  • No more SERVICE_ACCOUNT_* key env vars — deploys authenticate as the
    project's Cloud Build service account.

Triggers (already created)

push-m-lab-website-trigger exists in mlab-sandbox, mlab-staging, and
mlab-oti. The mlab-oti Cloud Build SA was granted roles/firebasehosting.admin.

Testing

  • sandbox: manual gcloud builds submit and trigger-driven build both
    passed — site built and deployed to the sandbox GCS bucket.
  • staging: manual build passed — deployed to the staging GCS bucket.
  • prod (Firebase): verified via a Firebase Hosting preview channel deploy
    from mlab-oti (auth via ADC worked; live site untouched).

Cutover

Merging this PR makes Cloud Build the sole CI/CD for the site and stops Travis
from building it (the config is gone). The staging trigger deploys on merge to
main; the next release tag exercises the production Firebase deploy.


This change is Reviewable

nkinkade and others added 2 commits July 1, 2026 15:34
Adds cloudbuild.yaml and Dockerfile.build so the site builds and deploys
via Google Cloud Build instead of Travis-CI. The deploy target is chosen
by the triggering project: GCS buckets for sandbox/staging and Firebase
Hosting for production, authenticating as the Cloud Build service account
(no more SERVICE_ACCOUNT_* key env vars).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Deletes .travis.yml and firebase-deploy.sh (superseded by cloudbuild.yaml),
removes the now-unused m-lab/travis submodule, drops the defunct travis-ci.org
build badge, and updates CONTRIBUTING.md to describe the Cloud Build pipeline.
Adds .gcloudignore for manual 'gcloud builds submit' runs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@nkinkade nkinkade requested a review from robertodauria July 1, 2026 22:25
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.

1 participant