parent
5aeee3dc91
commit
9dadb37fb2
2 changed files with 69 additions and 0 deletions
@ -0,0 +1,7 @@ |
||||
build_file: "protobuf/kokoro/release/collect_all_artifacts.sh" |
||||
|
||||
action { |
||||
define_artifacts { |
||||
regex: "github/protobuf/artifacts/**" |
||||
} |
||||
} |
@ -0,0 +1,62 @@ |
||||
#!/bin/bash |
||||
|
||||
set -ex |
||||
|
||||
# Change to repo root. |
||||
cd $(dirname $0)/../.. |
||||
|
||||
# Initialize any submodules. |
||||
git submodule update --init --recursive |
||||
|
||||
# The directory with all resulting artifacts |
||||
mkdir -p artifacts |
||||
|
||||
# Artifacts from all predecessor jobs get copied to this directory by kokoro |
||||
INPUT_ARTIFACTS_DIR="${KOKORO_GFILE_DIR}/github/protobuf" |
||||
|
||||
# TODO(jtattermusch): remove listing the files, but for now it make it easier |
||||
# to iterate on the script. |
||||
ls -R ${INPUT_ARTIFACTS_DIR} |
||||
|
||||
# ==================================== |
||||
# Copy to expose all the artifacts from the predecessor jobs to the output |
||||
# TODO(jtattermusch): the directory layout of the artifact builds is pretty messy, |
||||
# so will be the output artifacts of this job. |
||||
cp -r ${INPUT_ARTIFACTS_DIR}/* artifacts |
||||
|
||||
# ==================================== |
||||
# Build Google.Protobuf.Tools C# nuget |
||||
# The reason it's being done in this script is that we need access to protoc binaries |
||||
# built on multiple platform (the build is performed by the "build artifact" step) |
||||
# and adding and extra chained build just for building the Google.Protobuf.Tools |
||||
# nuget seems like an overkill. |
||||
cd csharp |
||||
mkdir -p protoc/windows_x86 |
||||
mkdir -p protoc/windows_x64 |
||||
cp ${INPUT_ARTIFACTS_DIR}/build32/Release/protoc.exe protoc/windows_x86/protoc.exe |
||||
cp ${INPUT_ARTIFACTS_DIR}/build64/Release/protoc.exe protoc/windows_x64/protoc.exe |
||||
|
||||
mkdir -p protoc/linux_x86 |
||||
mkdir -p protoc/linux_x64 |
||||
# Because of maven unrelated reasonse the linux protoc binaries have a dummy .exe extension. |
||||
# For the Google.Protobuf.Tools nuget, we don't want that expection, so we just remove it. |
||||
cp ${INPUT_ARTIFACTS_DIR}/protoc-artifacts/target/linux/x86_32/protoc.exe protoc/linux_x86/protoc |
||||
cp ${INPUT_ARTIFACTS_DIR}/protoc-artifacts/target/linux/x86_64/protoc.exe protoc/linux_x64/protoc |
||||
|
||||
mkdir -p protoc/macosx_x86 |
||||
mkdir -p protoc/macosx_x64 |
||||
cp ${INPUT_ARTIFACTS_DIR}/build32/src/protoc protoc/macosx_x86/protoc |
||||
cp ${INPUT_ARTIFACTS_DIR}/build64/src/protoc protoc/macosx_x64/protoc |
||||
|
||||
# Install nuget (will also install mono) |
||||
# TODO(jtattermusch): use "mono:5.14" docker image instead so we don't have to apt-get install |
||||
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF |
||||
sudo apt install apt-transport-https |
||||
echo "deb https://download.mono-project.com/repo/ubuntu stable-trusty main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list |
||||
sudo apt update |
||||
sudo apt-get install -y nuget |
||||
|
||||
nuget pack Google.Protobuf.Tools.nuspec |
||||
|
||||
# Copy the nupkg to the output artifacts |
||||
cp Google.Protobuf.Tools.*.nupkg ../artifacts |
Loading…
Reference in new issue