Skip to content

Commit

Permalink
Process to deploy artifacts for multiple platforms into a single
Browse files Browse the repository at this point in the history
release.

- Do not close the staging repository automatically
- Added staging.repository property
- Updated README with instructions for deployment
- Fix building 32-bit Mac artifact
  • Loading branch information
zhangkun83 committed Apr 7, 2015
1 parent 4990875 commit c5a2a7c
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 2 deletions.
57 changes: 56 additions & 1 deletion protoc-artifacts/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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>
```
15 changes: 14 additions & 1 deletion protoc-artifacts/build-protoc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
5 changes: 5 additions & 0 deletions protoc-artifacts/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,9 @@
<profiles>
<profile>
<id>release</id>
<properties>
<staging.repository></staging.repository>
</properties>
<build>
<plugins>
<plugin>
Expand All @@ -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>
Expand Down

0 comments on commit c5a2a7c

Please sign in to comment.