blob: 4d01c2a757bf2029988627d57bc81904ba431e94 [file] [log] [blame]
Philipp Wollermann94bd9e32018-04-30 15:32:28 +02001#!/bin/bash
2
Philipp Wollermannaa215e22020-02-05 16:52:54 +01003set -euo pipefail
Philipp Wollermann94bd9e32018-04-30 15:32:28 +02004
5BUILDKITE_API_TOKEN=$(gsutil cat "gs://bazel-encrypted-secrets/buildkite-api-token.enc" | \
Philipp Wollermanne34da242019-05-08 13:21:28 +02006 gcloud kms decrypt --project "bazel-public" --location "global" --keyring "buildkite" --key "buildkite-api-token" --plaintext-file "-" --ciphertext-file "-")
Philipp Wollermann94bd9e32018-04-30 15:32:28 +02007
8rm -rf bazelbuild
Philipp Wollermannea128282019-05-08 11:56:14 +02009gsutil cat "gs://bazel-git-mirror/bazelbuild-mirror.tar" | tar x
Philipp Wollermannaa215e22020-02-05 16:52:54 +010010# mkdir bazelbuild
Philipp Wollermann94bd9e32018-04-30 15:32:28 +020011cd bazelbuild
12
Philipp Wollermannaa215e22020-02-05 16:52:54 +010013git config pack.compression 9
14
Philipp Wollermannea128282019-05-08 11:56:14 +020015function mirror() {
16 repo="$1"
17 remote_name="$(echo -n $repo | tr -C '[[:alnum:]]' '-')"
18 if [[ -d $remote_name ]]; then
Philipp Wollermannef510012020-06-16 13:32:19 +020019 git -C "${remote_name}" fetch
Philipp Wollermannea128282019-05-08 11:56:14 +020020 else
Philipp Wollermannaa215e22020-02-05 16:52:54 +010021 git clone --bare "${repo}" "${remote_name}"
Philipp Wollermannea128282019-05-08 11:56:14 +020022 fi
Philipp Wollermannaa215e22020-02-05 16:52:54 +010023 git -C "${remote_name}" repack -a -d -F --threads=0
Philipp Wollermannea128282019-05-08 11:56:14 +020024}
Philipp Wollermann94bd9e32018-04-30 15:32:28 +020025
26for repo in $(curl -sS -H "Authorization: Bearer ${BUILDKITE_API_TOKEN}" "https://api.buildkite.com/v2/organizations/bazel/pipelines?per_page=100" \
27 | jq '.[] | .repository' | sort -u | sed -e 's/^"//' -e 's/"$//'); do
Philipp Wollermann83a95012019-05-16 11:41:55 +020028 mirror "$repo" &
Philipp Wollermann94bd9e32018-04-30 15:32:28 +020029done
30
Philipp Wollermannef510012020-06-16 13:32:19 +020031wait
32
33for repo in $(fgrep '"git_repository": "' ../../buildkite/bazelci.py | cut -d'"' -f4 | sort -u); do
Philipp Wollermann83a95012019-05-16 11:41:55 +020034 mirror "$repo" &
Philipp Wollermannea128282019-05-08 11:56:14 +020035done
Philipp Wollermann94bd9e32018-04-30 15:32:28 +020036
Philipp Wollermann83a95012019-05-16 11:41:55 +020037wait
38
Philipp Wollermanndd80d5a2019-07-11 16:33:16 +020039find . -name .DS_Store -delete
40
Philipp Wollermann94bd9e32018-04-30 15:32:28 +020041cd ..
Philipp Wollermann8b858092019-09-06 15:52:18 +020042
43# Verify that it works:
Philipp Wollermannaa215e22020-02-05 16:52:54 +010044rm -rf bazel-test
Philipp Wollermann8b858092019-09-06 15:52:18 +020045git clone --reference bazelbuild/https---github-com-bazelbuild-bazel-git https://github.com/bazelbuild/bazel.git bazel-test
46
Philipp Wollermannea128282019-05-08 11:56:14 +020047tar c bazelbuild | gsutil cp - "gs://bazel-git-mirror/bazelbuild-mirror.tar"
48zip -q0r - bazelbuild | gsutil cp - "gs://bazel-git-mirror/bazelbuild-mirror.zip"