blob: ffe88064fa53b24f4a08a9911c2e93d19a719314 [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.
Releasing Apache VXQuery\x99
* One time steps
* set up directory structure
There usually are 3 directories at the same level
* the source directory <<<vxquery>>>,
* the <<<site>>> directory, and
* the distribution directory <<<dist>>>.
The source directory is version-controlled by <<<git>>>, the other two
are version controlled by <<<svn>>>.
While the source directory and the distribution directory can have
arbitrary names and locations, the <<<site>>> directory has to be called
<<<site>>> and it needs to be at the same level as the source directory
to enable site deployment.
Assuming that the source directory is available one can create the
directory structure by going to the directory that contains the
source directory and checking out the distribution and site
directories:
---
$ svn co https://dist.apache.org/repos/dist/release/vxquery dist
$ svn co https://svn.apache.org/repos/asf/vxquery/site
---
* add your key to the <<<KEYS>>> file
Change into the <<<dist>>> directory and run
---
(gpg --list-sigs <your name> && gpg2 --armor --export <your name>) >> KEYS
---
and then check the new <<<KEYS>>> file into svn
---
$ svn ci -m "add [YOUR NAME]'s key to KEYS file"
---
* create an encrypted version of your Apache LDAP password for the nexus repository at {{{https://repository.apache.org/}https://repository.apache.org/}}
Follow the steps in the {{{http://maven.apache.org/guides/mini/guide-encryption.html}Password Encryption}}
guide to encrypt a master password and to encrypt your Apache LDAP password.
(It's nicer if you have maven > 3.2.1 to do this.)
* add to <<<~/.m2/settings.xml>>>
* for the upload to the nexus repository
---
<servers>
<!-- To publish a snapshot of some part of Maven -->
<server>
<id>apache.snapshots.https</id>
<username>[YOUR APACHE LDAP USERNAME]</username>
<password>[YOUR APACHE LDAP PASSWORD] (encrypted)</password>
</server>
<!-- To stage a release of some part of Maven -->
<server>
<id>apache.releases.https</id>
<username>[YOUR APACHE LDAP USERNAME]</username>
<password>[YOUR APACHE LDAP PASSWORD] (encrypted)</password>
</server>
...
</servers>
---
* to sign the artifacts
---
<profiles>
<profile>
<id>apache-release</id>
<properties>
<gpg.executable>gpg2</gpg.executable>
<gpg.passphrase>...</gpg.passphrase>
</properties>
</profile>
</profiles>
---
* Download Apache Rat from {{{https://creadur.apache.org/rat/download_rat.cgi}https://creadur.apache.org/rat/download_rat.cgi}}.
* Each time steps
* test your setup
---
$ mvn clean install -Papache-release
---
* dry run of the release process
---
$ mvn release:prepare -DdryRun=true
---
* run rat:
---
$ java -jar ~/Downloads/apache-rat-0.10/apache-rat-0.10.jar -d . -E .rat-excludes
---
* check (and fix) the content of the <<<LICENSE>>> and <<<NOTICE>>> files (especially the date) and the copyright dates in changed files
* release to the staging repository
---
$ mvn release:prepare
$ mvn release:perform
---
* close the staging repository at {{{https://repository.apache.org/}https://repository.apache.org/}}
* check that the artifacts are available in the repository
* send out <<<[VOTE]>>> e-mail on vxquery-dev
* after success on vxquery-dev send out <<<[VOTE]>>> e-mail on general@i.a.o
* after successful vote promote staging repository {{{https://repository.apache.org/}https://repository.apache.org/}}
* add new source artifacts (archive + signature + hashes) to svn {{{https://dist.apache.org/repos/dist/release/vxquery}https://dist.apache.org/repos/dist/release/vxquery}} and remove old release dirctory
* commit changes to svn
* update the <<<site>>> branch in git from the from the release-tag
* build a new site and deploy it to <<<../site>>>
---
$ mvn site site:deploy
---
* submit the site to svn
---
$ cd ../site
$ svn st | awk '/\?/ { print $2 }' | xargs svn add # add all new files
$ svn ci -m"updated site"
$ cd -
---
* wait a few days for the mirroring of the release artifacts
* send <<<[ANNOUNCE]>>> e-mail to announce@a.o, general@i.a.o, and vxquery-dev
* References
* {{{https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven}How To Generate PGP Signatures With Maven}}
* {{{https://www.apache.org/dev/publishing-maven-artifacts.html}Publishing Maven Artifacts}}
~~ * Handling issues
~~
~~ ** Undo release plugin:
~~
~~ ---
~~ $ svn merge -r 1526098:1524606 https://svn.apache.org/repos/asf/vxquery/branches/vxquery_0_2_staging
~~ $ svn del -m "re-releasing build" https://svn.apache.org/repos/asf/vxquery/tags/apache-vxquery-0.2-incubating
~~ ---