mirror of https://github.com/grpc/grpc-java.git
Reorganizing the deployment docs.
This commit is contained in:
parent
0d03f89467
commit
483738e8bc
211
DEPLOYING.md
211
DEPLOYING.md
|
|
@ -1,211 +0,0 @@
|
||||||
How to Deploy GRPC Java to Maven Central (for Maintainers Only)
|
|
||||||
===============================================================
|
|
||||||
|
|
||||||
Build Environments
|
|
||||||
------------------
|
|
||||||
We deploy GRPC to Maven Central under the following systems:
|
|
||||||
- Ubuntu 14.04 with Docker 1.6.1 that runs CentOS 6.6
|
|
||||||
- Windows 7 64-bit with MSYS2 with mingw32 and mingw64
|
|
||||||
- Mac OS X 10.9.5
|
|
||||||
|
|
||||||
Other systems may also work, but we haven't verified them.
|
|
||||||
|
|
||||||
Prerequisites
|
|
||||||
-------------
|
|
||||||
|
|
||||||
### Setup OSSRH and Signing
|
|
||||||
|
|
||||||
If you haven't deployed artifacts to Maven Central before, you need to setup
|
|
||||||
your OSSRH account and signing keys.
|
|
||||||
- Follow the instructions on [this
|
|
||||||
page](http://central.sonatype.org/pages/ossrh-guide.html) to set up an
|
|
||||||
account with OSSRH.
|
|
||||||
- (For release deployment only) Install GnuPG and [generate your key
|
|
||||||
pair](https://www.gnupg.org/documentation/howtos.html)
|
|
||||||
- Put your GnuPG key password and OSSRH account information in
|
|
||||||
``<your-home-directory>/.gradle/gradle.properties``.
|
|
||||||
|
|
||||||
```
|
|
||||||
# You need the signing properties only if you are making release deployment
|
|
||||||
signing.keyId=<8-character-public-key-id>
|
|
||||||
signing.password=<key-password>
|
|
||||||
signing.secretKeyRingFile=<your-home-directory>/.gnupg/secring.gpg
|
|
||||||
|
|
||||||
ossrhUsername=<ossrh-username>
|
|
||||||
ossrhPassword=<ossrh-password>
|
|
||||||
checkstyle.ignoreFailures=false
|
|
||||||
```
|
|
||||||
|
|
||||||
### Build Protobuf
|
|
||||||
Protobuf libraries are needed for compiling the GRPC codegen. Despite that you
|
|
||||||
may have installed Protobuf on your system, you may want to build Protobuf
|
|
||||||
separately and install it under your personal directory, because
|
|
||||||
|
|
||||||
1. The Protobuf version installed on your system may be different from what
|
|
||||||
GRPC requires. You may not want to pollute your system installation.
|
|
||||||
2. We will deploy both 32-bit and 64-bit versions of the codegen, thus require
|
|
||||||
both variants of Protobuf libraries. You don't want to mix them in your
|
|
||||||
system paths.
|
|
||||||
|
|
||||||
|
|
||||||
#### Linux with Docker
|
|
||||||
Build the ``protoc-artifacts`` image under the Protobuf source directory:
|
|
||||||
```
|
|
||||||
protobuf$ docker build -t protoc-artifacts protoc-artifacts
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Windows 64-bit with MSYS2 (Recommended for Windows)
|
|
||||||
Because the gcc shipped with MSYS2 doesn't support multilib, you have to
|
|
||||||
compile and deploy 32-bit and 64-bit binaries in separate steps.
|
|
||||||
|
|
||||||
##### Under MinGW-w64 Win32 Shell
|
|
||||||
Compile and install 32-bit protobuf:
|
|
||||||
```
|
|
||||||
protobuf$ ./configure --disable-shared --prefix=$HOME/protobuf-32
|
|
||||||
protobuf$ make clean && make && make install
|
|
||||||
```
|
|
||||||
|
|
||||||
##### Under MinGW-w64 Win64 Shell
|
|
||||||
Compile and install 64-bit protobuf:
|
|
||||||
```
|
|
||||||
protobuf$ ./configure --disable-shared --prefix=$HOME/protobuf-64
|
|
||||||
protobuf$ make clean && make && make install
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
#### Windows 64-bit with Cygwin64 (TODO: incomplete)
|
|
||||||
Because the MinGW gcc shipped with Cygwin64 doesn't support multilib, you have
|
|
||||||
to compile and deploy 32-bit and 64-bit binaries in separate steps.
|
|
||||||
|
|
||||||
Compile and install 32-bit protobuf. ``-static-libgcc -static-libstdc++`` are
|
|
||||||
needed for ``protoc`` to be successfully run in the unit test.
|
|
||||||
```
|
|
||||||
protobuf$ LDFLAGS="-static-libgcc -static-libstdc++" ./configure --host=i686-w64-mingw32 --disable-shared --prefix=$HOME/protobuf-32
|
|
||||||
protobuf$ make clean && make && make install
|
|
||||||
```
|
|
||||||
|
|
||||||
Compile and install 64-bit protobuf:
|
|
||||||
```
|
|
||||||
protobuf$ ./configure --host=x86_64-w64-mingw32 --disable-shared --prefix=$HOME/protobuf-64
|
|
||||||
protobuf$ make clean && make && make install
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
#### Mac
|
|
||||||
Please refer to [Protobuf
|
|
||||||
README](https://github.com/google/protobuf/blob/master/README.md) for how to
|
|
||||||
set up GCC and Unix tools on Mac.
|
|
||||||
|
|
||||||
Mac OS X has been 64-bit-only since 10.7 and we are compiling for 10.7 and up.
|
|
||||||
We only build 64-bit artifact for Mac.
|
|
||||||
|
|
||||||
Compile and install protobuf:
|
|
||||||
```
|
|
||||||
protobuf$ CXXFLAGS="-m64" ./configure --disable-shared --prefix=$HOME/protobuf
|
|
||||||
protobuf$ make clean && make && make install
|
|
||||||
```
|
|
||||||
|
|
||||||
Build and Deploy
|
|
||||||
----------------
|
|
||||||
You may want to open a shell dedicated for the following tasks, because you
|
|
||||||
will set a few environment variables which is only used in deployment.
|
|
||||||
|
|
||||||
|
|
||||||
### Setup Environment Variables
|
|
||||||
|
|
||||||
Compilation of the codegen requires additional environment variables to locate
|
|
||||||
the header files and libraries of Protobuf.
|
|
||||||
|
|
||||||
#### Linux
|
|
||||||
Build the ``grpc-java-deploy`` image:
|
|
||||||
```
|
|
||||||
grpc-java$ docker build -t grpc-java-deploy compiler
|
|
||||||
```
|
|
||||||
|
|
||||||
Start a Docker container that has the deploy environment set up for you. The
|
|
||||||
gRPC source is cloned into ``/grpc-java``.
|
|
||||||
```
|
|
||||||
$ docker run -it --rm=true grpc-java-deploy
|
|
||||||
```
|
|
||||||
Note that the container will be deleted after you exit. Any changes you have
|
|
||||||
made (e.g., copied configuration files) will be lost. If you want to keep the
|
|
||||||
container, remove ``--rm=true`` from the command line.
|
|
||||||
|
|
||||||
You need to copy your OSSRH credentials and GnuPG keys to your docker container.
|
|
||||||
Run ``ifconfig`` in the host, find the IP address of the ``docker0`` interface.
|
|
||||||
Then in docker:
|
|
||||||
```
|
|
||||||
# scp -r <your-host-user>@<docker0-IP>:./.gnupg ~/
|
|
||||||
# mkdir ~/.gradle
|
|
||||||
# scp -r <your-host-user>@<docker0-IP>:./.gradle/gradle.properties ~/.gradle
|
|
||||||
```
|
|
||||||
|
|
||||||
Since ``$HOME`` is ``/root`` in the Docker container, remember to update
|
|
||||||
``signing.secretKeyRingFile`` in the Docker copy of ``gradle.properties`` to
|
|
||||||
point to ``/root/.gnupg/secring.gpg``
|
|
||||||
|
|
||||||
#### Windows 64-bit with MSYS2
|
|
||||||
|
|
||||||
##### Under MinGW-w64 Win32 Shell
|
|
||||||
|
|
||||||
```
|
|
||||||
grpc-java$ export CXXFLAGS="-I$HOME/protobuf-32/include" \
|
|
||||||
LDFLAGS="-L$HOME/protobuf-32/lib"
|
|
||||||
```
|
|
||||||
|
|
||||||
##### Under MinGW-w64 Win64 Shell
|
|
||||||
```
|
|
||||||
grpc-java$ export CXXFLAGS="-I$HOME/protobuf-64/include" \
|
|
||||||
LDFLAGS="-L$HOME/protobuf-64/lib"
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
#### Mac
|
|
||||||
```
|
|
||||||
grpc-java$ export CXXFLAGS="-I$HOME/protobuf/include" \
|
|
||||||
LDFLAGS="$HOME/protobuf/lib/libprotobuf.a $HOME/protobuf/lib/libprotoc.a"
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Deploy the Entire Project
|
|
||||||
|
|
||||||
The following command will build the whole project and upload it to Maven
|
|
||||||
Central.
|
|
||||||
```
|
|
||||||
grpc-java$ ./gradlew clean build && ./gradlew uploadArchives
|
|
||||||
```
|
|
||||||
|
|
||||||
If the version has the ``SNAPSHOT`` suffix, the artifacts will automatically
|
|
||||||
go to the snapshot repository. Otherwise it's a release deployment and the
|
|
||||||
artifacts will go to a freshly created staging repository.
|
|
||||||
|
|
||||||
|
|
||||||
### Deploy GRPC Codegen for Additional Platforms
|
|
||||||
The previous step will only deploy the codegen artifacts for the OS you run on
|
|
||||||
it and the architecture of your JVM. For a fully fledged deployment, you will
|
|
||||||
need to deploy the codegen for all other supported OSes and architectures.
|
|
||||||
|
|
||||||
To deploy the codegen for an OS and architecture, you must run the following
|
|
||||||
commands on that OS and specify the architecture by the flag ``-PtargetArch=<arch>``.
|
|
||||||
|
|
||||||
We currently distribute the following OSes and architectures:
|
|
||||||
- Linux: ``x86_32``, ``x86_64``
|
|
||||||
- Windows: ``x86_32``, ``x86_64``
|
|
||||||
- Mac: ``x86_64``
|
|
||||||
|
|
||||||
If you are doing a snapshot deployment:
|
|
||||||
```
|
|
||||||
grpc-java$ ./gradlew clean grpc-compiler:build grpc-compiler:uploadArchives -PtargetArch=<arch>
|
|
||||||
```
|
|
||||||
|
|
||||||
If you are doing a release deployment:
|
|
||||||
```
|
|
||||||
grpc-java$ ./gradlew clean grpc-compiler:build grpc-compiler:uploadArchives -PtargetArch=<arch> \
|
|
||||||
-PrepositoryId=<repository-id>
|
|
||||||
```
|
|
||||||
where ``<repository-id>`` is the ID of the staging repository that you have
|
|
||||||
found from the OSSRH UI after the first deployment, usually in the form of
|
|
||||||
``iogrpc-*``. This makes sure the additional codegen artifacts go to the same
|
|
||||||
repository as the main project is in.
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,290 @@
|
||||||
|
How to Create a Release of GRPC Java (for Maintainers Only)
|
||||||
|
===============================================================
|
||||||
|
|
||||||
|
Build Environments
|
||||||
|
------------------
|
||||||
|
We deploy GRPC to Maven Central under the following systems:
|
||||||
|
- Ubuntu 14.04 with Docker 1.6.1 that runs CentOS 6.6
|
||||||
|
- Windows 7 64-bit with MSYS2 with mingw32 and mingw64
|
||||||
|
- Mac OS X 10.9.5
|
||||||
|
|
||||||
|
Other systems may also work, but we haven't verified them.
|
||||||
|
|
||||||
|
Prerequisites
|
||||||
|
-------------
|
||||||
|
|
||||||
|
### Setup OSSRH and Signing
|
||||||
|
|
||||||
|
If you haven't deployed artifacts to Maven Central before, you need to setup
|
||||||
|
your OSSRH (OSS Repository Hosting) account and signing keys.
|
||||||
|
- Follow the instructions on [this
|
||||||
|
page](http://central.sonatype.org/pages/ossrh-guide.html) to set up an
|
||||||
|
account with OSSRH.
|
||||||
|
- (For release deployment only) Install GnuPG and [generate your key
|
||||||
|
pair](https://www.gnupg.org/documentation/howtos.html). You'll also
|
||||||
|
need to [publish your public key](https://www.gnupg.org/gph/en/manual.html#AEN464)
|
||||||
|
to make it visible to the Sonatype servers
|
||||||
|
(e.g. `gpg --keyserver pgp.mit.edu --send-key <key ID>`).
|
||||||
|
- Put your GnuPG key password and OSSRH account information in
|
||||||
|
`<your-home-directory>/.gradle/gradle.properties`.
|
||||||
|
|
||||||
|
```
|
||||||
|
# You need the signing properties only if you are making release deployment
|
||||||
|
signing.keyId=<8-character-public-key-id>
|
||||||
|
signing.password=<key-password>
|
||||||
|
signing.secretKeyRingFile=<your-home-directory>/.gnupg/secring.gpg
|
||||||
|
|
||||||
|
ossrhUsername=<ossrh-username>
|
||||||
|
ossrhPassword=<ossrh-password>
|
||||||
|
checkstyle.ignoreFailures=false
|
||||||
|
```
|
||||||
|
|
||||||
|
### Build Protobuf
|
||||||
|
Protobuf libraries are needed for compiling the GRPC codegen. Despite that you
|
||||||
|
may have installed Protobuf on your system, you may want to build Protobuf
|
||||||
|
separately and install it under your personal directory, because
|
||||||
|
|
||||||
|
1. The Protobuf version installed on your system may be different from what
|
||||||
|
GRPC requires. You may not want to pollute your system installation.
|
||||||
|
2. We will deploy both 32-bit and 64-bit versions of the codegen, thus require
|
||||||
|
both variants of Protobuf libraries. You don't want to mix them in your
|
||||||
|
system paths.
|
||||||
|
|
||||||
|
Please see the [Main Readme](README.md) for details on building protobuf.
|
||||||
|
|
||||||
|
Tagging the Release
|
||||||
|
----------------------
|
||||||
|
The first step in the release process is to create a release branch and then
|
||||||
|
from it, create a tag for the release. Our release branches follow the naming
|
||||||
|
convention of `v<major>.<minor>.x`, while the tags include the patch version
|
||||||
|
`v<major>.<minor>.<patch>`. For example, the same branch `v0.7.x`
|
||||||
|
would be used to create all `v0.7` tags (e.g. `v0.7.0`, `v0.7.1`).
|
||||||
|
|
||||||
|
1. Create the release branch:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ git checkout -b v<major>.<minor>.x master
|
||||||
|
```
|
||||||
|
2. Next, increment the version in `build.gradle` in `master` to the next
|
||||||
|
minor snapshot (e.g. ``0.8.0-SNAPSHOT``).
|
||||||
|
3. In the release branch, change the `build.gradle` to the next release version
|
||||||
|
(e.g. `0.7.0`)
|
||||||
|
4. Push the release branch to github
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ git push upstream v<major>.<minor>.x
|
||||||
|
```
|
||||||
|
5. In the release branch, create the release tag using the `Major.Minor.Patch`
|
||||||
|
naming convention:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ git tag -a v<major>.<minor>.<patch>
|
||||||
|
```
|
||||||
|
6. Push the release tag to github:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ git push upstream v<major>.<minor>.<patch>
|
||||||
|
```
|
||||||
|
7. Update the `build.gradle` in the release branch to point to the next patch
|
||||||
|
snapshot (e.g. `0.7.1-SNAPSHOT`).
|
||||||
|
8. Push the updated release branch to github.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ git push upstream v<major>.<minor>.x
|
||||||
|
```
|
||||||
|
|
||||||
|
Setup Build Environment
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
### Linux
|
||||||
|
The deployment for Linux uses [Docker](https://www.docker.com/) running
|
||||||
|
CentOS 6.6 in order to ensure that we have a consistent deployment environment
|
||||||
|
on Linux. You'll first need to install Docker if not already installed on your
|
||||||
|
system.
|
||||||
|
|
||||||
|
1. Under the [Protobuf source directory](https://github.com/google/protobuf),
|
||||||
|
build the `protoc-artifacts` image:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
protobuf$ docker build -t protoc-artifacts protoc-artifacts
|
||||||
|
```
|
||||||
|
2. Under the grpc-java source directory, build the `grpc-java-deploy` image:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
grpc-java$ docker build -t grpc-java-deploy compiler
|
||||||
|
```
|
||||||
|
3. Start a Docker container that has the deploy environment set up for you. The
|
||||||
|
GRPC source is cloned into `/grpc-java`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker run -it --rm=true grpc-java-deploy
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that the container will be deleted after you exit. Any changes you have
|
||||||
|
made (e.g., copied configuration files) will be lost. If you want to keep the
|
||||||
|
container, remove `--rm=true` from the command line.
|
||||||
|
4. Next, you'll need to copy your OSSRH credentials and GnuPG keys to your docker container.
|
||||||
|
Run `ifconfig` in the host, find the IP address of the `docker0` interface.
|
||||||
|
Then in Docker:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ scp -r <your-host-user>@<docker0-IP>:./.gnupg ~/
|
||||||
|
$ mkdir ~/.gradle
|
||||||
|
$ scp -r <your-host-user>@<docker0-IP>:./.gradle/gradle.properties ~/.gradle
|
||||||
|
```
|
||||||
|
|
||||||
|
You'll also need to update `signing.secretKeyRingFile` in
|
||||||
|
`/root/.gradle/gradle.properties` to point to `/root/.gnupg/secring.gpg`.
|
||||||
|
|
||||||
|
### Windows
|
||||||
|
|
||||||
|
#### Windows 64-bit with MSYS2 (Recommended for Windows)
|
||||||
|
Because the gcc shipped with MSYS2 doesn't support multilib, you have to
|
||||||
|
compile and deploy 32-bit and 64-bit binaries in separate steps.
|
||||||
|
|
||||||
|
##### Under MinGW-w64 Win32 Shell
|
||||||
|
1. Compile and install 32-bit protobuf:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
protobuf$ ./configure --disable-shared --prefix=$HOME/protobuf-32
|
||||||
|
protobuf$ make clean && make && make install
|
||||||
|
```
|
||||||
|
2. Configure CXXFLAGS needed by the protoc plugin when building.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
grpc-java$ export CXXFLAGS="-I$HOME/protobuf-32/include" \
|
||||||
|
LDFLAGS="-L$HOME/protobuf-32/lib"
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Under MinGW-w64 Win64 Shell
|
||||||
|
1. Compile and install 64-bit protobuf:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
protobuf$ ./configure --disable-shared --prefix=$HOME/protobuf-64
|
||||||
|
protobuf$ make clean && make && make install
|
||||||
|
```
|
||||||
|
2. Configure CXXFLAGS needed by the protoc plugin when building.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
grpc-java$ export CXXFLAGS="-I$HOME/protobuf-64/include" \
|
||||||
|
LDFLAGS="-L$HOME/protobuf-64/lib"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Windows 64-bit with Cygwin64 (TODO: incomplete)
|
||||||
|
Because the MinGW gcc shipped with Cygwin64 doesn't support multilib, you have
|
||||||
|
to compile and deploy 32-bit and 64-bit binaries in separate steps.
|
||||||
|
|
||||||
|
1. Compile and install 32-bit protobuf. `-static-libgcc -static-libstdc++` are
|
||||||
|
needed for `protoc` to be successfully run in the unit test.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
protobuf$ LDFLAGS="-static-libgcc -static-libstdc++" ./configure --host=i686-w64-mingw32 --disable-shared --prefix=$HOME/protobuf-32
|
||||||
|
protobuf$ make clean && make && make install
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Compile and install 64-bit protobuf:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
protobuf$ ./configure --host=x86_64-w64-mingw32 --disable-shared --prefix=$HOME/protobuf-64
|
||||||
|
protobuf$ make clean && make && make install
|
||||||
|
```
|
||||||
|
|
||||||
|
### Mac
|
||||||
|
Please refer to [Protobuf
|
||||||
|
README](https://github.com/google/protobuf/blob/master/README.md) for how to
|
||||||
|
set up GCC and Unix tools on Mac.
|
||||||
|
|
||||||
|
Mac OS X has been 64-bit-only since 10.7 and we are compiling for 10.7 and up.
|
||||||
|
We only build 64-bit artifact for Mac.
|
||||||
|
|
||||||
|
1. Compile and install protobuf:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
protobuf$ CXXFLAGS="-m64" ./configure --disable-shared --prefix=$HOME/protobuf
|
||||||
|
protobuf$ make clean && make && make install
|
||||||
|
```
|
||||||
|
2. Configure CXXFLAGS needed by the protoc plugin when building.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
grpc-java$ export CXXFLAGS="-I$HOME/protobuf/include" \
|
||||||
|
LDFLAGS="$HOME/protobuf/lib/libprotobuf.a $HOME/protobuf/lib/libprotoc.a"
|
||||||
|
```
|
||||||
|
|
||||||
|
Build and Deploy
|
||||||
|
----------------
|
||||||
|
We currently distribute the following OSes and architectures:
|
||||||
|
|
||||||
|
| OS | x86_32 | x86_64 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| Linux | X | X |
|
||||||
|
| Windows | X | X |
|
||||||
|
| Mac | | X |
|
||||||
|
|
||||||
|
Deployment to Maven Central (or the snapshot repo) is a two-step process. The only
|
||||||
|
artifact that is platform-specific is codegen, so we only need to deploy the other
|
||||||
|
jars once. So the first deployment is for all of the artifacts from one of the selected
|
||||||
|
OS/architectures. After that, we then deploy the codegen artifacts for the remaining
|
||||||
|
OS/architectures.
|
||||||
|
|
||||||
|
**NOTE: _Before building/deploying, be sure to switch to the appropriate branch or tag in
|
||||||
|
the grpc-java source directory._**
|
||||||
|
|
||||||
|
### First Deployment
|
||||||
|
|
||||||
|
As stated above, this only needs to be done once for one of the selected OS/architectures.
|
||||||
|
The following command will build the whole project and upload it to Maven
|
||||||
|
Central.
|
||||||
|
```bash
|
||||||
|
grpc-java$ ./gradlew clean build && ./gradlew uploadArchives
|
||||||
|
```
|
||||||
|
|
||||||
|
If the version has the `-SNAPSHOT` suffix, the artifacts will automatically
|
||||||
|
go to the snapshot repository. Otherwise it's a release deployment and the
|
||||||
|
artifacts will go to a freshly created staging repository.
|
||||||
|
|
||||||
|
### Deploy GRPC Codegen for Additional Platforms
|
||||||
|
The previous step will only deploy the codegen artifacts for the OS you run on
|
||||||
|
it and the architecture of your JVM. For a fully fledged deployment, you will
|
||||||
|
need to deploy the codegen for all other supported OSes and architectures.
|
||||||
|
|
||||||
|
To deploy the codegen for an OS and architecture, you must run the following
|
||||||
|
commands on that OS and specify the architecture by the flag `-PtargetArch=<arch>`.
|
||||||
|
|
||||||
|
If you are doing a snapshot deployment:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
grpc-java$ ./gradlew clean grpc-compiler:build grpc-compiler:uploadArchives -PtargetArch=<arch>
|
||||||
|
```
|
||||||
|
|
||||||
|
When deploying a Release, the first deployment will create
|
||||||
|
[a new staging repository](https://oss.sonatype.org/#stagingRepositories). You'll need
|
||||||
|
to look up the ID in the OSSRH UI (usually in the form of `iogrpc-*`). Codegen
|
||||||
|
deployment commands should include `-PrepositoryId=<repository-id>` in order to
|
||||||
|
ensure that the artifacts are pushed to the same staging repository.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
grpc-java$ ./gradlew clean grpc-compiler:build grpc-compiler:uploadArchives -PtargetArch=<arch> \
|
||||||
|
-PrepositoryId=<repository-id>
|
||||||
|
```
|
||||||
|
|
||||||
|
Releasing on Maven Central
|
||||||
|
--------------------------
|
||||||
|
Once all of the artifacts have been pushed to the staging repository, the
|
||||||
|
repository must first be `closed`, which will trigger several sanity checks
|
||||||
|
on the repository. If this completes successfully, the repository can then
|
||||||
|
be `released`, which will begin the process of pushing the new artifacts to
|
||||||
|
Maven Central (the staging repository will be destroyed in the process). You can
|
||||||
|
see the complete process for releasing to Maven Central on the [OSSRH site]
|
||||||
|
(http://central.sonatype.org/pages/releasing-the-deployment.html).
|
||||||
|
|
||||||
|
Notify the Community
|
||||||
|
--------------------
|
||||||
|
After waiting ~1 day and verifying that the release appears on [Maven Central]
|
||||||
|
(http://mvnrepository.com/), the last step is to document and publicize the release.
|
||||||
|
|
||||||
|
1. Add [Release Notes](https://github.com/grpc/grpc-java/releases) for the new tag.
|
||||||
|
The description should include any major fixes or features since the last release.
|
||||||
|
You may choose to add links to bugs, PRs, or commits if appropriate.
|
||||||
|
2. Post a release announcement to [grpc-io](https://groups.google.com/forum/#!forum/grpc-io)
|
||||||
|
(`grpc-io@googlegroups.com`). The title should be something that clearly identifies
|
||||||
|
the release (e.g.`GRPC-Java <tag> Released`).
|
||||||
|
|
@ -51,6 +51,6 @@ repostiories.
|
||||||
$ ../gradlew install
|
$ ../gradlew install
|
||||||
```
|
```
|
||||||
|
|
||||||
## Pushing the codegen to Maven Central
|
## Creating a release of GRPC Java
|
||||||
Please follow the instructions in ``DEPLOYING.md`` under the root directory for
|
Please follow the instructions in ``RELEASING.md`` under the root directory for
|
||||||
deploying the codegen to Maven Central.
|
details on how to create a new release.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue