From c270cf5ede9436b52265b36acb4e74fa07c0e928 Mon Sep 17 00:00:00 2001 From: thongdk8 Date: Thu, 12 Jun 2025 12:44:17 +0900 Subject: [PATCH 1/5] Add Docker support for ScalarDB Data Loader CLI --- .github/workflows/ci.yaml | 11 +++++++++++ .github/workflows/create-release.yaml | 13 +++++++++++++ .github/workflows/release-snapshot.yaml | 1 + .github/workflows/upload-artifacts.yaml | 1 + .github/workflows/vuln-check.yaml | 2 +- data-loader/cli/Dockerfile | 13 +++++++++++++ data-loader/cli/build.gradle | 20 ++++++++++++++++++++ 7 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 data-loader/cli/Dockerfile diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 551ec1888f..799f6e59ce 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -67,8 +67,12 @@ jobs: run: | mkdir -p /tmp/gradle_test_reports/core mkdir -p /tmp/gradle_test_reports/schema-loader + mkdir -p /tmp/gradle_test_reports/data-loader/core + mkdir -p /tmp/gradle_test_reports/data-loader/cli cp -a core/build/reports/tests/test /tmp/gradle_test_reports/core/ cp -a schema-loader/build/reports/tests/test /tmp/gradle_test_reports/schema-loader/ + cp -a data-loader/core/build/reports/tests/test /tmp/gradle_test_reports/data-loader/core/ + cp -a data-loader/cli/build/reports/tests/test /tmp/gradle_test_reports/data-loader/cli/ - name: Upload Gradle test reports if: always() @@ -83,9 +87,13 @@ jobs: mkdir -p /tmp/gradle_spotbugs_reports/core mkdir -p /tmp/gradle_spotbugs_reports/schema-loader mkdir -p /tmp/gradle_spotbugs_reports/integration-test + mkdir -p /tmp/gradle_spotbugs_reports/data-loader/core + mkdir -p /tmp/gradle_spotbugs_reports/data-loader/cli cp -a core/build/reports/spotbugs /tmp/gradle_spotbugs_reports/core/ cp -a schema-loader/build/reports/spotbugs /tmp/gradle_spotbugs_reports/schema-loader/ cp -a integration-test/build/reports/spotbugs /tmp/gradle_spotbugs_reports/integration-test/ + cp -a data-loader/core/build/reports/spotbugs /tmp/gradle_spotbugs_reports/data-loader/core/ + cp -a data-loader/cli/build/reports/spotbugs /tmp/gradle_spotbugs_reports/data-loader/cli/ - name: Upload Spotbugs reports if: always() @@ -113,6 +121,9 @@ jobs: - name: Dockerfile Lint for ScalarDB Schema Loader run: ./gradlew schema-loader:dockerfileLint + - name: Dockerfile Lint for ScalarDB Data Loader CLI + run: ./gradlew data-loader:cli:dockerfileLint + integration-test-for-cassandra-3-0: name: Cassandra 3.0 integration test (${{ matrix.mode.label }}) runs-on: ubuntu-latest diff --git a/.github/workflows/create-release.yaml b/.github/workflows/create-release.yaml index a7a1686ee1..27d68202fa 100644 --- a/.github/workflows/create-release.yaml +++ b/.github/workflows/create-release.yaml @@ -77,3 +77,16 @@ jobs: asset_path: schema-loader/build/libs/scalardb-schema-loader-${{ steps.version.outputs.version }}.jar asset_name: scalardb-schema-loader-${{ steps.version.outputs.version }}.jar asset_content_type: application/java-archive + + - name: Build scalardb-data-loader-cli jar + run: ./gradlew :data-loader:cli:shadowJar + + - name: Upload scalardb-data-loader-cli jar + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GH_PROJECT_ACCESS_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: data-loader/cli/build/libs/scalardb-data-loader-cli-${{ steps.version.outputs.version }}.jar + asset_name: scalardb-data-loader-cli-${{ steps.version.outputs.version }}.jar + asset_content_type: application/java-archive diff --git a/.github/workflows/release-snapshot.yaml b/.github/workflows/release-snapshot.yaml index 341e025ead..d2f062eef8 100644 --- a/.github/workflows/release-snapshot.yaml +++ b/.github/workflows/release-snapshot.yaml @@ -56,3 +56,4 @@ jobs: if: contains(steps.version.outputs.version, '-SNAPSHOT') run: | docker push ghcr.io/scalar-labs/scalardb-schema-loader:${{ steps.version.outputs.version }} + docker push ghcr.io/scalar-labs/scalardb-data-loader-cli:${{ steps.version.outputs.version }} diff --git a/.github/workflows/upload-artifacts.yaml b/.github/workflows/upload-artifacts.yaml index 3a0635c954..fc6c4b7d65 100644 --- a/.github/workflows/upload-artifacts.yaml +++ b/.github/workflows/upload-artifacts.yaml @@ -56,6 +56,7 @@ jobs: - name: Push containers run: | docker push ghcr.io/scalar-labs/scalardb-schema-loader:${{ steps.version.outputs.version }} + docker push ghcr.io/scalar-labs/scalardb-data-loader-cli:${{ steps.version.outputs.version }} - name: Upload scalardb, scalardb-schema-loader, scalardb-data-loader-core, and scalardb-integration-test to Maven Central Repository run: | diff --git a/.github/workflows/vuln-check.yaml b/.github/workflows/vuln-check.yaml index ffcdb78b21..ff43cbcf14 100644 --- a/.github/workflows/vuln-check.yaml +++ b/.github/workflows/vuln-check.yaml @@ -25,7 +25,7 @@ jobs: with: target-ref: ${{ inputs.target-ref }} find-latest-release: ${{ inputs.find-latest-release }} - images: '[["ScalarDB Schema Loader", "scalardb-schema-loader"]]' + images: '[["ScalarDB Schema Loader", "scalardb-schema-loader"], ["ScalarDB Data Loader CLI", "scalardb-data-loader-cli"]]' version-command: "./gradlew :core:properties -q | grep version: | awk '{print $2}'" secrets: CR_PAT: ${{ secrets.CR_PAT }} diff --git a/data-loader/cli/Dockerfile b/data-loader/cli/Dockerfile new file mode 100644 index 0000000000..12f0559874 --- /dev/null +++ b/data-loader/cli/Dockerfile @@ -0,0 +1,13 @@ +FROM eclipse-temurin:8-jre-jammy + +RUN apt-get update && apt-get upgrade -y \ + && rm -rf /var/lib/apt/lists/* + +COPY scalardb-data-loader-*.jar /app.jar + +RUN groupadd -r --gid 201 scalar && \ + useradd -r --uid 201 -g scalar scalar + +USER 201 + +ENTRYPOINT ["java", "-jar", "/app.jar"] diff --git a/data-loader/cli/build.gradle b/data-loader/cli/build.gradle index f1b37d0c58..950d0af187 100644 --- a/data-loader/cli/build.gradle +++ b/data-loader/cli/build.gradle @@ -59,3 +59,23 @@ spotbugsTest.reports { html.enabled = true } spotbugsTest.excludeFilter = file("${project.rootDir}/gradle/spotbugs-exclude.xml") + +task dockerfileLint(type: Exec) { + description 'Lint the Dockerfile' + commandLine "${project.rootDir}/ci/dockerfile_lint.sh" +} + +task copyFilesToDockerBuildContextDir(type: Copy) { + description 'Copy files to a temporary folder to build the Docker image' + dependsOn shadowJar + from("Dockerfile") + from(tasks.shadowJar.archiveFile) + into('build/docker') +} + +task docker(type: Exec) { + description 'Build ScalarDB Data Loader Docker image' + dependsOn copyFilesToDockerBuildContextDir + workingDir 'build/docker' + commandLine 'docker', 'build', "--tag=ghcr.io/scalar-labs/scalardb-data-loader:${project.version}", "." +} From 9dcc0fc0ce5046c7db27e7ac7044f62c234e8c81 Mon Sep 17 00:00:00 2001 From: Pham Ba Thong Date: Thu, 12 Jun 2025 12:50:28 +0900 Subject: [PATCH 2/5] Update data-loader/cli/build.gradle [skip ci] Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- data-loader/cli/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data-loader/cli/build.gradle b/data-loader/cli/build.gradle index 950d0af187..c65204fd25 100644 --- a/data-loader/cli/build.gradle +++ b/data-loader/cli/build.gradle @@ -77,5 +77,5 @@ task docker(type: Exec) { description 'Build ScalarDB Data Loader Docker image' dependsOn copyFilesToDockerBuildContextDir workingDir 'build/docker' - commandLine 'docker', 'build', "--tag=ghcr.io/scalar-labs/scalardb-data-loader:${project.version}", "." + commandLine 'docker', 'build', "--tag=ghcr.io/scalar-labs/scalardb-data-loader-cli:${project.version}", "." } From db21c2ae5914fec59fb66fc74bf26e96b1927ad1 Mon Sep 17 00:00:00 2001 From: thongdk8 Date: Thu, 12 Jun 2025 13:44:18 +0900 Subject: [PATCH 3/5] correct naming [skip ci] --- data-loader/cli/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data-loader/cli/build.gradle b/data-loader/cli/build.gradle index c65204fd25..73bbb20879 100644 --- a/data-loader/cli/build.gradle +++ b/data-loader/cli/build.gradle @@ -74,7 +74,7 @@ task copyFilesToDockerBuildContextDir(type: Copy) { } task docker(type: Exec) { - description 'Build ScalarDB Data Loader Docker image' + description 'Build ScalarDB Data Loader Docker CLI image' dependsOn copyFilesToDockerBuildContextDir workingDir 'build/docker' commandLine 'docker', 'build', "--tag=ghcr.io/scalar-labs/scalardb-data-loader-cli:${project.version}", "." From cd6dbbb9ef78a1b1fcb0e7dc05b823c1631092db Mon Sep 17 00:00:00 2001 From: Pham Ba Thong Date: Thu, 12 Jun 2025 14:28:39 +0900 Subject: [PATCH 4/5] Update data-loader/cli/Dockerfile [skip ci] Co-authored-by: Vincent Guilpain --- data-loader/cli/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data-loader/cli/Dockerfile b/data-loader/cli/Dockerfile index 12f0559874..b3d87926c3 100644 --- a/data-loader/cli/Dockerfile +++ b/data-loader/cli/Dockerfile @@ -1,6 +1,6 @@ FROM eclipse-temurin:8-jre-jammy -RUN apt-get update && apt-get upgrade -y \ +RUN apt-get update && apt-get upgrade -y --no-install-recommends \ && rm -rf /var/lib/apt/lists/* COPY scalardb-data-loader-*.jar /app.jar From 004e597a5e44d655e467ce77b3840ab85c728147 Mon Sep 17 00:00:00 2001 From: Peckstadt Yves Date: Fri, 13 Jun 2025 09:36:51 +0900 Subject: [PATCH 5/5] Add dataloader-cli to remove untagged images workflow --- .github/workflows/remove-untagged-images.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/remove-untagged-images.yaml b/.github/workflows/remove-untagged-images.yaml index e67f28cddd..e5540d35f7 100644 --- a/.github/workflows/remove-untagged-images.yaml +++ b/.github/workflows/remove-untagged-images.yaml @@ -25,3 +25,9 @@ jobs: with: github-token: ${{ secrets.CR_PAT }} package-name: scalardb-schema-loader + + - name: scalardb-data-loader-cli + uses: camargo/delete-untagged-action@v1 + with: + github-token: ${{ secrets.CR_PAT }} + package-name: scalardb-data-loader-cli