aboutsummaryrefslogtreecommitdiff
path: root/contrib/upldrel/entrypoint.sh
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/upldrel/entrypoint.sh')
-rwxr-xr-xcontrib/upldrel/entrypoint.sh62
1 files changed, 62 insertions, 0 deletions
diff --git a/contrib/upldrel/entrypoint.sh b/contrib/upldrel/entrypoint.sh
new file mode 100755
index 000000000..985b828a0
--- /dev/null
+++ b/contrib/upldrel/entrypoint.sh
@@ -0,0 +1,62 @@
+#!/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"