Reusable GitHub Actions for deploying services on Skiff2 — a GCP-based platform that builds Docker images and deploys them as Cloud Run services behind a shared load balancer, managed via Terraform.
All behavior is driven by action inputs. The build and deploy actions derive their configuration entirely from a skiff2.json file (passed as an input) along with a small set of additional inputs (e.g. project_id, region). No configuration is baked into the actions themselves.
Install act: https://nektosact.com/installation/index.html. On MacOS, install with brew:
brew install actRun act targeting the test workflow (example uses the shared build action):
act -W shared-actions/build/test/test-action.ymlIf you're having trouble with docker sockets when using colima, follow these instructions: nektos/act#2239 (comment)
Takes GCP credentials and project inputs and sets up Workload Identity Federation authentication, Cloud SDK, and Docker for GCR.
Takes a skiff2.json config and image-tagging inputs, builds Docker images for the defined services, and pushes them to GCR.
Takes a skiff2.json config and a command input (plan or apply), transforms the config into Terraform variables, and provisions shared infrastructure (load balancer, URL map, NEGs, SSL certificates).
Takes a skiff2.json config, an environment input, and a command input (plan or apply), transforms the config into Terraform variables, and deploys Cloud Run services into the specified Terraform workspace.
The project-terraform/ directory contains the Terraform modules used by the deploy actions:
infra/— shared infrastructure (load balancer, networking)services/— Cloud Run service definitions
To format files, run npx prettier . --write.
Apache 2.0 — see LICENSE.