diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 0877367..f98c55d 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -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: @@ -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') @@ -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 }} + diff --git a/build.gradle.kts b/build.gradle.kts index 6d3cead..dc0d2f0 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -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") } @@ -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