parent
481c1d57e7
commit
e6c9edb111
2 changed files with 136 additions and 0 deletions
@ -0,0 +1,26 @@ |
||||
# Copyright 2018 The gRPC Authors |
||||
# |
||||
# Licensed 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. |
||||
|
||||
# Config file for the internal CI (in protobuf text format) |
||||
|
||||
# Location of the continuous shell script in repository. |
||||
build_file: "grpc/tools/internal_ci/linux/grpc_publish_packages.sh" |
||||
timeout_mins: 120 |
||||
action { |
||||
define_artifacts { |
||||
regex: "**/*sponge_log.xml" |
||||
regex: "github/grpc/reports/**" |
||||
regex: "github/grpc/artifacts/**" |
||||
} |
||||
} |
@ -0,0 +1,110 @@ |
||||
#!/bin/bash |
||||
# Copyright 2018 The gRPC Authors |
||||
# |
||||
# Licensed 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. |
||||
|
||||
set -ex |
||||
|
||||
shopt -s nullglob |
||||
|
||||
export GOOGLE_APPLICATION_CREDENTIALS=${KOKORO_GFILE_DIR}/GrpcTesting-d0eeee2db331.json |
||||
|
||||
GCS_ROOT=gs://packages.grpc.io |
||||
MANIFEST_FILE=index.xml |
||||
ARCHIVE_UUID=${KOKORO_BUILD_ID:-$(uuidgen)} |
||||
GIT_BRANCH_NAME=master #${KOKORO_GITHUB_COMMIT:-master} |
||||
GIT_COMMIT=${KOKORO_GIT_COMMIT:-unknown} |
||||
ARCHIVE_TIMESTAMP=$(date -Iseconds) |
||||
TARGET_DIR=$(mktemp -d grpc_publish_packages.sh.XXXX) |
||||
YEAR_MONTH_PREFIX=$(date "+%Y/%m") |
||||
YEAR_PREFIX=${YEAR_MONTH_PREFIX%%/*} |
||||
UPLOAD_ROOT=$TARGET_DIR/$YEAR_PREFIX |
||||
RELATIVE_PATH=$YEAR_MONTH_PREFIX/$ARCHIVE_UUID |
||||
BUILD_ROOT=$TARGET_DIR/$RELATIVE_PATH |
||||
|
||||
LINUX_PACKAGES=$KOKORO_GFILE_DIR/github/grpc/artifacts |
||||
WINDOWS_PACKAGES=$KOKORO_GFILE_DIR/github/grpc/artifacts |
||||
# TODO(mmx): enable linux_extra |
||||
# LINUX_EXTRA_PACKAGES=$KOKORO_GFILE_DIR/github/grpc/artifacts |
||||
|
||||
PYTHON_PACKAGES=( |
||||
"$LINUX_PACKAGES"/grpcio-[0-9]*.whl |
||||
"$LINUX_PACKAGES"/grpcio-[0-9]*.tar.gz |
||||
"$LINUX_PACKAGES"/grpcio_tools-[0-9]*.whl |
||||
"$LINUX_PACKAGES"/grpcio-tools-[0-9]*.tar.gz |
||||
"$LINUX_PACKAGES"/grpcio-health-checking-[0-9]*.tar.gz |
||||
"$LINUX_PACKAGES"/grpcio-reflection-[0-9]*.tar.gz |
||||
"$LINUX_PACKAGES"/grpcio-testing-[0-9]*.tar.gz |
||||
#"$LINUX_EXTRA_PACKAGES"/grpcio-[0-9]*.whl |
||||
#"$LINUX_EXTRA_PACKAGES"/grpcio_tools-[0-9]*.whl |
||||
) |
||||
|
||||
PHP_PACKAGES=( |
||||
"$LINUX_PACKAGES"/grpc-[0-9]*.tgz |
||||
) |
||||
|
||||
RUBY_PACKAGES=( |
||||
"$LINUX_PACKAGES"/grpc-[0-9]*.gem |
||||
"$LINUX_PACKAGES"/grpc-tools-[0-9]*.gem |
||||
) |
||||
|
||||
CSHARP_PACKAGES=( |
||||
"$WINDOWS_PACKAGES"/csharp_nugets_windows_dotnetcli.zip |
||||
) |
||||
|
||||
function add_to_manifest() { |
||||
local xml_type=$1 |
||||
local xml_name |
||||
xml_name=$(basename "$2") |
||||
local xml_sha256 |
||||
xml_sha256=$(openssl sha256 -r "$2" | cut -d " " -f 1) |
||||
cp "$2" "$BUILD_ROOT" |
||||
echo "<artifact type='$xml_type' name='$xml_name' sha256='$xml_sha256' />" |
||||
} |
||||
|
||||
mkdir -p "$BUILD_ROOT" |
||||
|
||||
{ |
||||
cat <<EOF |
||||
<?xml version="1.0"?> |
||||
<?xml-stylesheet href="/web-assets/build.xsl" type="text/xsl"?> |
||||
EOF |
||||
echo "<build id='$ARCHIVE_UUID' timestamp='$ARCHIVE_TIMESTAMP'>" |
||||
echo "<metadata>" |
||||
echo "<branch>$GIT_BRANCH_NAME</branch>" |
||||
echo "<commit>$GIT_COMMIT</commit>" |
||||
echo "</metadata><artifacts>" |
||||
|
||||
for pkg in "${PYTHON_PACKAGES[@]}"; do add_to_manifest python "$pkg"; done |
||||
for pkg in "${CSHARP_PACKAGES[@]}"; do add_to_manifest csharp "$pkg"; done |
||||
for pkg in "${PHP_PACKAGES[@]}"; do add_to_manifest php "$pkg"; done |
||||
for pkg in "${RUBY_PACKAGES[@]}"; do add_to_manifest ruby "$pkg"; done |
||||
|
||||
echo "</artifacts></build>" |
||||
}> "$BUILD_ROOT/$MANIFEST_FILE" |
||||
|
||||
BUILD_XML_SHA=$(openssl sha256 -r "$BUILD_ROOT/$MANIFEST_FILE" | cut -d " " -f 1) |
||||
|
||||
PREV_HOME=$(mktemp old-XXXXX-$MANIFEST_FILE) |
||||
NEW_HOME=$(mktemp new-XXXXX-$MANIFEST_FILE) |
||||
gsutil cp "$GCS_ROOT/$MANIFEST_FILE" "$PREV_HOME" |
||||
|
||||
{ |
||||
head --lines=4 "$PREV_HOME" |
||||
echo "<build id='$ARCHIVE_UUID' timestamp='$ARCHIVE_TIMESTAMP' branch='$GIT_BRANCH_NAME' commit='$GIT_COMMIT' manifest='archive/$RELATIVE_PATH/$MANIFEST_FILE' manifest-sha256='$BUILD_XML_SHA' />" |
||||
tail --lines=+5 "$PREV_HOME" |
||||
}> "$NEW_HOME" |
||||
|
||||
gsutil -m cp -r "$UPLOAD_ROOT" "$GCS_ROOT/archive" |
||||
gsutil -h "Content-Type:application/xml" cp "$NEW_HOME" "$GCS_ROOT/$MANIFEST_FILE" |
||||
|
Loading…
Reference in new issue