Wire Forge-native release infrastructure
Some checks failed
Cache: Publish Nix / Publish Nix Cache (push) Waiting to run
Build Rust / Cargo Test (push) Successful in 4m14s
Build Site / Next.js Build (push) Failing after 6s
Infra: OpenTofu / OpenTofu (grafana) (push) Successful in 5s
Lint Governance / BEP Metadata (push) Successful in 0s
Build: Android / Android Rust Core Stub (push) Failing after 23s
Some checks failed
Cache: Publish Nix / Publish Nix Cache (push) Waiting to run
Build Rust / Cargo Test (push) Successful in 4m14s
Build Site / Next.js Build (push) Failing after 6s
Infra: OpenTofu / OpenTofu (grafana) (push) Successful in 5s
Lint Governance / BEP Metadata (push) Successful in 0s
Build: Android / Android Rust Core Stub (push) Failing after 23s
This commit is contained in:
parent
97c569fb35
commit
002bd382e9
199 changed files with 14268 additions and 185 deletions
102
Scripts/ci/backup-garage-to-gcs.sh
Executable file
102
Scripts/ci/backup-garage-to-gcs.sh
Executable file
|
|
@ -0,0 +1,102 @@
|
|||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
: "${BURROW_GARAGE_ENDPOINT:?BURROW_GARAGE_ENDPOINT is required}"
|
||||
: "${AWS_ACCESS_KEY_ID:?AWS_ACCESS_KEY_ID is required for Garage backup}"
|
||||
: "${AWS_SECRET_ACCESS_KEY:?AWS_SECRET_ACCESS_KEY is required for Garage backup}"
|
||||
|
||||
repo_root="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
cd "${repo_root}"
|
||||
|
||||
if ! command -v aws >/dev/null 2>&1; then
|
||||
echo "aws CLI is required for Garage backup" >&2
|
||||
exit 127
|
||||
fi
|
||||
|
||||
if ! command -v gcloud >/dev/null 2>&1; then
|
||||
echo "gcloud is required for GCS backup" >&2
|
||||
exit 127
|
||||
fi
|
||||
|
||||
if ! gcloud auth list --filter=status:ACTIVE --format='value(account)' | grep -q .; then
|
||||
Scripts/ci/google-wif-auth.sh
|
||||
fi
|
||||
|
||||
export AWS_DEFAULT_REGION="${BURROW_GARAGE_REGION:-garage}"
|
||||
export AWS_EC2_METADATA_DISABLED=true
|
||||
|
||||
requested_releases=0
|
||||
requested_packages=0
|
||||
requested_nix_cache=0
|
||||
IFS=',' read -r -a requested_items <<< "${BURROW_GARAGE_BACKUP_SET:-all}"
|
||||
|
||||
for raw_item in "${requested_items[@]}"; do
|
||||
item="${raw_item//[[:space:]]/}"
|
||||
case "$item" in
|
||||
"" )
|
||||
;;
|
||||
all )
|
||||
requested_releases=1
|
||||
requested_packages=1
|
||||
requested_nix_cache=1
|
||||
;;
|
||||
release|releases )
|
||||
requested_releases=1
|
||||
;;
|
||||
package|packages )
|
||||
requested_packages=1
|
||||
;;
|
||||
attic|nix|nix-cache|nix_cache )
|
||||
requested_nix_cache=1
|
||||
;;
|
||||
* )
|
||||
echo "unknown Garage backup set item: $item" >&2
|
||||
exit 64
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ "$requested_releases" == "0" && "$requested_packages" == "0" && "$requested_nix_cache" == "0" ]]; then
|
||||
echo "no Garage backup buckets selected" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
work_root="${RUNNER_TEMP:-${TMPDIR:-/tmp}}/burrow-garage-backup"
|
||||
rsync_flags=(--recursive)
|
||||
if [[ "${BURROW_GARAGE_BACKUP_DELETE:-false}" == "true" ]]; then
|
||||
rsync_flags+=(--delete-unmatched-destination-objects)
|
||||
fi
|
||||
|
||||
sync_bucket() {
|
||||
local name="$1"
|
||||
local garage_bucket="$2"
|
||||
local gcs_bucket="$3"
|
||||
local source_dir="${work_root}/${name}"
|
||||
|
||||
rm -rf "$source_dir"
|
||||
mkdir -p "$source_dir"
|
||||
|
||||
aws --endpoint-url "$BURROW_GARAGE_ENDPOINT" s3 sync "s3://${garage_bucket}" "$source_dir" --no-progress
|
||||
gcloud storage rsync "${rsync_flags[@]}" "$source_dir" "gs://${gcs_bucket}"
|
||||
}
|
||||
|
||||
if [[ "$requested_releases" == "1" ]]; then
|
||||
sync_bucket \
|
||||
releases \
|
||||
"${BURROW_RELEASE_GARAGE_BUCKET:-burrow-releases}" \
|
||||
"${BURROW_RELEASE_GCS_BUCKET:-burrow-net-releases}"
|
||||
fi
|
||||
|
||||
if [[ "$requested_packages" == "1" ]]; then
|
||||
sync_bucket \
|
||||
packages \
|
||||
"${BURROW_PACKAGE_GARAGE_BUCKET:-burrow-packages}" \
|
||||
"${BURROW_PACKAGE_GCS_BUCKET:-burrow-net-packages}"
|
||||
fi
|
||||
|
||||
if [[ "$requested_nix_cache" == "1" ]]; then
|
||||
sync_bucket \
|
||||
nix-cache \
|
||||
"${BURROW_NIX_CACHE_GARAGE_BUCKET:-attic}" \
|
||||
"${BURROW_NIX_CACHE_GCS_BUCKET:-burrow-net-nix-cache}"
|
||||
fi
|
||||
Loading…
Add table
Add a link
Reference in a new issue