Deploy to the Atlassian Marketplace via your CI/CD

Atlassian Marketplace Publishing

Deploying to the Atlassian Marketplace usually is a manual process. Use your CD to deploy your plugins.

Our complete deployment process is driven by Gitlab CI/CD (before that, we were using Jenkins). Plugins for the Atlassian Marketplace used to be an exception for several years. Annoyed by this situation, we decided to develop a Maven plugin which integrates smoothly into Atlassian’s plugin build process and allows an easy deployment to the Marketplace. However, for us the last submission step (switching the version from “Private” to “Public”) remains manual.

The plugin is based on Atlassian’s Marketplace API Java client. Source code for the plugin is availabe on Bitbucket under GPLv3.

Integration

Insert into your pom.xml’s <plugins> section:

<plugins>
  ...
  <!-- Marketplace deployer -->
  <plugin>
    <groupId>com.zenofx.maven</groupId>
    <artifactId>marketplace-maven-plugin</artifactId>
    <configuration>
      <username>user@example.com</username>
      <password>{token encrypted by mvn -ep}</password>
      <licenseType>GPL</licenseType>
      <paymentModel>FREE</paymentModel>
      <releaseSummary>Summary</releaseSummary>
    </configuration>
    <executions>
      <execution>
        <goals>
          <goal>createVersion</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
  <!-- Switch off default deployer -->
  <plugin>
    <artifactId>maven-deploy-plugin</artifactId>
    <configuration>
      <skip>true</skip>
    </configuration>
  </plugin>
</plugins>

Usage

After integrating into your pom, an additional target deploy is available:

atlas-mvn clean deploy

Supported configuration properties

username Username for Atlassian Marketplace.

password Token for Atlassian Marketplace (passwords are not supported any more). The token has to be encrypted using atlas-mvn -ep.

buildNumber Build number, if not set computed from semantic version.

buildPattern (Default: %1d%03d%03d) Pattern for computing build number from semantic version. Default value according to Atlassian versioning proposals.

licenseType License type (COMMERCIAL, COMMERCIAL_FREE, BSD, ASL, GPL, LGPL, EPL or ATLASSIAN_CLOSED_SOURCE).

paymentModel Payment Model (FREE, PAID_VIA_VENDOR or PAID_VIA_ATLASSIAN).

releaseNotes Release notes.

releaseSummary Release summary.

status (Default: PRIVATE) Status of version after upload (PRIVATE, PUBLIC or SUBMITTED). This is only for completeness, please always use PRIVATE and submit manually.

supported (Default: true) Is this version supported?

beta (Default: false) Is this a beta version?

type (Default: JAR) Type of artifact (JAR or OBR).

ATLASSIAN
atlassian gitlab