# tinqs/ci Tinqs CI toolchain — composite Gitea Actions and purpose-built runner images. ## Actions | Action | What it does | |--------|-------------| | `tinqs/ci/checkout@v1` | Clone a repo from tinqs.com | | `tinqs/ci/setup-go@v1` | Install Go (skips if pre-baked) | | `tinqs/ci/setup-node@v1` | Install Node.js + pnpm (skips if pre-baked) | | `tinqs/ci/setup-aws@v1` | Install AWS CLI + optional ECR login | ```yaml steps: - uses: tinqs/ci/checkout@v1 - uses: tinqs/ci/setup-go@v1 - uses: tinqs/ci/setup-aws@v1 with: ecr-login: 'true' ecr-repo: '149751500842.dkr.ecr.eu-west-1.amazonaws.com/tinqs-git' ``` ## Runner Images Each workflow type gets a lean, purpose-built runner image. No fat "everything" image. | Image | `runs-on` | Contents | Used by | |-------|-----------|----------|---------| | **base** | — | Alpine + git + AWS CLI + SSH | Foundation for all others | | **go** | `go` | base + Go 1.26 | build-tstudio, deploy-proxy | | **node** | `node` | base + Node 22 + pnpm | deploy-docs | | **docker** | `docker` | docker:dind + Go + AWS CLI | build (platform), deploy-bot | | **deploy** | `deploy` | base only (lightest) | deploy-arikigame, release | | **godot** | `godot` | base + headless Godot 4.6 + export templates | ariki-game builds (future) | ### Build all images ```bash cd images ./build-all.sh v1 ``` Images push to ECR as `tinqs-runner-{name}:v1`. ### How routing works The Lambda dispatcher reads `runs-on:` from the workflow and starts a Fargate task with the matching image: ``` runs-on: go → tinqs-runner-go (Go builds) runs-on: node → tinqs-runner-node (frontend builds) runs-on: docker → tinqs-runner-docker (Docker image builds) runs-on: deploy → tinqs-runner-deploy (S3/ECS deploys) runs-on: godot → tinqs-runner-godot (game exports) runs-on: host → legacy runner (forge-runner, temporary) ```