Apache Sling Commiter CLI

Clone this repo:
  1. f7a647a Update release.email by Konrad Windszus · 10 days ago master
  2. f783221 SLING-11709 - Set up Jira autolinks to all Sling Github projects by Robert Munteanu · 8 weeks ago
  3. 250dbf2 SLING-11097 - Adding a fallback to the CI validator to check the parent commit if the tag does not have a build status by Dan Klco · 9 weeks ago
  4. 3414bc3 SLING-11816 - Transliterated project member names break the vote counting algorithm by Radu Cotescu · 9 weeks ago
  5. 7f0b544 SLING-11539 - update-local-site fails on arm64v8 with Java 17 by Radu Cotescu · 10 months ago

Apache Sling

Build Status Test Status Coverage Sonarcloud Status License

Apache Sling Committer CLI tool

This module is part of the Apache Sling project.

This module provides a command-line tool which automates various Sling development tasks. The tool is packaged as a docker image.


To make various credentials and configurations available to the docker image it is recommended to use a docker env file. A sample file is stored at docker-env.sample. Copy this file to docker-env and fill in your own information.


The image is built using mvn package. Afterwards it may be run with

docker run --env-file=./docker-env apache/sling-cli

This invocation produces a list of available commands.


The commands can be executed in 3 different modes:

  • DRY_RUN (default mode) - commands only list their output without performing any actions on the user's behalf
  • INTERACTIVE - commands list their output but ask for user confirmation when it comes to performing an action on the user's behalf
  • AUTO - commands list their output and assume that all questions are provided the default answers when it comes to performing an action on the user's behalf

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 

Note that for running commands in the INTERACTIVE mode you need to run the Docker container in interactive mode with a pseudo-tty attached (e.g. docker run -it ...).

Listing active releases

docker run --env-file=./docker-env apache/sling-cli release list

Generating a release vote email

docker run --env-file=./docker-env apache/sling-cli release prepare-email --repository=$STAGING_REPOSITORY_ID

Generating a release vote result email

docker run --env-file=./docker-env apache/sling-cli release tally-votes --repository=$STAGING_REPOSITORY_ID

Generating the website update (only diff for now)

docker run --env-file=docker-env apache/sling-cli release update-local-site --repository=$STAGING_REPOSITORY_ID


This tool assumes that the name of the staging repository matches the one of the version in Jira. For instance, the staging repositories are usually named Apache Sling Foo 1.2.0. It is then expected that the Jira version is named Foo 1.2.0. Otherwise the link between the staging repository and the Jira release can not be found.

It is allowed for staging repository names to have an RC suffix, which may include a number, so that RC, RC1, RC25 are all valid suffixes.