ci: GHA→ghcr builds for chrome-service-novnc, android-emulator, infra CLI (ADR-0002 #29/#30)
All checks were successful
ci/woodpecker/push/default Pipeline was successful

Infra-owned rare-build images move off Woodpecker/manual to GHA (build
from the github checkout — Dockerfiles verified identical on both
remotes). chrome-service-novnc + android-emulator → public ghcr
(dispatch+path). CLI → DockerHub (kept) + ghcr; Woodpecker build-cli.yml
removed. infra-ci handled separately (bootstrap-critical).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Viktor Barzin 2026-06-13 09:38:36 +00:00
parent f61d707d75
commit 1621f0b204
4 changed files with 113 additions and 42 deletions

View file

@ -0,0 +1,36 @@
name: Build android-emulator
# ADR-0002: infra-owned image built off-infra on GHA → ghcr (public).
# Large image (Android SDK + emulator); on-demand workload (scaled 0). Rebuilds
# rare → dispatch + path trigger.
on:
push:
branches: [master]
paths:
- 'stacks/android-emulator/docker/**'
workflow_dispatch: {}
permissions:
contents: read
packages: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/build-push-action@v6
with:
context: stacks/android-emulator/docker
platforms: linux/amd64
provenance: false
push: true
tags: |
ghcr.io/viktorbarzin/android-emulator:latest
ghcr.io/viktorbarzin/android-emulator:${{ github.sha }}

View file

@ -0,0 +1,36 @@
name: Build chrome-service-novnc
# ADR-0002: infra-owned image built off-infra on GHA → ghcr (public).
# Source Dockerfile identical on both git remotes, so the github checkout builds
# the current image. Rebuilds are rare (stable noVNC proxy) → dispatch + path.
on:
push:
branches: [master]
paths:
- 'stacks/chrome-service/files/novnc/**'
workflow_dispatch: {}
permissions:
contents: read
packages: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/build-push-action@v6
with:
context: stacks/chrome-service/files/novnc
platforms: linux/amd64
provenance: false
push: true
tags: |
ghcr.io/viktorbarzin/chrome-service-novnc:latest
ghcr.io/viktorbarzin/chrome-service-novnc:${{ github.sha }}

41
.github/workflows/build-cli.yml vendored Normal file
View file

@ -0,0 +1,41 @@
name: Build infra CLI
# ADR-0002: infra CLI built off-infra on GHA. Replaces the Woodpecker
# build-cli.yml. Pushes to DockerHub (public distribution, kept) + ghcr.
# Not a cluster workload — a distributed tool image.
on:
push:
branches: [master]
paths:
- 'cli/**'
workflow_dispatch: {}
permissions:
contents: read
packages: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- uses: docker/build-push-action@v6
with:
context: cli
platforms: linux/amd64
provenance: false
push: true
tags: |
viktorbarzin/infra:latest
ghcr.io/viktorbarzin/infra-cli:latest
ghcr.io/viktorbarzin/infra-cli:${{ github.sha }}

View file

@ -1,42 +0,0 @@
when:
event: push
clone:
git:
image: woodpeckerci/plugin-git
settings:
attempts: 5
backoff: 10s
steps:
- name: build-image
image: woodpeckerci/plugin-docker-buildx
settings:
username: "viktorbarzin"
password:
from_secret: dockerhub-pat
# Phase 4 of forgejo-registry-consolidation 2026-05-07 —
# registry.viktorbarzin.me:5050 decommissioned. Push to DockerHub
# (the public-facing infra image) AND Forgejo (the cluster pull
# source). Same image, two locations.
repo:
- viktorbarzin/infra
- forgejo.viktorbarzin.me/viktor/infra
logins:
- registry: https://index.docker.io/v1/
username: viktorbarzin
password:
from_secret: dockerhub-pat
- registry: forgejo.viktorbarzin.me
username:
from_secret: forgejo_user
password:
from_secret: forgejo_push_token
dockerfile: cli/Dockerfile
context: cli
auto_tag: true
# cache_from/cache_to removed: registry cache corruption causes
# "short read: expected 32 bytes" BuildKit errors. Inline cache
# will be re-populated once a clean image is pushed.
# cache_from: "registry.viktorbarzin.me:5050/infra:latest"
# cache_to: "type=inline"