Skip to content

Latest commit

 

History

History
146 lines (97 loc) · 7.8 KB

RELEASE.MD

File metadata and controls

146 lines (97 loc) · 7.8 KB

How to build and release projects on the Camunda Community Hub

Maven

In order to build and release your Maven projects properly, you need to prepare:

  1. Onboard your repository (which makes sure you will have all necessary credentials available)
  2. Use the release parent pom in your Maven project (which will take care of distribution management)
  3. Setup a GitHub workflow leveraging the Community Hub Maven Release GitHub Action (which will take care to do the proper releases).

Then you can simply create GitHub releases, which will also trigger all necessary Maven magic to deploy to

View an example repository demonstrating the setup of Maven Build Management and CI/CD here.

More information below.

Docker

In order to build and release Docker images, you need to prepare:

  1. Onboard your repository (which makes sure you will have all necessary credentials available)
  2. Use the image name camundacommunityhub/*
  3. Setup a GitHub workflow to push your Docker images to Dockerhub. We recommend using the official Docker login GitHub Action.

More information below.

Detailed instructions

Onboarding your repository

You need to register your repository by opening a pull request in the Camunda Infrastructure repo and follow the instructions listed for onboarding a new repository.

Maven

View an example repository demonstrating the setup of Maven Build Management and CI/CD here.

Use the Camunda Community Hub groupId

The Camunda Community Hub decided on a unified groupId. Use a Maven groupId based on: org.camunda.community, so for example: org.camunda.community.awesomeextension

Add release parent to POM

Any project needs to use the community-hub-release-parent in their POM:

<parent>
    <groupId>org.camunda.community</groupId>
    <artifactId>community-hub-release-parent</artifactId>
    <version>1.4.3</version>
    <relativePath />
</parent>

This parent POM contains all necessary settings for the GitHub action to function properly.

Add GitHub workflow

Add a GitHub workflow (e.g. by adding a file .github/workflows/deploy.yaml to your) to your project as described here.

Performing a release

Create a new Release using https://github.com/camunda-community-hub/:repo/releases/new (replace :repo with name of repository).

This will trigger the release flow, which uses mvn release:prepare release:perform to build, sign, and deploy the released version to Maven Central, and will push the generated tags once the process has completed.

There are two options:

  1. Use the auto release property in your GitHub workflow (recommended), so that all releases will be automatically be released to Maven Central:
...
     - name: Deploy SNAPSHOT / Release
        uses: camunda-community-hub/community-action-maven-release@v1
        with:
          ...
          maven-auto-release-after-close: true
          ...

⚠️ Please, note, that this functionality starts to work in community-hub-release-parent with version 1.4.1. Source.

  1. Open an issue to let @camunda-community-hub/devrel review and release your artifact. Therefore, open a new issue in your repository and include @camunda-community-hub/devrel in a comment with a waiting-for-camunda issue label applied.

After an artifact has been released, it can take up to an hour to be retrievable, and 2-3 hours for it to be reflected on the public page of the artifact.

Docker

[TBD]

FAQ

What if my release fails while deploying integration tests?

Integration tests should be versioned when preparing a release, but should never be deployed to Maven Central. If you have an integration-tests module in your project, add the following profile to your parent POM:

<profiles>
    <profile>
        <id>it</id>
        <activation>
            <property>
                <name>performRelease</name>
                <value>!true</value>
            </property>
        </activation>
        <modules>
            <module>integration-test</module>
        </modules>
    </profile>
</profiles>

This will ensure that when the mvn release:perform is triggered (with the -DperformRelease flag set) the integration-tests module is skipped.

What if my release says it's missing a key for GPG?

Verify that you have adjusted your extension's release workflow GPG files to match the example shown in the Community Action Maven Release documentation. For more information on Java setup actions and what GPG does, review the documentation on GitHub.

Integrating GitHub Actions with Zeebe on Camunda 8

If you are interested in working with GitHub Actions using Zeebe on Camunda 8, visit our Camunda 8 GitHub Action repository to get started.

Troubleshooting

  1. If you are facing any issues regarding your extension's release process, please open an issue and assign it to @camunda-community-hub/devrel with applicable issue labels applied.
  2. If you see an update or improvement that can be made to the release process in the Camunda Community Hub, we encourage you to submit an issue with your request, and thank you for your suggestion!
  3. Please make use of the Camunda Community Hub Pull Request Template when opening a troubleshooting pull request and include as much information as possible in order to help reviewers better understand the issue you are facing.