blob: 8b7f84ba659dff9ae47230d57af4d189a197740b [file] [log] [blame]
--------------------------------------------------------------------------
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
--------------------------------------------------------------------------
F U L C R U M
--------------------------------------------------------------------------
Fulcrum is a collection of components originally part of the Turbine core
project that are suitable for use in any environment. They are designed to
be used within any Avalon-compatible container.
--------------------------------------------------------------------------
B U I L D I N G
--------------------------------------------------------------------------
You must have Maven 3.x
Building the Fulcrum from SVN is very easy. Fulcrum has been
Maven-enabled. Please refer to the Maven Getting Started document for
instructions on building. This document is available here:
https://maven.apache.org/guides/getting-started/
-------------------------------------------
GIT READONLY
-------------------------------------------
You could use git to checkout current trunk:
git clone https://github.com/apache/turbine-fulcrum.git
git checkout -b remote-trunk remotes/origin/trunk
--------------------------------------------------------------------------
COMPONENT DEVELOPMENT
--------------------------------------------------------------------------
Publishing Workflow
Prerequisites
// jars
mvn deploy -Papache-release
More Information
https://www.apache.org/dev/publishing-maven-artifacts.html#prepare-poms
http://maven.apache.org/developers/website/deploy-component-reference-documentation.html
Steps
1) Local Testing
// Verify gpg.homedir, gpg.useagent, gpg.passphrase. Check, if -Dgpg.useagent=false is needed, see below comment to pinentry.
// You may need to add additional profiles, e.g. -Papache-release,java8
mvn clean site install -Papache-release -Dgpg.passphrase=<xx>
// multi module
mvn release:prepare -DdryRun=true -DautoVersionSubmodules=true -Papache-release
// single
mvn release:prepare -DdryRun=true -Papache-release
// or to skip dependency check
mvn release:prepare -DdryRun=true -Papache-release -Ddependency.check.skip=true -DautoUpdate=false
//
mvn release:clean
2) Remote Testing
// explicit authentication with -Dusername=<username> -Dpassword=<pw>
// multi module
mvn release:prepare -DautoVersionSubmodules=true -P apache-release
// success will be on the master build, the others are skipped
// single
mvn release:prepare -Papache-release
// Helpful hint from Apache Website: If you're located in Europe then release:prepare may fail with 'Unable to tag SCM' and ' svn: No such revision X '. Wait 10 seconds and run mvn release:prepare again.
4) Release Preparing
//
// if you get a 401 error on the upload to repository.apache.org, make sure
// that your mvn security settings are in place ~/.m2/settings.xml and ~/.m2/settings-security.xml
// For more information on setting up security see the encryption guide:
// http://maven.apache.org/guides/mini/guide-encryption.html
//
// performs an upload to repository.apache.org/service/local/staging/deploy/maven2/
// Hint: Add -Dgpg.useagent=false helps, if running from a windows machine to avoid hanging while gpg plugin signing process
// .. this may happen, if you do not define the pinentry-program in gpg-agent.conf correctly ..
mvn release:perform
// You could find more information here: http://www.sonatype.com/books/nexus-book/reference/staging.html
5) Close the staging
// Login and close in Nexus Repo
https://repository.apache.org/index.html#stagingRepositories
// More information available: https://www.apache.org/dev/publishing-maven-artifacts.html#close-stage
6) Prepare Voting Information and Voting
....
7) Either Promote / Publish or Drop and Restage
// http://www.apache.org/dev/publishing-maven-artifacts.html#promote
// http://www.apache.org/dev/publishing-maven-artifacts.html#drop
// After Drop "reverse merge the release prepare (i.e. mvn release:rollback if possible),
// manually delete tag in svn repo (svn delete ..) and drop staged repository in nexus and start again with step 1.
// refer to the failed vote Message-ID in the commit messages (svn, nexus).
8) Stage the latest documentation
// http://maven.apache.org/developers/website/deploy-component-reference-documentation.html
// SVN Checkout <tagged release version> source
// Generate and Publish Site
// IMPORTANT: You may have clean up the checkoutDirectory of maven-scm-publish-plugin plugin after doing a dry run!
// multi module
mvn site site:stage scm-publish:publish-scm -Dscmpublish.dryRun=true
mvn clean site site:stage scm-publish:publish-scm -Dusername=<username> -Dpassword=<pw>
// single module (omit site:stage, which reqires site element definition in distributionManagement)
mvn site scm-publish:publish-scm -Dscmpublish.dryRun=true
mvn clean site scm-publish:publish-scm -Dusername=<username> -Dpassword=<pw>
9) Distribution
// http://www.apache.org/dev/release#upload-ci,
// http://www.apache.org/dev/release.html#host-GA and
// http://www.apache.org/dev/release-publishing.html#distribution
// - SVN checkout target distribution from https://dist.apache.org/repos/dist/release/turbine/<...>/<...>
// - SVN checkout released source from https://svn.apache.org/repos/asf/turbine/<..>/tags/<..>
// - Generate artifacts (check local repo and target for artifacts) from released version:
mvn clean install package -Papache-release -DcreateChecksum=true
// generate checksums in dist source/binaries folde. More information here: https://checker.apache.org/doc/README.html and
// https://checker.apache.org/dist/verify.html
// If not all jars are included (assembly plugin _SHOULD_ run after jar generation), run a second time without clean
// If no md5 files are in the target folder, check local repo
// - SVN Add <binaries>, <sources> artifacts (jar/zip/tar.gz,asc,md5,sha1 files) to target repo
// - SVN Remove old releases binaries and sources
// After repos/dist is updated an automatic email will be generated, if no update of the release database is done:
https://reporter.apache.org/addrelease.html?turbine