Add script for uploading IITC build to Google Cloud Storage
This commit is contained in:
parent
7be0b0dc43
commit
a4c7b4cb7e
61
tools/gcs_upload.sh
Executable file
61
tools/gcs_upload.sh
Executable file
@ -0,0 +1,61 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Fail if trying to use an undeclared variable, or if any command fails.
|
||||||
|
set -u -e
|
||||||
|
|
||||||
|
# Parameters
|
||||||
|
# ----------
|
||||||
|
# First argument: The IITC build type to upload (i.e. the argument to
|
||||||
|
# build.py).
|
||||||
|
# Second argument: The target upload directory.
|
||||||
|
# Third argument: Optional. The GCS bucket name to upload to. Defaults to
|
||||||
|
# static.iitc.me.
|
||||||
|
|
||||||
|
readonly BUILDTYPE="${1:?First argument must be the build type to upload}"
|
||||||
|
readonly TARGET="${2:?Second argument must be the target directory}"
|
||||||
|
readonly BUCKET="${3:-static.iitc.me}"
|
||||||
|
|
||||||
|
# Absolute path to base directory for the repository. This trick reportedly
|
||||||
|
# doesn't work on OSX.
|
||||||
|
readonly REPO_BASE="$(dirname "$(dirname "$(readlink -f "$0")")")"
|
||||||
|
readonly BUILD_ROOT="${REPO_BASE}/build"
|
||||||
|
readonly APK_CONTENT_TYPE='application/vnd.android.package-archive'
|
||||||
|
readonly PLAIN_CONTENT_TYPE='text/plain'
|
||||||
|
|
||||||
|
# Change to repo base.
|
||||||
|
cd "${REPO_BASE}"
|
||||||
|
|
||||||
|
readonly SOURCE="${BUILD_ROOT}/${BUILDTYPE}"
|
||||||
|
|
||||||
|
# See if IITC has been built, or build it if necessary.
|
||||||
|
[[ -e "${SOURCE}" ]] || {
|
||||||
|
echo "WARNING: No IITC build for ${BUILDTYPE}, building." >&2
|
||||||
|
./build.py "${BUILDTYPE}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# See if IITC built successfully.
|
||||||
|
[[ -e "${SOURCE}/total-conversion-build.user.js" ]] || {
|
||||||
|
echo "ERROR: Built IITC still doesn't exist at ${SOURCE}/" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Make sure we have the right tools we need.
|
||||||
|
[[ -x "$(which gsutil 2>/dev/null)" ]] || {
|
||||||
|
echo "ERROR: No gsutil found! Please install the Google Cloud SDK." >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Uploading ${SOURCE}/ -> gs://${BUCKET}/build/${TARGET}/"
|
||||||
|
|
||||||
|
# From here on, echo commands before they execute.
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# Do the actual synchronization.
|
||||||
|
gsutil -m rsync -r -c "${SOURCE}/" "gs://${BUCKET}/build/${TARGET}/"
|
||||||
|
|
||||||
|
# Fix metadata.
|
||||||
|
gsutil -m setmeta -h "Content-Type:${PLAIN_CONTENT_TYPE}" "gs://${BUCKET}/build/${TARGET}/.build-timestamp"
|
||||||
|
for apkfile in "${SOURCE}/"*.apk; do
|
||||||
|
apkfile="${apkfile#${SOURCE}/}"
|
||||||
|
gsutil -m setmeta -h "Content-Type:${APK_CONTENT_TYPE}" "gs://${BUCKET}/build/${TARGET}/${apkfile}"
|
||||||
|
done
|
Loading…
x
Reference in New Issue
Block a user