Skip to content

Commit

Permalink
[Build] Try and unify builds into multi-arch image
Browse files Browse the repository at this point in the history
  • Loading branch information
Schaka committed Sep 19, 2024
1 parent 0ac8006 commit 6cd3082
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 8 deletions.
30 changes: 28 additions & 2 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,25 @@ jobs:
distribution: 'temurin'
cache: 'gradle'

- name: Log in to Docker Hub
- name: Extract branch name
shell: bash
run: >
echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
id: extract_branch

- name: Log in to Docker Hub to pull images without rate limit
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}

- name: Log into GitHub Container Registry
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Setup Gradle for a non-wrapper project
uses: gradle/actions/setup-gradle@v4
with:
Expand All @@ -49,12 +62,13 @@ jobs:
DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}

- name: Build Native OCI Image
run: gradle bootBuildImage --publishImage
run: gradle bootBuildImage --publishImage --imagePlatform linux/amd64
env:
USERNAME: ${{ github.actor }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}
TARGET_PLATFORM: "amd64"

- name: Setup QEMU for ARM64 OCI Image
#if: startsWith(github.ref, 'refs/tags/v')
Expand All @@ -76,3 +90,15 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}
TARGET_PLATFORM: "arm64"

- name: Combine native images into single manifest
uses: int128/docker-manifest-create-action@v2
with:
tags: |
ghcr.io/schaka/janitorr:native-${{ steps.extract_branch.outputs.branch }}
${{ (startsWith(github.ref, 'refs/tags/v') && 'ghcr.io/schaka/janitorr:native-stable') || '' }}
sources: |
ghcr.io/schaka/janitorr:native-amd64-${{ steps.extract_branch.outputs.branch }}
ghcr.io/schaka/janitorr:native-arm64-${{ steps.extract_branch.outputs.branch }}
10 changes: 4 additions & 6 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ extra {

val containerImageName = "schaka/${project.name}"
val containerImageTags = mutableSetOf(shortCommit, branch)
if (branch.startsWith("v1")) {
if (branch.startsWith("v")) {
containerImageTags.add("stable")
}

Expand All @@ -119,12 +119,10 @@ extra {
project.extra["docker.image.source"] = build.projectSourceRoot()
project.extra["docker.image.tags"] = containerImageTags

val nativeBaseTag = "native"
val platform = System.getenv("TARGET_PLATFORM") ?: "amd64"
val nativeBaseTag = "native-$platform"
val nativeImageName = "ghcr.io/${containerImageName}:$nativeBaseTag"
val nativeImageTags = mutableListOf("$nativeImageName-$branch")
if (branch.startsWith("v1")) {
nativeImageTags.add("$nativeImageName-stable")
}
val nativeImageTags = listOf("$nativeImageName-$branch")

project.extra["native.image.name"] = nativeImageName
project.extra["native.image.tags"] = nativeImageTags
Expand Down

0 comments on commit 6cd3082

Please sign in to comment.