Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "Californium/Release Process"
(Added description for Hudson based release build) |
m (Skip local tagging during git clone in Hudson) |
||
Line 3: | Line 3: | ||
Californium consists of the following components | Californium consists of the following components | ||
− | + | # Californium (parent) | |
− | + | # Element Connector | |
− | + | # Californium (core) | |
− | + | # Scandium | |
− | + | # Tools | |
− | + | # Actinium | |
+ | |||
+ | Some of the components have dependencies on other components. Thus, in order to successfully build all of the components they need to be built in the order given above. | ||
=== Repositories === | === Repositories === | ||
− | The source code for | + | The source code for Californium's components is managed in separate GitHub repositories as follows: |
{| class="wikitable" | {| class="wikitable" | ||
+ | |Californium (parent) | ||
+ | |https://github.com/eclipse/californium.git | ||
+ | |- | ||
|Element Connector | |Element Connector | ||
|https://github.com/eclipse/californium.element-connector.git | |https://github.com/eclipse/californium.element-connector.git | ||
− | |||
− | |||
− | |||
|- | |- | ||
|Californium (core) | |Californium (core) | ||
Line 33: | Line 35: | ||
|- | |- | ||
|} | |} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=== Release Process === | === Release Process === | ||
− | The following table contains | + | The repositories mentioned above can be built either from the command line or using a separate Hudson build job for each repository. |
+ | The following table contains the steps required to build and release a repository and the corresponding actions from the command line or the respective Hudson build job configuration required to make it happen. | ||
{| class="wikitable" | {| class="wikitable" | ||
!Step | !Step | ||
!Command Line | !Command Line | ||
− | !Hudson | + | !Hudson Build Job Configuration |
|- | |- | ||
|Create build job | |Create build job | ||
− | | | + | | not necessary |
| | | | ||
# Create a new build job using the '''Build a free-style software job''' option | # Create a new build job using the '''Build a free-style software job''' option | ||
# Check the '''This build is parameterized''' checkbox and add the following parameters: | # Check the '''This build is parameterized''' checkbox and add the following parameters: | ||
− | ## '''RELEASE_VERSION''' - no '''Default Value''' | + | ## '''RELEASE_VERSION''' - no '''Default Value''' |
− | ## '''NEXT_VERSION''' - no '''Default Value''' | + | ## '''NEXT_VERSION''' - no '''Default Value''' |
# Under '''Advanced Job Options''' click the '''Advanced...''' button | # Under '''Advanced Job Options''' click the '''Advanced...''' button | ||
# Check the '''Clean workspace before build''' checkbox | # Check the '''Clean workspace before build''' checkbox | ||
|- | |- | ||
|Checkout repository | |Checkout repository | ||
− | |<code>git clone | + | |<code>git clone https://github.com/eclipse/californium.git</code> |
|Fill out '''Source Code Management''' section of build configuration like this: | |Fill out '''Source Code Management''' section of build configuration like this: | ||
# '''Url of repository''': ''ssh://deploy_github_eclipse_californium/eclipse/californium.git'' | # '''Url of repository''': ''ssh://deploy_github_eclipse_californium/eclipse/californium.git'' | ||
Line 85: | Line 63: | ||
# click '''Advanced...''' button in the '''Branches to build''' section to expand more options | # click '''Advanced...''' button in the '''Branches to build''' section to expand more options | ||
# '''Checkout/merge to local branch''': ''master'' | # '''Checkout/merge to local branch''': ''master'' | ||
+ | # check '''Skip internal tag''' | ||
# check '''Use Command line git to clone''' | # check '''Use Command line git to clone''' | ||
|- | |- |
Revision as of 04:22, 28 October 2015
Contents
How-to release Californium
Californium consists of the following components
- Californium (parent)
- Element Connector
- Californium (core)
- Scandium
- Tools
- Actinium
Some of the components have dependencies on other components. Thus, in order to successfully build all of the components they need to be built in the order given above.
Repositories
The source code for Californium's components is managed in separate GitHub repositories as follows:
Californium (parent) | https://github.com/eclipse/californium.git |
Element Connector | https://github.com/eclipse/californium.element-connector.git |
Californium (core) | https://github.com/eclipse/californium.core.git |
Scandium | https://github.com/eclipse/californium.scandium.git |
Tools | https://github.com/eclipse/californium.tools.git |
Actinium | https://github.com/eclipse/californium.actinium.git |
Release Process
The repositories mentioned above can be built either from the command line or using a separate Hudson build job for each repository. The following table contains the steps required to build and release a repository and the corresponding actions from the command line or the respective Hudson build job configuration required to make it happen.
Step | Command Line | Hudson Build Job Configuration |
---|---|---|
Create build job | not necessary |
|
Checkout repository | git clone https://github.com/eclipse/californium.git
|
Fill out Source Code Management section of build configuration like this:
|
Set release version (probably the same as the current one but without the -SNAPSHOT suffix) |
|
|
Build & test the code |
|
|
Commit pom.xml containing the release version and create a corresponding tag for it |
git commit -m "Release X.Y.Z" git tag "X.Y.Z" |
git commit -m "Release ${RELEASE_VERSION}" git tag ${RELEASE_VERSION} |
Publish artifacts to Eclipse release repository |
|
|
Publish artifacts to Maven Central's staging repo |
|
|
Set next development version |
|
|
Push changes to SCM |
git commit -m "Release X.Y.Z" git push && git push --tags |
git commit -m "Release ${RELEASE_VERSION}" git push ssh://deploy_github_eclipse_californium/eclipse/californium.git && git push --tags ssh://deploy_github_eclipse_californium/eclipse/californium.git |
Reference Instructions
1st get a copy of all the californium repository:
git clone git@github.com:eclipse/californium.element-connector.git
git clone git@github.com:eclipse/californium.scandium.git
git clone git@github.com:eclipse/californium.git
git clone git@github.com:eclipse/californium.tools.git
git clone git@github.com:eclipse/californium.actinium.git
You need to process the repository in the correct order:
element-connector
scandium
californium
tools
actinium
In each repository:
- set the final version (probably the same as the current one but without "SNAPSHOT")
mvn versions:set -DnewVersion=X.Y.Z
- build & sign the artifacts (you need a gpg key; see below)
mvn clean install -Prelease
- looks in ./target/ does the artifacts looks nice?
- check if there is no *-SNAPSHOT in the dependency:
mvn dependency:tree
- then commit the pom.xml, and tag the release:
git add pom.xml \*/pom.xml
git commit -m "Release X.Y.Z"
git tag "X.Y.Z"
- publish the artifacts on maven central
mvn deploy -Prelease
- prepare for the next cycle:
mvn versions:set -DnewVersion=X.Y.Z-SNAPSHOT
git add pom.xml \*/pom.xml
git commit -m "Release X.Y.Z"
- push the commits
git push && git push --tags
Now connect on the Sonatype OSS Nexus and close the staging repository. If it's fine you will be able to "release" the repository and the artifact will show up in maven central in a few hours. Next step is to edit the Eclipse project metadata and announce it on the mailing list.
GPG Help
Under CygWin the following error might occur:
gpg: cannot open tty `no tty': No such file or directory
This can be fixed by configuring gpg through an active profile in .m2\settings.xml
where also the Sonatype password is stored:
<settings> <servers> <server> <id>ossrh</id> <username>[username]</username> <password>[password]</password> </server> </servers> <profiles> <profile> <id>gpg</id> <properties> <gpg.executable>gpg</gpg.executable> <gpg.passphrase>[password]</gpg.passphrase> </properties> </profile> </profiles> <activeProfiles> <activeProfile>gpg</activeProfile> </activeProfiles> </settings>