-
Notifications
You must be signed in to change notification settings - Fork 10
/
rbe.nix
66 lines (49 loc) · 1.78 KB
/
rbe.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
{ pkgs, wrappedBazel, tag }:
let bazelToolchains = import ../rbe/default.nix { inherit pkgs; }; in
pkgs.writeShellScriptBin "rbe" ''
# Make sure to only use this tool from the root directory of rules_ll.
# You need a local docker registry running to regenerate the rbe
# configuration:
# docker run -d -p 5000:5000 --restart=always --name registry registry:2
# Deliberately build the image manually and use "result" instead of
# the derivation to prevent nix from building the image unless
# explicitly asked to.
nix build .#ci-image
if [[ $# == 0 ]]; then
echo "Using local registry."
kubectl port-forward service/zot -n kube-system 5000:5000 > /dev/null 2>&1 &
forward_pid=$!
trap '{
kill $forward_pid
}' EXIT
sleep 2 # Not good, but will have to do for now.
REGISTRY="localhost:5000"
${pkgs.skopeo}/bin/skopeo \
--insecure-policy \
copy \
--dest-tls-verify=false \
"docker-archive://$(realpath result)" \
"docker://$REGISTRY/rules_ll:${tag}"
elif [[ $1 == "release" ]]; then
echo "Using release registry. Requires local authentication."
REGISTRY="docker.io/eomii"
${pkgs.skopeo}/bin/skopeo \
--insecure-policy \
copy \
"docker-archive://$(realpath result)" \
"docker://$REGISTRY/rules_ll:${tag}"
else
echo 1>&2 "$0: Error: Invalid arguments."
exit 2
fi
${bazelToolchains}/bin/rbe_configs_gen \
--toolchain_container=$REGISTRY/rules_ll:${tag} \
--exec_os=linux \
--target_os=linux \
--bazel_version=${wrappedBazel.version} \
--output_src_root=$(pwd) \
--output_config_path=rbe/default \
--bazel_path=${wrappedBazel.baze_ll}/bin/bazel \
--cpp_env_json=rbe/rbeconfig.json
pre-commit run --all-files
''