Child pages
  • Releasing a new version of the Sling Starter
Skip to end of metadata
Go to start of metadata

These instructions coemplement those from http://sling.apache.org/documentation/development/release-management.html, which are geared more towards bundle releases, while releasing the Launchpad is a bit more involved.

Prepare the Starter release

Since the Launchpad is a collection of bundles, it is required for each bundle included it in to be a release, rather than a SNAPSHOT. We currently have only releases in the starter, so this should not be an issue.

Create a new and noteworthy page

A new and notheworthy page outlines some of the significant changes done since the last release. The launchpad-comparator Java project allows generating a changelog between two versions of the Sling Starter and can be used to extract the new and noteworthy items. The README file from that project contains all the information needed to generate the changelog.

Additionally, we tag issues that we consider noteworthy with the label Sling-VERSION-ReleaseNotes. For instance, the query for the Sling 11 release notes is  project = SLING AND labels = Sling-11-ReleaseNotes ORDER BY updated DESC .

Example pages:

Update and release the "core" set of artifacts

Although the Sling Starter is composed of just one artifact, we aim to release at least the tests and the Maven archetypes at the same time. We release the tests to capture the state of how Sling worked for that certain release, and the archetypes to allow users to start using them with the latest Starter version from day one.

Currently we release the following artifacts (TBD):

  • Sling Starter
  • Sling Launchpad Testing
  • Sling Launchpad Testing WAR
  • Sling Launchpad Integration Tests
  • Sling Launchpad Test Services
  • Sling Launchpad Test Services WAR
  • Sling Launchpad Test Fragment
  • Sling Launchpad Test Bundles
  • Archetype Parent
  • Bundle Archetype
  • JCRInstall Bundle Archetype
  • Initial Content Archetype
  • Slingstart Archetype

The diagram below shows the projects that were released for Sling 11 and their dependencies. Some unrelated dependencies (blue) were also released as they were used as snapshots. Only one archetype (magenta) was released as the others did not need any changes.

Deploy the new API docs

For each version we deploy the aggregated javadoc for for the Sling bundles contained in the launchpad. The javadoc  can be generated using the generate_javadoc_for_release.sh script. The script picks up artifacts from the Starter file, and manually adds others which we consider required, such as annotations. Any additional artifacts should be manually added to the script.

After generating the artifacts these should be copied in the sling-site repository, under src/main/jbake/assets/apidocs/sling${VERSION} and referenced from:

  • the sidebar ( src/main/jbake/templates/menu.tpl )
  • the API docs page ( src/main/jbake/content/documentation/apidocs.md )


For Sling 11 the javadoc deployment has failed once with an error similar to "Argument list too long". However, a second build allowed the publish to continue and succeeded. The key is to not invoke Maven with the clean phase, as the progress would be wiped.

Deploy the docker image on DockerHub

Since the Sling 8 release we also provide a docker image. The Dockerfile can be found in the sling-org-apache-sling-starter-docker repo. Images are deployed by tagging the repository with the version of Sling they correspond to, for instance:

git tag -a 11
git push --tags

After the tags are pushed the DockerHub build can be triggered.  We since we trigger builds based on Github tags, the type of build we use is  source_type: Tag . For more details , see the /repos/private/pmc/sling SVN repository. The build status for ongoing builds can be verified at https://hub.docker.com/r/apache/sling/builds/ .

Note that, like for any Apache artifacts, the sling-org-apache-sling-starter-docker module must be released before deploying binaries (like the Docker image) to public places.

Update local references to the old starter

A number of projects in the sling source tree typically reference the Sling starter mostly for testing. These projects should be updated to either reference the latest release, if they use it for testing additional sets of bundles, or to the latest SNAPSHOT, if they are used to test the current launchpad, like launchpad/testing or launchpad/testing-war .

Change version of dependant projects

The following projects should keep their versions in sync with the main launchpad:

  • launchpad-testing
  • launchpad-testing-war

For future releases we should consider releasing the launchpad/testing and launchpad/testing-war projects ( and dependant test projects ) alongside the main launchpad project, so that the test state is recorded as well.

Clean up starter documentation

There may be references to old features of the starter at https://sling.apache.org/documentation/the-sling-engine/the-sling-launchpad.html, so make sure that this is up to date.

Update the Apache Sling Wikipedia page

The page is at https://en.wikipedia.org/wiki/Apache_Sling and we should update at least the latest released version and the corresponding release date.

Announce release

Send an email to users@sling.apache.org and announce@apache.org . For some examples, see [ANN] New Release of Apache Sling 6 and [ANN] Apache Sling version 8 released .

See also

  1. Launchpad 8 release tracking task: SLING-5095 - Getting issue details... STATUS
  2. dev@sling.apache.org: Sling 8 release checklist
  3. dev@sling.apache.org: Launchpad 7 release?
  4. Towards Sling 6
  5. dev@sling.apache.org: Sling 6 release plan


  • No labels