Fix docker image CI for pull requests (#84)

Closes #65

Pull request images will now be `ttl.sh/techaro/pr-{number}/anubis:24h`.
This commit is contained in:
Xe Iaso 2025-03-22 11:26:49 -04:00 committed by GitHub
parent 15d801be7d
commit 56cdb2e51b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 45 additions and 40 deletions

44
.github/workflows/docker-pr.yml vendored Normal file
View file

@ -0,0 +1,44 @@
name: Docker image builds (pull requests)
on:
pull_request:
branches: [ "main" ]
env:
DOCKER_METADATA_SET_OUTPUT_ENV: "true"
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-tags: true
fetch-depth: 0
- uses: actions/setup-go@v5
with:
go-version: '1.24.x'
- uses: ko-build/setup-ko@v0.8
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/techarohq/anubis
- name: Build and push
id: build
run: |
go run ./cmd/containerbuild --docker-repo ghcr.io/techarohq/anubis --slog-level debug
env:
PULL_REQUEST_ID: ${{ github.event.number }}
- run: |
echo "Test this with:"
echo "docker pull ${{ steps.build.outputs.docker_image }}"

View file

@ -5,8 +5,6 @@ on:
push: push:
branches: [ "main" ] branches: [ "main" ]
tags: [ "v*" ] tags: [ "v*" ]
pull_request:
branches: [ "main" ]
env: env:
DOCKER_METADATA_SET_OUTPUT_ENV: "true" DOCKER_METADATA_SET_OUTPUT_ENV: "true"
@ -28,12 +26,6 @@ jobs:
fetch-tags: true fetch-tags: true
fetch-depth: 0 fetch-depth: 0
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- uses: actions/setup-go@v5 - uses: actions/setup-go@v5
with: with:
go-version: '1.24.x' go-version: '1.24.x'
@ -57,20 +49,6 @@ jobs:
id: build id: build
run: | run: |
go run ./cmd/containerbuild --docker-repo ghcr.io/techarohq/anubis --slog-level debug go run ./cmd/containerbuild --docker-repo ghcr.io/techarohq/anubis --slog-level debug
env:
PULL_REQUEST_ID: ${{ github.event.number }}
# - name: "Comment about where to test this"
# uses: thollander/actions-comment-pull-request@v3
# if: ${{github.event_name == 'pull_request'}}
# with:
# message: |
# You can try this PR out by using the following docker image:
# ```
# ${{ steps.build.outputs.docker_image }}
# ```
# comment-tag: ${{ steps.build.outputs.docker_image }}
- name: Generate artifact attestation - name: Generate artifact attestation
uses: actions/attest-build-provenance@v2 uses: actions/attest-build-provenance@v2

View file

@ -23,21 +23,8 @@ var (
githubEventName = flag.String("github-event-name", "", "GitHub event name") githubEventName = flag.String("github-event-name", "", "GitHub event name")
pullRequestID = flag.Int("pull-request-id", -1, "GitHub pull request ID") pullRequestID = flag.Int("pull-request-id", -1, "GitHub pull request ID")
slogLevel = flag.String("slog-level", "INFO", "logging level (see https://pkg.go.dev/log/slog#hdr-Levels)") slogLevel = flag.String("slog-level", "INFO", "logging level (see https://pkg.go.dev/log/slog#hdr-Levels)")
knownContributors = []string{
"Xe",
}
) )
func inList(needle string, haystack []string) bool {
for _, h := range haystack {
if h == needle {
return true
}
}
return false
}
func main() { func main() {
flagenv.Parse() flagenv.Parse()
flag.Parse() flag.Parse()
@ -46,11 +33,7 @@ func main() {
koDockerRepo := strings.TrimRight(*dockerRepo, "/"+filepath.Base(*dockerRepo)) koDockerRepo := strings.TrimRight(*dockerRepo, "/"+filepath.Base(*dockerRepo))
if *githubEventName == "pull_request" && !inList(*githubActor, knownContributors) { if *githubEventName == "pull_request" && *pullRequestID != -1 {
if *pullRequestID == -1 {
log.Fatal("Must set --pull-request-id when --github-event-name=pull_request")
}
*dockerRepo = fmt.Sprintf("ttl.sh/techaro/pr-%d/anubis", *pullRequestID) *dockerRepo = fmt.Sprintf("ttl.sh/techaro/pr-%d/anubis", *pullRequestID)
*dockerTags = fmt.Sprintf("ttl.sh/techaro/pr-%d/anubis:24h", *pullRequestID) *dockerTags = fmt.Sprintf("ttl.sh/techaro/pr-%d/anubis:24h", *pullRequestID)
koDockerRepo = fmt.Sprintf("ttl.sh/techaro/pr-%d", *pullRequestID) koDockerRepo = fmt.Sprintf("ttl.sh/techaro/pr-%d", *pullRequestID)