Files
podman/contrib/upldrel/entrypoint.sh
Chris Evich 370b1a887c Cirrus: Reimplement release archive + upload
The initial implementation was far more complicated than necessary.
Strip out the complexities in favor of a simpler and more direct
approach.

Signed-off-by: Chris Evich <cevich@redhat.com>
2019-08-28 11:54:06 -04:00

63 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
set -e
source /usr/local/bin/lib_entrypoint.sh
req_env_var GCPJSON_FILEPATH GCPNAME GCPPROJECT REL_ARC_FILEPATH PR_OR_BRANCH BUCKET
[[ -r "$REL_ARC_FILEPATH" ]] || \
die 2 ERROR Cannot read release archive file: "$REL_ARC_FILEPATH"
[[ -r "$GCPJSON_FILEPATH" ]] || \
die 3 ERROR Cannot read GCP credentials file: "$GCPJSON_FILEPATH"
cd $TMPDIR
echo "Attempting to extract release.txt from tar or zip $REL_ARC_FILEPATH"
unset SFX
if tar xzf "$REL_ARC_FILEPATH" "./release.txt"
then
echo "It's a tarball"
SFX="tar.gz"
elif unzip "$REL_ARC_FILEPATH" release.txt
then
echo "It's a zip"
SFX="zip"
else
die 5 ERROR Could not extract release.txt from $REL_ARC_FILEPATH
fi
echo "Parsing release.txt contents"
RELEASETXT=$(<release.txt)
cd -
[[ -n "$RELEASETXT" ]] || \
die 3 ERROR Could not obtain metadata from release.txt in $REL_ARC_FILEPATH
RELEASE_INFO=$(echo "$RELEASETXT" | grep -m 1 'X-RELEASE-INFO:' | sed -r -e 's/X-RELEASE-INFO:\s*(.+)/\1/')
if [[ "$?" -ne "0" ]] || [[ -z "$RELEASE_INFO" ]]
then
die 4 ERROR Metadata is empty or invalid: '$RELEASETXT'
fi
# e.g. libpod v1.3.1-166-g60df124e fedora 29 amd64
# or libpod v1.3.1-166-g60df124e amd64
FIELDS="RELEASE_BASENAME RELEASE_VERSION RELEASE_DIST RELEASE_DIST_VER RELEASE_ARCH"
read $FIELDS <<< $RELEASE_INFO
for f in $FIELDS
do
[[ -n "${!f}" ]] || \
die 5 ERROR Expecting $f to be non-empty in metadata: '$RELEASE_INFO'
done
gcloud_init "$GCPJSON_FILEPATH"
# Drop version number to enable "latest" representation
# (version available w/in zip-file comment)
RELEASE_ARCHIVE_NAME="${RELEASE_BASENAME}-${PR_OR_BRANCH}-${RELEASE_DIST}-${RELEASE_DIST_VER}-${RELEASE_ARCH}.${SFX}"
echo "Uploading archive as $RELEASE_ARCHIVE_NAME"
gsutil cp "$REL_ARC_FILEPATH" "gs://$BUCKET/$RELEASE_ARCHIVE_NAME"
echo "Release now available at:"
echo " https://storage.cloud.google.com/$BUCKET/$RELEASE_ARCHIVE_NAME"