OTA: name release assets after their tag, download from one host
Build and Release APK / Build APK and publish release (push) Canceled after 0s
Build and Release APK / Build APK and publish release (push) Canceled after 0s
Two things the first live release check on git.wallacenet.ca showed: - The publish script uploaded the APK under whatever the build called it (app-debug.apk), which is the name the updater only finds by its fallback rule. The script now names the asset after its tag, so the primary rule — "the asset whose name contains the tag" — is the one that fires. - The instance answers for two host names and reports asset URLs on the one it treats as canonical, so the app would have fetched its release list from git.wallacenet.ca and its APK from elsewhere. onReportedHost() now keeps the path the server chose and puts the download on the host the app already trusts, tested in UpdatePolicyTest. Co-Authored-By: Paperclip <[email protected]>
This commit is contained in:
co-authored by
Paperclip
parent
fad4778ad8
commit
a827a38ae6
@@ -35,11 +35,16 @@ esac
|
||||
[ -n "${GITEA_TOKEN:-}" ] || { echo "publish-release: GITEA_TOKEN is not set" >&2; exit 2; }
|
||||
|
||||
api="${GITEA_API:-${GITHUB_API_URL:-https://git.wallacenet.ca/api/v1}}/repos/${GITEA_REPO:-${GITHUB_REPOSITORY:-devadmin/PilgrimsOfKatan}}"
|
||||
apk_name="$(basename "$apk")"
|
||||
|
||||
tmp="$(mktemp -d)"
|
||||
trap 'rm -rf "$tmp"' EXIT INT TERM
|
||||
|
||||
# Named for its tag, not for whatever the build happened to call it: the
|
||||
# updater picks the versioned APK out of a release's assets by finding the one
|
||||
# whose name contains the tag, so an asset called app-debug.apk would only be
|
||||
# found by the fallback rule.
|
||||
apk_name="PilgrimsOfKatan-${tag}.apk"
|
||||
|
||||
# The tag and the file name are both derived from gradle.properties and a run
|
||||
# number, so neither can carry a quote or a backslash into this JSON.
|
||||
if [ "$kind" = "prerelease" ]; then
|
||||
@@ -83,7 +88,7 @@ id="$(grep -o '"id":[0-9]*' "$tmp/create.json" | head -n1 | tr -dc '0-9' || true
|
||||
|
||||
code="$(curl -sS -o "$tmp/asset.json" -w '%{http_code}' -X POST \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
-F "attachment=@${apk}" \
|
||||
-F "attachment=@${apk};filename=${apk_name}" \
|
||||
"$api/releases/${id}/assets")"
|
||||
|
||||
if [ "$code" != "201" ] && [ "$code" != "200" ]; then
|
||||
|
||||
Reference in New Issue
Block a user