This commit is contained in:
@@ -19,49 +19,38 @@ jobs:
|
|||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/actions/setup-gradle@v3
|
uses: gradle/actions/setup-gradle@v3
|
||||||
- name: Execute Gradle build
|
- name: Execute Gradle build
|
||||||
|
run: ./gradlew build
|
||||||
|
- name: Prepare Docker image build
|
||||||
|
run: ./gradlew prepareDockerBuild
|
||||||
|
-
|
||||||
|
name: Build gbcs Docker image
|
||||||
|
uses: docker/build-push-action@v5.3.0
|
||||||
|
with:
|
||||||
|
context: "{{defaultContext}}:docker/build/docker"
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
push: true
|
||||||
|
pull: true
|
||||||
|
tags: gitea.woggioni.net/woggioni/gbcs:latest
|
||||||
|
target: release
|
||||||
|
cache-from: type=registry,ref=gitea.woggioni.net/woggioni/gbcs:buildx
|
||||||
|
-
|
||||||
|
name: Build gbcs memcached Docker image
|
||||||
|
uses: docker/build-push-action@v5.3.0
|
||||||
|
with:
|
||||||
|
context: "{{defaultContext}}:docker/build/docker"
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
push: true
|
||||||
|
pull: true
|
||||||
|
tags: gitea.woggioni.net/woggioni/gbcs:memcached
|
||||||
|
target: release-memcached
|
||||||
|
cache-from: type=registry,ref=gitea.woggioni.net/woggioni/gbcs:buildx
|
||||||
|
cache-to: type=registry,mode=max,compression=zstd,image-manifest=true,oci-mediatypes=true,ref=gitea.woggioni.net/woggioni/gbcs:buildx
|
||||||
|
- name: Publish Docker image
|
||||||
env:
|
env:
|
||||||
PUBLISHER_TOKEN: ${{ secrets.PUBLISHER_TOKEN }}
|
PUBLISHER_TOKEN: ${{ secrets.PUBLISHER_TOKEN }}
|
||||||
run: ./gradlew build
|
run: ./gradlew dockerPushImage
|
||||||
- name: Publish artifacts
|
- name: Publish artifacts
|
||||||
env:
|
env:
|
||||||
PUBLISHER_TOKEN: ${{ secrets.PUBLISHER_TOKEN }}
|
PUBLISHER_TOKEN: ${{ secrets.PUBLISHER_TOKEN }}
|
||||||
run: ./gradlew publish
|
run: ./gradlew publish
|
||||||
build-docker:
|
|
||||||
name: "Build Docker images"
|
|
||||||
runs-on: hostinger
|
|
||||||
steps:
|
|
||||||
-
|
|
||||||
name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v3.4.0
|
|
||||||
with:
|
|
||||||
driver: docker-container
|
|
||||||
-
|
|
||||||
name: Login to Gitea container registry
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
|
||||||
registry: gitea.woggioni.net
|
|
||||||
username: woggioni
|
|
||||||
password: ${{ secrets.PUBLISHER_TOKEN }}
|
|
||||||
-
|
|
||||||
name: Build and push gbcs images
|
|
||||||
uses: docker/build-push-action@v6
|
|
||||||
with:
|
|
||||||
push: true
|
|
||||||
pull: true
|
|
||||||
tags: |
|
|
||||||
"gitea.woggioni.net/woggioni/gbcs:slim"
|
|
||||||
cache-from: type=registry,ref=gitea.woggioni.net/woggioni/gbcs:buildx
|
|
||||||
cache-to: type=registry,mode=max,compression=zstd,image-manifest=true,oci-mediatypes=true,ref=gitea.woggioni.net/woggioni/gbcs:buildx
|
|
||||||
target: release
|
|
||||||
-
|
|
||||||
name: Build and push gbcs memcached image
|
|
||||||
uses: docker/build-push-action@v6
|
|
||||||
with:
|
|
||||||
push: true
|
|
||||||
pull: true
|
|
||||||
tags: |
|
|
||||||
"gitea.woggioni.net/woggioni/gbcs:latest"
|
|
||||||
"gitea.woggioni.net/woggioni/gbcs:memcached"
|
|
||||||
cache-from: type=registry,ref=gitea.woggioni.net/woggioni/gbcs:buildx
|
|
||||||
cache-to: type=registry,mode=max,compression=zstd,image-manifest=true,oci-mediatypes=true,ref=gitea.woggioni.net/woggioni/gbcs:buildx
|
|
||||||
target: release-memcached
|
|
||||||
|
@@ -130,3 +130,5 @@ publishing {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
21
docker/Dockerfile
Normal file
21
docker/Dockerfile
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
FROM alpine:latest AS base-release
|
||||||
|
RUN --mount=type=cache,target=/var/cache/apk apk update
|
||||||
|
RUN --mount=type=cache,target=/var/cache/apk apk add openjdk21-jre
|
||||||
|
RUN adduser -D luser
|
||||||
|
USER luser
|
||||||
|
WORKDIR /home/luser
|
||||||
|
|
||||||
|
FROM base-release AS release
|
||||||
|
ADD gbcs-cli-envelope-*.jar gbcs.jar
|
||||||
|
ENTRYPOINT ["java", "-jar", "/home/luser/gbcs.jar"]
|
||||||
|
|
||||||
|
FROM base-release AS release-memcached
|
||||||
|
ADD --chown=luser:luser gbcs-cli-envelope-*.jar gbcs.jar
|
||||||
|
RUN mkdir plugins
|
||||||
|
WORKDIR /home/luser/plugins
|
||||||
|
RUN --mount=type=bind,source=.,target=/build/distributions tar -xf /build/distributions/gbcs-memcached*.tar
|
||||||
|
WORKDIR /home/luser
|
||||||
|
ENTRYPOINT ["java", "-jar", "/home/luser/gbcs.jar"]
|
||||||
|
|
||||||
|
FROM release-memcached as compose
|
||||||
|
COPY --chown=luser:luser conf/gbcs-memcached.xml /home/luser/.config/gbcs/gbcs.xml
|
52
docker/build.gradle
Normal file
52
docker/build.gradle
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
plugins {
|
||||||
|
id 'base'
|
||||||
|
alias(catalog.plugins.gradle.docker)
|
||||||
|
}
|
||||||
|
|
||||||
|
import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage
|
||||||
|
import com.bmuschko.gradle.docker.tasks.image.DockerPushImage
|
||||||
|
|
||||||
|
|
||||||
|
configurations {
|
||||||
|
docker {
|
||||||
|
canBeResolved = true
|
||||||
|
transitive = false
|
||||||
|
visible = false
|
||||||
|
canBeConsumed = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
docker project(path: ':gbcs-cli', configuration: 'release')
|
||||||
|
docker project(path: ':gbcs-memcached', configuration: 'release')
|
||||||
|
}
|
||||||
|
|
||||||
|
Provider<Task> cleanTaskProvider = tasks.named(BasePlugin.CLEAN_TASK_NAME) {}
|
||||||
|
|
||||||
|
Provider<Copy> prepareDockerBuild = tasks.register('prepareDockerBuild', Copy) {
|
||||||
|
dependsOn cleanTaskProvider
|
||||||
|
group = 'docker'
|
||||||
|
into project.layout.buildDirectory.file('docker')
|
||||||
|
from(configurations.docker)
|
||||||
|
from(file('Dockerfile'))
|
||||||
|
}
|
||||||
|
|
||||||
|
Provider<DockerBuildImage> dockerBuild = tasks.register('dockerBuildImage', DockerBuildImage) {
|
||||||
|
group = 'docker'
|
||||||
|
dependsOn prepareDockerBuild
|
||||||
|
images.add('gitea.woggioni.net/woggioni/gbcs:latest')
|
||||||
|
images.add("gitea.woggioni.net/woggioni/gbcs:${version}")
|
||||||
|
}
|
||||||
|
|
||||||
|
Provider<DockerPushImage> dockerPush = tasks.register('dockerPushImage', DockerPushImage) {
|
||||||
|
group = 'docker'
|
||||||
|
dependsOn dockerBuild
|
||||||
|
registryCredentials {
|
||||||
|
url = getProperty('docker.registry.url')
|
||||||
|
username = 'woggioni'
|
||||||
|
password = System.getenv().get("PUBLISHER_TOKEN")
|
||||||
|
}
|
||||||
|
images = dockerBuild.flatMap { it.images }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@@ -21,6 +21,15 @@ tasks.named(JavaPlugin.COMPILE_JAVA_TASK_NAME, JavaCompile) {
|
|||||||
options.javaModuleMainClass = mainClassName
|
options.javaModuleMainClass = mainClassName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
configurations {
|
||||||
|
release {
|
||||||
|
transitive = false
|
||||||
|
canBeConsumed = true
|
||||||
|
canBeResolved = true
|
||||||
|
visible = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
envelopeJar {
|
envelopeJar {
|
||||||
mainModule = 'net.woggioni.gbcs.cli'
|
mainModule = 'net.woggioni.gbcs.cli'
|
||||||
mainClass = mainClassName
|
mainClass = mainClassName
|
||||||
@@ -56,6 +65,10 @@ tasks.named(NativeImagePlugin.NATIVE_IMAGE_TASK_NAME, NativeImageTask) {
|
|||||||
buildStaticImage = true
|
buildStaticImage = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
artifacts {
|
||||||
|
release(envelopeJarTaskProvider)
|
||||||
|
}
|
||||||
|
|
||||||
publishing {
|
publishing {
|
||||||
publications {
|
publications {
|
||||||
maven(MavenPublication) {
|
maven(MavenPublication) {
|
||||||
@@ -64,3 +77,4 @@ publishing {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -22,7 +22,15 @@ configurations {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
release {
|
||||||
|
transitive = false
|
||||||
|
canBeConsumed = true
|
||||||
|
canBeResolved = true
|
||||||
|
visible = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly project(':gbcs-base')
|
compileOnly project(':gbcs-base')
|
||||||
compileOnly project(':gbcs-api')
|
compileOnly project(':gbcs-api')
|
||||||
@@ -40,6 +48,10 @@ tasks.named(BasePlugin.ASSEMBLE_TASK_NAME) {
|
|||||||
dependsOn(bundleTask)
|
dependsOn(bundleTask)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
artifacts {
|
||||||
|
release(bundleTask)
|
||||||
|
}
|
||||||
|
|
||||||
publishing {
|
publishing {
|
||||||
publications {
|
publications {
|
||||||
maven(MavenPublication) {
|
maven(MavenPublication) {
|
||||||
|
@@ -7,3 +7,4 @@ gbcs.version = 0.0.1
|
|||||||
lys.version = 2025.01.10
|
lys.version = 2025.01.10
|
||||||
|
|
||||||
gitea.maven.url = https://gitea.woggioni.net/api/packages/woggioni/maven
|
gitea.maven.url = https://gitea.woggioni.net/api/packages/woggioni/maven
|
||||||
|
docker.registry.url=gitea.woggioni.net
|
||||||
|
@@ -30,5 +30,6 @@ include 'gbcs-api'
|
|||||||
include 'gbcs-base'
|
include 'gbcs-base'
|
||||||
include 'gbcs-memcached'
|
include 'gbcs-memcached'
|
||||||
include 'gbcs-cli'
|
include 'gbcs-cli'
|
||||||
|
include 'docker'
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user