Process to deploy artifacts for multiple platforms into a single

release.

- Do not close the staging repository automatically
- Added staging.repository property
- Updated README with instructions for deployment
- Fix building 32-bit Mac artifact
This commit is contained in:
Kun Zhang 2015-04-06 14:31:29 -07:00
parent 4990875f00
commit c5a2a7c3db
3 changed files with 75 additions and 2 deletions

View File

@ -54,7 +54,62 @@ Before you can upload artifacts to Maven Central repository, make sure you have
read [this page](http://central.sonatype.org/pages/apache-maven.html) on how to
configure GPG and Sonatype account.
Use the following command to upload artifacts:
You need to perform the deployment for every platform that you want to
suppport. DO NOT close the staging repository until you have done the
deployment for all platforms.
Remove any ``SNAPSHOT`` or ``pre`` suffix from the version string before
deploying.
Use the following command to deploy artifacts for the host platform to a
staging repository.
```
$ mvn clean deploy -P release
```
It creates a new staging repository. Go to
https://oss.sonatype.org/#stagingRepositories and find the repository, usually
in the name like ``comgoogle-123``.
You will want to run this command on a different platform. Remember, in
subsequent deployments you will need to provide the repository name that you
have found in the first deployment so that all artifacts go to the same
repository:
```
$ mvn clean deploy -P release -Dstaging.repository=comgoogle-123
```
A 32-bit artifact can be deployed from a 64-bit host with
``-Dos.detected.arch=x86_32``
When you have done deployment for all platforms, go to
https://oss.sonatype.org/#stagingRepositories, verify that the staging
repository has all the binaries, close and release this repository.
### Tips for deploying on Windows
Under Windows the following error may 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:
```xml
<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>
```

View File

@ -71,7 +71,13 @@ checkArch ()
fi
elif [[ "$OS" == osx ]]; then
format="$(file -b "$1" | grep -o "[^ ]*$")"
assertEq $format "x86_64" $LINENO
if [[ "$ARCH" == x86_32 ]]; then
assertEq $format "i386" $LINENO
elif [[ "$ARCH" == x86_64 ]]; then
assertEq $format "x86_64" $LINENO
else
fail "Unsupported arch: $ARCH"
fi
else
fail "Unsupported system: $(uname)"
fi
@ -120,6 +126,13 @@ elif [[ "$(uname)" == Linux* ]]; then
fi
elif [[ "$(uname)" == Darwin* ]]; then
assertEq "$OS" osx $LINENO
if [[ "$ARCH" == x86_64 ]]; then
CXXFLAGS="$CXXFLAGS -m64"
elif [[ "$ARCH" == x86_32 ]]; then
CXXFLAGS="$CXXFLAGS -m32"
else
fail "Unsupported arch: $ARCH"
fi
else
fail "Unsupported system: $(uname)"
fi

View File

@ -90,6 +90,9 @@
<profiles>
<profile>
<id>release</id>
<properties>
<staging.repository></staging.repository>
</properties>
<build>
<plugins>
<plugin>
@ -114,7 +117,9 @@
<configuration>
<serverId>sonatype-nexus-staging</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<skipStagingRepositoryClose>true</skipStagingRepositoryClose>
<autoReleaseAfterClose>false</autoReleaseAfterClose>
<stagingRepositoryId>${staging.repository}</stagingRepositoryId>
</configuration>
</plugin>
</plugins>