mirror of
https://gitlab.futo.org/videostreaming/grayjay.git
synced 2026-05-16 04:52:39 +02:00
Changed over deploy location to Cloudflare R2.
This commit is contained in:
+52
-34
@@ -1,50 +1,68 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
DOCUMENT_ROOT=/var/www/html
|
R2_ENDPOINT="https://$CF_R2_ACCOUNT_ID.r2.cloudflarestorage.com"
|
||||||
MAINT_FILE="$DOCUMENT_ROOT/maintenance.file"
|
|
||||||
|
|
||||||
cleanup() {
|
r2_cp() {
|
||||||
rm -f "$MAINT_FILE"
|
src="$1"
|
||||||
|
key="$2"
|
||||||
|
cache_control="$3"
|
||||||
|
content_type="$4"
|
||||||
|
|
||||||
|
AWS_ACCESS_KEY_ID="$CF_R2_ACCESS_KEY_ID" \
|
||||||
|
AWS_SECRET_ACCESS_KEY="$CF_R2_SECRET_ACCESS_KEY" \
|
||||||
|
AWS_DEFAULT_REGION=auto \
|
||||||
|
aws s3 cp "$src" "s3://$CF_R2_BUCKET/$key" \
|
||||||
|
--endpoint-url "$R2_ENDPOINT" \
|
||||||
|
--only-show-errors \
|
||||||
|
--cache-control "$cache_control" \
|
||||||
|
--content-type "$content_type"
|
||||||
|
}
|
||||||
|
|
||||||
|
upload_apk_latest_and_versioned() {
|
||||||
|
src="$1"
|
||||||
|
filename="$2"
|
||||||
|
|
||||||
|
r2_cp "$src" "$VERSION/$filename" \
|
||||||
|
"public, max-age=31536000, immutable" \
|
||||||
|
"application/vnd.android.package-archive"
|
||||||
|
|
||||||
|
r2_cp "$src" "$filename" \
|
||||||
|
"no-store" \
|
||||||
|
"application/vnd.android.package-archive"
|
||||||
}
|
}
|
||||||
trap cleanup EXIT INT TERM
|
|
||||||
|
|
||||||
# Sign sources
|
|
||||||
echo "Signing all sources..."
|
echo "Signing all sources..."
|
||||||
/usr/bin/bash ./sign-all-sources.sh
|
/usr/bin/bash ./sign-all-sources.sh
|
||||||
|
|
||||||
# Build content
|
|
||||||
echo "Building content..."
|
echo "Building content..."
|
||||||
./gradlew --stacktrace assembleStableRelease
|
./gradlew --stacktrace assembleStableRelease
|
||||||
|
|
||||||
# Take site offline
|
|
||||||
echo "Taking site offline..."
|
|
||||||
touch "$MAINT_FILE"
|
|
||||||
|
|
||||||
# Swap over the content
|
|
||||||
echo "Deploying content..."
|
|
||||||
cp ./app/build/outputs/apk/stable/release/app-stable-x86_64-release.apk "$DOCUMENT_ROOT/app-x86_64-release.apk"
|
|
||||||
cp ./app/build/outputs/apk/stable/release/app-stable-arm64-v8a-release.apk "$DOCUMENT_ROOT/app-arm64-v8a-release.apk"
|
|
||||||
cp ./app/build/outputs/apk/stable/release/app-stable-armeabi-v7a-release.apk "$DOCUMENT_ROOT/app-armeabi-v7a-release.apk"
|
|
||||||
cp ./app/build/outputs/apk/stable/release/app-stable-universal-release.apk "$DOCUMENT_ROOT/app-universal-release.apk"
|
|
||||||
cp ./app/build/outputs/apk/stable/release/app-stable-x86-release.apk "$DOCUMENT_ROOT/app-x86-release.apk"
|
|
||||||
cp ./app/build/outputs/apk/stable/release/app-stable-arm64-v8a-release.apk "$DOCUMENT_ROOT/app-release.apk"
|
|
||||||
|
|
||||||
VERSION="$(git describe --tags)"
|
VERSION="$(git describe --tags)"
|
||||||
echo "$VERSION" > "$DOCUMENT_ROOT/version.txt"
|
|
||||||
mkdir -p "$DOCUMENT_ROOT/changelogs"
|
|
||||||
git tag -l --format='%(contents)' "$VERSION" > "$DOCUMENT_ROOT/changelogs/$VERSION"
|
|
||||||
|
|
||||||
# Notify Cloudflare to wipe the CDN cache
|
echo "Deploying artifacts to Cloudflare R2..."
|
||||||
echo "Purging Cloudflare cache for zone $CLOUDFLARE_ZONE_ID..."
|
upload_apk_latest_and_versioned "./app/build/outputs/apk/stable/release/app-stable-x86_64-release.apk" "app-x86_64-release.apk"
|
||||||
curl -X POST "https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_ZONE_ID/purge_cache" \
|
upload_apk_latest_and_versioned "./app/build/outputs/apk/stable/release/app-stable-arm64-v8a-release.apk" "app-arm64-v8a-release.apk"
|
||||||
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
|
upload_apk_latest_and_versioned "./app/build/outputs/apk/stable/release/app-stable-armeabi-v7a-release.apk" "app-armeabi-v7a-release.apk"
|
||||||
-H "Content-Type: application/json" \
|
upload_apk_latest_and_versioned "./app/build/outputs/apk/stable/release/app-stable-universal-release.apk" "app-universal-release.apk"
|
||||||
--data '{"files":["https://releases.grayjay.app/app-x86_64-release.apk", "https://releases.grayjay.app/app-arm64-v8a-release.apk", "https://releases.grayjay.app/app-armeabi-v7a-release.apk", "https://releases.grayjay.app/app-universal-release.apk", "https://releases.grayjay.app/app-x86-release.apk", "https://releases.grayjay.app/app-release.apk", "https://releases.grayjay.app/version.txt"]}'
|
upload_apk_latest_and_versioned "./app/build/outputs/apk/stable/release/app-stable-x86-release.apk" "app-x86-release.apk"
|
||||||
|
upload_apk_latest_and_versioned "./app/build/outputs/apk/stable/release/app-stable-arm64-v8a-release.apk" "app-release.apk"
|
||||||
|
|
||||||
sleep 30
|
tmp_version="$(mktemp)"
|
||||||
|
printf '%s\n' "$VERSION" > "$tmp_version"
|
||||||
|
r2_cp "$tmp_version" "$VERSION/version.txt" \
|
||||||
|
"public, max-age=31536000, immutable" \
|
||||||
|
"text/plain; charset=utf-8"
|
||||||
|
r2_cp "$tmp_version" "version.txt" \
|
||||||
|
"no-store" \
|
||||||
|
"text/plain; charset=utf-8"
|
||||||
|
rm -f "$tmp_version"
|
||||||
|
|
||||||
# Take site back online
|
tmp_changelog="$(mktemp)"
|
||||||
echo "Bringing site back online..."
|
git tag -l --format='%(contents)' "$VERSION" > "$tmp_changelog"
|
||||||
rm -f "$MAINT_FILE"
|
r2_cp "$tmp_changelog" "changelogs/$VERSION" \
|
||||||
trap - EXIT INT TERM
|
"public, max-age=31536000, immutable" \
|
||||||
|
"text/plain; charset=utf-8"
|
||||||
|
rm -f "$tmp_changelog"
|
||||||
|
|
||||||
|
echo "Done."
|
||||||
+45
-32
@@ -1,48 +1,61 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
DOCUMENT_ROOT=/var/www/html
|
R2_ENDPOINT="https://$CF_R2_ACCOUNT_ID.r2.cloudflarestorage.com"
|
||||||
MAINT_FILE="$DOCUMENT_ROOT/maintenance.file"
|
|
||||||
|
|
||||||
cleanup() {
|
r2_cp() {
|
||||||
rm -f "$MAINT_FILE"
|
src="$1"
|
||||||
|
key="$2"
|
||||||
|
cache_control="$3"
|
||||||
|
content_type="$4"
|
||||||
|
|
||||||
|
AWS_ACCESS_KEY_ID="$CF_R2_ACCESS_KEY_ID" \
|
||||||
|
AWS_SECRET_ACCESS_KEY="$CF_R2_SECRET_ACCESS_KEY" \
|
||||||
|
AWS_DEFAULT_REGION=auto \
|
||||||
|
aws s3 cp "$src" "s3://$CF_R2_BUCKET/$key" \
|
||||||
|
--endpoint-url "$R2_ENDPOINT" \
|
||||||
|
--only-show-errors \
|
||||||
|
--cache-control "$cache_control" \
|
||||||
|
--content-type "$content_type"
|
||||||
|
}
|
||||||
|
|
||||||
|
upload_apk_latest_and_versioned() {
|
||||||
|
src="$1"
|
||||||
|
filename="$2"
|
||||||
|
|
||||||
|
r2_cp "$src" "$VERSION/$filename" \
|
||||||
|
"public, max-age=31536000, immutable" \
|
||||||
|
"application/vnd.android.package-archive"
|
||||||
|
|
||||||
|
r2_cp "$src" "$filename" \
|
||||||
|
"no-store" \
|
||||||
|
"application/vnd.android.package-archive"
|
||||||
}
|
}
|
||||||
trap cleanup EXIT INT TERM
|
|
||||||
|
|
||||||
# Sign sources
|
|
||||||
echo "Signing all sources..."
|
echo "Signing all sources..."
|
||||||
/usr/bin/bash ./sign-all-sources.sh
|
/usr/bin/bash ./sign-all-sources.sh
|
||||||
|
|
||||||
# Build content
|
|
||||||
echo "Building content..."
|
echo "Building content..."
|
||||||
./gradlew --stacktrace assembleUnstableRelease
|
./gradlew --stacktrace assembleUnstableRelease
|
||||||
|
|
||||||
# Take site offline
|
|
||||||
echo "Taking site offline..."
|
|
||||||
touch "$MAINT_FILE"
|
|
||||||
|
|
||||||
# Swap over the content
|
|
||||||
echo "Deploying content..."
|
|
||||||
cp ./app/build/outputs/apk/unstable/release/app-unstable-x86_64-release.apk "$DOCUMENT_ROOT/app-x86_64-release-unstable.apk"
|
|
||||||
cp ./app/build/outputs/apk/unstable/release/app-unstable-arm64-v8a-release.apk "$DOCUMENT_ROOT/app-arm64-v8a-release-unstable.apk"
|
|
||||||
cp ./app/build/outputs/apk/unstable/release/app-unstable-armeabi-v7a-release.apk "$DOCUMENT_ROOT/app-armeabi-v7a-release-unstable.apk"
|
|
||||||
cp ./app/build/outputs/apk/unstable/release/app-unstable-universal-release.apk "$DOCUMENT_ROOT/app-universal-release-unstable.apk"
|
|
||||||
cp ./app/build/outputs/apk/unstable/release/app-unstable-x86-release.apk "$DOCUMENT_ROOT/app-x86-release-unstable.apk"
|
|
||||||
cp ./app/build/outputs/apk/unstable/release/app-unstable-arm64-v8a-release.apk "$DOCUMENT_ROOT/app-release-unstable.apk"
|
|
||||||
|
|
||||||
VERSION="$(git describe --tags)"
|
VERSION="$(git describe --tags)"
|
||||||
echo "$VERSION" > "$DOCUMENT_ROOT/version-unstable.txt"
|
|
||||||
|
|
||||||
# Notify Cloudflare to wipe the CDN cache
|
echo "Deploying unstable artifacts to Cloudflare R2..."
|
||||||
echo "Purging Cloudflare cache for zone $CLOUDFLARE_ZONE_ID..."
|
upload_apk_latest_and_versioned "./app/build/outputs/apk/unstable/release/app-unstable-x86_64-release.apk" "app-x86_64-release-unstable.apk"
|
||||||
curl -X POST "https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_ZONE_ID/purge_cache" \
|
upload_apk_latest_and_versioned "./app/build/outputs/apk/unstable/release/app-unstable-arm64-v8a-release.apk" "app-arm64-v8a-release-unstable.apk"
|
||||||
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
|
upload_apk_latest_and_versioned "./app/build/outputs/apk/unstable/release/app-unstable-armeabi-v7a-release.apk" "app-armeabi-v7a-release-unstable.apk"
|
||||||
-H "Content-Type: application/json" \
|
upload_apk_latest_and_versioned "./app/build/outputs/apk/unstable/release/app-unstable-universal-release.apk" "app-universal-release-unstable.apk"
|
||||||
--data '{"files":["https://releases.grayjay.app/app-x86_64-release-unstable.apk", "https://releases.grayjay.app/app-arm64-v8a-release-unstable.apk", "https://releases.grayjay.app/app-armeabi-v7a-release-unstable.apk", "https://releases.grayjay.app/app-universal-release-unstable.apk", "https://releases.grayjay.app/app-x86-release-unstable.apk", "https://releases.grayjay.app/app-release-unstable.apk", "https://releases.grayjay.app/version-unstable.txt"]}'
|
upload_apk_latest_and_versioned "./app/build/outputs/apk/unstable/release/app-unstable-x86-release.apk" "app-x86-release-unstable.apk"
|
||||||
|
upload_apk_latest_and_versioned "./app/build/outputs/apk/unstable/release/app-unstable-arm64-v8a-release.apk" "app-release-unstable.apk"
|
||||||
|
|
||||||
sleep 30
|
tmp_version="$(mktemp)"
|
||||||
|
printf '%s\n' "$VERSION" > "$tmp_version"
|
||||||
|
r2_cp "$tmp_version" "$VERSION/version-unstable.txt" \
|
||||||
|
"public, max-age=31536000, immutable" \
|
||||||
|
"text/plain; charset=utf-8"
|
||||||
|
r2_cp "$tmp_version" "version-unstable.txt" \
|
||||||
|
"no-store" \
|
||||||
|
"text/plain; charset=utf-8"
|
||||||
|
rm -f "$tmp_version"
|
||||||
|
|
||||||
# Take site back online
|
echo "Done."
|
||||||
echo "Bringing site back online..."
|
|
||||||
rm -f "$MAINT_FILE"
|
|
||||||
trap - EXIT INT TERM
|
|
||||||
Reference in New Issue
Block a user