Bundles maven artifacts to be ready for release.
Перейти к файлу
microsoft-github-policy-service[bot] ff7b8a4ad4
Auto merge mandatory file pr
This pr is auto merged as it contains a mandatory file and is opened for more than 10 days.
2023-05-31 18:48:30 +00:00
src/main/java/com/microsoft/azure/plugins/bundler Better messages 2019-04-15 14:52:53 -07:00
.gitignore Add goals prepare, bundle, auto 2018-03-12 13:56:34 -07:00
LICENSE Initial commit 2018-03-12 13:44:52 -07:00
README.md Hide key vault in readme 2019-04-16 14:28:47 -07:00
SECURITY.md Microsoft mandatory file 2023-01-24 16:40:15 +00:00
bundler.properties Move old to legacy 2019-04-15 12:00:00 -07:00
pom.xml Move old to legacy 2019-04-15 12:00:00 -07:00

README.md

Maven Bundler Plugin

The project structure released to Maven Central should be

myproject-0.0.1.pom
myproject-0.0.1.jar
myproject-0.0.1-sources.jar
myproject-0.0.1-javadoc.jar

This plugin aims to provide integration with Maven release plugin and to bundle these artifacts in azuresdkpartnerdrops storage account.

How to use

One time set ups

  1. Request access to the Azure SDK Partners security group.
  2. Follow this documentation to find the access key to storage account azuresdkpartnerdrops in the key vault.
  3. Add this snippet to your maven settings.xml:
<server>
  <id>azuresdkpartnerdrops</id>
  <username>azuresdkpartnerdrops</username>
  <password>${access key from the key vault secret}</password>
</server>
  1. Add bundler.properties to your project:
team=storage
product=asyncv10
exclude=.*-tests.jar,azure-samples.*

where exclude is a comma separated string containing exact matches or regex matches of built files to exclude from publishing to Maven. You can also provide these on the commandline arguments documented below.

  1. Commit your changes and make sure your local Git repo is clean. Then run
mvn com.microsoft.azure:bundler-maven-plugin:auto

if you want to release the version as is defined in pom.xml, or

mvn com.microsoft.azure:bundler-maven-plugin:auto -Dversion={release-version} -DdevVersion={next-dev-version}

if your version has -SNAPSHOT and you want the bundler to run maven release plugin for you.

  1. The previous job will print the blobPath in the console. Paste that into the azuresdkpartners to maven pipeline and start the job.

The individual goals are listed below.

Goal: prepare

To prepare the release for a SNAPSHOT project with 2 maven release plugin commits, run

mvn com.microsoft.azure:bundler-maven-plugin:prepare

Argument properties must be appended in -Dargument=value format.

Property Description
version Required if versionConfig is not provided. All modules in the project will have this release version.
devVersion Required if versionConfig is not provided. All modules in the project will have this as the next development version. Usually ends with -SNAPSHOT.
versionConfig Required if different child modules in this project have different versions. Must be pointing to a comma separated file in the line format of groupId,artifactId,releaseVersion,nextDevelopmentVersion.

Examples:

mvn com.microsoft.azure:bundler-maven-plugin:prepare -DversionConfig=`pwd`/versionConfig.csv

Will prepare the release with versions defined in versionConfig.csv and release tag v1.7.1. 2 Commits with messages "[maven-release-plugin] prepare release v1.7.1" and "[maven-release-plugin] prepare for next development iteration" will be generated.

mvn com.microsoft.azure:bundler-maven-plugin:prepare -Dversion=1.3.1 -DdevVersion=1.3.2-SNAPSHOT

Will prepare the release with versions 1.3.1 and next development version 1.3.2-SNAPSHOT. Release tag will be v1.3.1. 2 Commits with messages "[maven-release-plugin] prepare release v1.3.1" and "[maven-release-plugin] prepare for next development iteration" will be generated.

Goal: bundle

Whether you are doing a snapshot release or an official Maven Central release, you can run

mvn clean source:jar javadoc:jar package -DskipTests // or your own build command
mvn com.microsoft.azure:bundler-maven-plugin:bundle -Dteam=fluent -Dproduct=network-2018-12-01

Bundler will collect all the pom files and jar files and upload to azuresdkpartnerdrops storage account, excluding the files specified.

Argument properties may be appended in -Dargument=value format.

Property Description
team Required. The name of the team for indexing purpose. Must be provided on the commandline or in bundler.properties. Commandline argument overrides value defined in bundler.properties.
product Required. The name of the product for indexing purpose. Must be provided on the commandline or in bundler.properties. Commandline argument overrides value defined in bundler.properties.
exclude Optional. A comma separated string containing exact matches or regex matches of built files to exclude from publishing to Maven. Can be provided on the commandline or in bundler.properties. Commandline argument overrides value defined in bundler.properties.

Goal: auto

Whether you are doing a snapshot release or an official Maven Central release, you can run

mvn com.microsoft.azure:bundler-maven-plugin:auto -Dteam=fluent -Dproduct=network-2018-12-01

Bundler will run prepare, a customizable buildCmd, and then bundle.

Argument properties may be appended in -Dargument=value format.

Property Description
team Required. The name of the team for indexing purpose. Must be provided on the commandline or in bundler.properties. Commandline argument overrides value defined in bundler.properties.
product Required. The name of the product for indexing purpose. Must be provided on the commandline or in bundler.properties. Commandline argument overrides value defined in bundler.properties.
exclude Optional. A comma separated string containing exact matches or regex matches of built files to exclude from publishing to Maven. Can be provided on the commandline or in bundler.properties. Commandline argument overrides value defined in bundler.properties.
buildCmd Optional. A build command for Maven to build all the artifacts. Default value is clean source:jar javadoc:jar package -DskipTests. Can be provided on the commandline or in bundler.properties. Commandline argument overrides value defined in bundler.properties.

Legacy

Goal: legacyBundle

Whether you are doing a snapshot release or an official Maven Central release, you can run

mvn clean source:jar javadoc:jar package -DskipTests
mvn com.microsoft.azure:bundler-maven-plugin:legacyBundle

Argument properties may be appended in -Dargument=value format.

Property Description
dest Optional. The output folder for bundled artifacts. Default to output directory in the command execution directory.

Goal : legacyAuto

To start an official release with Maven release plugin and bundle them together in one step, run legacyAuto goal. All arguments to both prepare and bundle goals are accepted. Between prepare and bundle, this command will checkout the release commit (through git checkout HEAD~1) and reset to head (through git checkout -) after bundling. Goal prepare will only be run for SNAPSHOT projects.

(Deleted) Goal : stage

For developers publishing to group IDs com.microsoft.azure or com.microsoft.rest, this goal is connected to the Jenkins server https://azuresdkci.cloudapp.net/ to easily run staging jobs. You will be prompted to enter your Jenkins user ID and API token, which can be fetched here: http://azuresdkci.cloudapp.net/me/configure.

mvn com.microsoft.azure:bundler-maven-plugin:stage

Argument properties must be appended in -Dargument=value format.

Property Description
source Required. The source network location where artifacts are.
groupId Required. The group ID, starting with either com.microsoft.azure or com.microsoft.rest.

Examples:

mvn com.microsoft.azure:bundler-maven-plugin:stage -Dsource=\\\\scratch2\\scratch\\jianghlu\\release-100 -DgroupId=com.microsoft.azure

Will run the Jenkins job with location parameter set to \\scratch2\scratch\jianghlu\release-100\.

Next steps

Ideally we should be able to run stage goal without the dependency on Jenkins.

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.