You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2026/08/05 15:53:37 UTC
(sling-org-apache-sling-committer-cli) 01/01: SLING-13289 - Push Sling Committer CLI image to DockerHub
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to branch issue/SLING-13289
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-committer-cli.git
commit c3f4005ec65376a1b96ce5ef915bb1b88d1f5d19
Author: Robert Munteanu <ro...@apache.org>
AuthorDate: Wed Aug 5 17:52:02 2026 +0200
SLING-13289 - Push Sling Committer CLI image to DockerHub
- configure GitHub action to push to DockerHub
- allow multi-arch builds
- set image to apache/sling-committer-cli as it better reflects its purpose
as compared to apache/sling-cli
- updated documentation
---
README.md | 30 +++++++++++++++---------------
pom.xml | 13 ++++++++++++-
2 files changed, 27 insertions(+), 16 deletions(-)
diff --git a/README.md b/README.md
index 8f17c15..bad6120 100644
--- a/README.md
+++ b/README.md
@@ -89,27 +89,27 @@ password in `~/.m2/settings-security.xml`:
## Building
-The Docker image (`apache/sling-cli:latest`) is produced by the `docker:build` goal of the
+The Docker image (`apache/sling-committer-cli:latest`) is produced by the `docker:build` goal of the
[fabric8 docker-maven-plugin](https://dmp.fabric8.io/). The image bundles the project jar via the
generated `*-app.slingfeature` descriptor; the `slingfeature-maven-plugin` resolves the project's
own bundle from the reactor, so the image always contains the jar built in the same invocation.
A single command builds (and tests) the project and the image:
- mvn clean package docker:build
+ mvn clean install
-No prior `mvn install` is needed. The `docker:build` execution is also bound to the `package`
-phase, so the CI build (`mvn package`) builds the image too.
+The `docker:build` execution is bound to the `install` phase, so the CI build (`mvn install`)
+builds the image too. Image pushes are skipped by default.
To confirm the image contains the expected commands:
- docker run --env-file=./docker-env apache/sling-cli release help
+ docker run --env-file=./docker-env apache/sling-committer-cli release help
## Launching
After building, run the image with:
- docker run --env-file=./docker-env apache/sling-cli
+ docker run --env-file=./docker-env apache/sling-committer-cli
This invocation produces a list of available commands.
@@ -124,7 +124,7 @@ The commands can be executed in 3 different modes:
To select a non-default execution mode provide the mode as an argument to the command:
- docker run -it --env-file=./docker-env apache/sling-cli release prepare-email --repository=$STAGING_REPOSITORY
+ docker run -it --env-file=./docker-env apache/sling-committer-cli release prepare-email --repository=$STAGING_REPOSITORY
--execution-mode=INTERACTIVE
Note that for running commands in the `INTERACTIVE` mode you need to run the Docker container in interactive mode with a pseudo-tty
@@ -168,46 +168,46 @@ After `release:perform` has staged the artifacts, drive the rest with the CLI:
0. **Find the staging repository id** if you did not capture it. `release list` shows every staging
repo with its `[open]`/`[closed]` state and description; a freshly staged one is `[open]`:
- docker run --env-file=./docker-env apache/sling-cli release list
+ docker run --env-file=./docker-env apache/sling-committer-cli release list
1. **Close** the staging repository. The description is derived automatically from the staged POM's
`<name>` + `<version>` (e.g. _Apache Sling Feature Model Launcher 1.3.6_) by browsing the
repository content, so it works even though an open repository is not yet in the Lucene index:
- docker run --env-file=./docker-env apache/sling-cli release close-staging --repository=$STAGING_REPOSITORY_ID --execution-mode=AUTO
+ docker run --env-file=./docker-env apache/sling-committer-cli release close-staging --repository=$STAGING_REPOSITORY_ID --execution-mode=AUTO
2. **Verify** the artifacts' signatures, hashes and CI status:
- docker run --env-file=./docker-env apache/sling-cli release verify --repository=$STAGING_REPOSITORY_ID
+ docker run --env-file=./docker-env apache/sling-committer-cli release verify --repository=$STAGING_REPOSITORY_ID
3. **Generate the vote email**:
- docker run --env-file=./docker-env apache/sling-cli release prepare-email --repository=$STAGING_REPOSITORY_ID --execution-mode=AUTO
+ docker run --env-file=./docker-env apache/sling-committer-cli release prepare-email --repository=$STAGING_REPOSITORY_ID --execution-mode=AUTO
4. After the 72h vote, **tally the votes** and generate the result email. PMC membership is detected
automatically from your ASF id: if you are a PMC member the email says you will copy the release to
the dist directory yourself; otherwise it asks a PMC member to perform the dist upload:
- docker run --env-file=./docker-env apache/sling-cli release tally-votes --repository=$STAGING_REPOSITORY_ID --execution-mode=AUTO
+ docker run --env-file=./docker-env apache/sling-committer-cli release tally-votes --repository=$STAGING_REPOSITORY_ID --execution-mode=AUTO
5. **Finalize** the release (post successful vote). This runs, in order: promote to Maven Central,
create the next Jira version, release the current Jira version, and update the Apache Reporter:
- docker run --env-file=./docker-env apache/sling-cli release finalize --repository=$STAGING_REPOSITORY_ID --execution-mode=AUTO
+ docker run --env-file=./docker-env apache/sling-committer-cli release finalize --repository=$STAGING_REPOSITORY_ID --execution-mode=AUTO
When the current user is detected as a PMC member, `finalize` additionally publishes to
`dist.apache.org` (requires `subversion`, which is bundled in the image). The previous version to
remove from `dist/release` is deduced automatically from the directory contents, so no extra flag
is needed:
- docker run --env-file=./docker-env apache/sling-cli release finalize --repository=$STAGING_REPOSITORY_ID --execution-mode=AUTO
+ docker run --env-file=./docker-env apache/sling-committer-cli release finalize --repository=$STAGING_REPOSITORY_ID --execution-mode=AUTO
PMC membership is determined from your ASF id (via Whimsy). A non-PMC committer's `finalize` skips
the dist upload and the `tally-votes` result email asks a PMC member to perform it.
If the vote does not pass, **drop** the staging repository:
- docker run --env-file=./docker-env apache/sling-cli release drop --repository=$STAGING_REPOSITORY_ID --execution-mode=AUTO
+ docker run --env-file=./docker-env apache/sling-committer-cli release drop --repository=$STAGING_REPOSITORY_ID --execution-mode=AUTO
### Command reference
diff --git a/pom.xml b/pom.xml
index 3e34745..247e655 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,6 +30,11 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.build.outputTimestamp>2026-01-01T00:00:01Z</project.build.outputTimestamp>
<sling.java.version>21</sling.java.version>
+ <docker.skip.push>true</docker.skip.push>
+ <docker.image.name>apache/sling-committer-cli</docker.image.name>
+ <docker.image.tag>latest</docker.image.tag>
+ <!-- pass a list of platforms to enable multi-arch builds: linux/amd64,linux/arm64 -->
+ <docker.platforms />
</properties>
<dependencies>
@@ -311,12 +316,17 @@
<configuration>
<images>
<image>
- <name>apache/sling-cli</name>
+ <name>${docker.image.name}:${docker.image.tag}</name>
<build>
<contextDir>${project.basedir}</contextDir>
<args>
<FEATURE_FILE>target/artifacts/org/apache/sling/${project.artifactId}/${project.version}/${project.artifactId}-${project.version}-app.slingfeature</FEATURE_FILE>
</args>
+ <buildx>
+ <platforms>
+ <platform>${docker.platforms}</platform>
+ </platforms>
+ </buildx>
</build>
</image>
</images>
@@ -326,6 +336,7 @@
<id>default</id>
<goals>
<goal>build</goal>
+ <goal>push</goal>
</goals>
</execution>
</executions>