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:
parent
15d801be7d
commit
56cdb2e51b
3 changed files with 45 additions and 40 deletions
44
.github/workflows/docker-pr.yml
vendored
Normal file
44
.github/workflows/docker-pr.yml
vendored
Normal 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 }}"
|
22
.github/workflows/docker.yml
vendored
22
.github/workflows/docker.yml
vendored
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue