summaryrefslogtreecommitdiff
path: root/contrib/upldrel/entrypoint.sh
blob: 985b828a014d5ea547b1b0e535115b7ab076e4b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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"