mirror of
https://github.com/oxen-io/session-android.git
synced 2024-12-23 16:37:30 +00:00
59 lines
2.2 KiB
Bash
59 lines
2.2 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
#
|
||
|
# Script used with Drone CI to check for the existence of a build artifact.
|
||
|
|
||
|
if [[ -z ${DRONE_REPO} || -z ${DRONE_PULL_REQUEST} ]]; then
|
||
|
echo -e "\n\n\n\n\e[31;1mRequired env variables not specified, likely a tag build so just failing\e[0m\n\n\n"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# This file info MUST match the structure of `base` in the `drone-static-upload.sh` script in
|
||
|
# order to function correctly
|
||
|
prefix="session-android-"
|
||
|
suffix="-${DRONE_COMMIT:0:9}-universal.tar.xz"
|
||
|
|
||
|
# Extracting head.label using string manipulation
|
||
|
echo "Extracting repo information for 'https://api.github.com/repos/${DRONE_REPO}/pulls/${DRONE_PULL_REQUEST}'"
|
||
|
pr_info=$(curl -s https://api.github.com/repos/${DRONE_REPO}/pulls/${DRONE_PULL_REQUEST})
|
||
|
pr_info_clean=$(echo "$pr_info" | tr -d '[:space:]')
|
||
|
head_info=$(echo "$pr_info_clean" | sed -n 's/.*"head"\(.*\)"base".*/\1/p')
|
||
|
fork_repo=$(echo "$head_info" | grep -o '"full_name":"[^"]*' | sed 's/"full_name":"//')
|
||
|
fork_branch=$(echo "$head_info" | grep -o '"ref":"[^"]*' | sed 's/"ref":"//')
|
||
|
upload_dir="https://oxen.rocks/${fork_repo}/${fork_branch}"
|
||
|
|
||
|
echo "Starting to poll ${upload_dir} every 10s to check for a build matching '${prefix}.*${suffix}'"
|
||
|
|
||
|
# Loop indefinitely the CI can timeout the script if it takes too long
|
||
|
total_poll_duration=0
|
||
|
max_poll_duration=$((30 * 60)) # Poll for a maximum of 30 mins
|
||
|
|
||
|
while true; do
|
||
|
# Need to add the trailing '/' or else we get a '301' response
|
||
|
build_artifacts_html=$(curl -s "${upload_dir}/")
|
||
|
|
||
|
if [ $? != 0 ]; then
|
||
|
echo "Failed to retrieve build artifact list"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# Extract 'session-ios...' titles using grep and awk
|
||
|
current_build_artifacts=$(echo "$build_artifacts_html" | grep -o 'href="${prefix}[^"]*' | sed 's/href="//')
|
||
|
|
||
|
# Use grep to check for the combination
|
||
|
target_file=$(echo "$current_build_artifacts" | grep -o "${prefix}.*${suffix}" | tail -n 1)
|
||
|
|
||
|
if [ -n "$target_file" ]; then
|
||
|
echo -e "\n\n\n\n\e[32;1mExisting build artifact at ${upload_dir}/${target_file}\e[0m\n\n\n"
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
# Sleep for 10 seconds before checking again
|
||
|
sleep 10
|
||
|
total_poll_duration=$((total_poll_duration + 10))
|
||
|
|
||
|
if [ $total_poll_duration -gt $max_poll_duration ]; then
|
||
|
echo -e "\n\n\n\n\e[31;1mCould not find existing build artifact after polling for 30 minutes\e[0m\n\n\n"
|
||
|
exit 1
|
||
|
fi
|
||
|
done
|