16306: Packaging dev cycle, type=production support in lib/boot.
[arvados.git] / cmd / arvados-dev / docker-boot.sh
1 #!/bin/bash
2 # Copyright (C) The Arvados Authors. All rights reserved.
3 #
4 # SPDX-License-Identifier: AGPL-3.0
5
6 # Bring up a docker container with some locally-built commands (e.g.,
7 # cmd/arvados-server) replacing the ones that came with
8 # arvados-server-easy when the arvados-installpackage-* image was
9 # built.
10 #
11 # Assumes docker-build-install.sh has already succeeded.
12 #
13 # Example:
14 #
15 #    docker-boot.sh cmd/arvados-server services/keep-balance
16
17 set -e -o pipefail
18
19 cleanup() {
20     if [[ -n "${tmpdir}" ]]; then
21         rm -rf "${tmpdir}"
22     fi
23 }
24 trap cleanup ERR EXIT
25
26 tmpdir=$(mktemp -d)
27 version=$(git describe --tag --dirty)
28
29 declare -a volargs=()
30 for srcdir in "$@"; do
31     echo >&2 "building $srcdir..."
32     (cd $srcdir && GOBIN=$tmpdir go install -ldflags "-X git.arvados.org/arvados.git/lib/cmd.version=${version} -X main.version=${version}")
33     cmd="$(basename "$srcdir")"
34     volargs+=(-v "$tmpdir/$cmd:/var/lib/arvados/bin/$cmd:ro")
35 done
36
37 osbase=debian:10
38 installimage=arvados-installpackage-${osbase}
39 docker run -it --rm \
40        "${volargs[@]}" \
41        "${installimage}" \
42        bash -c '/etc/init.d/postgresql start && /var/lib/arvados/bin/arvados-server init -cluster-id x1234 && /var/lib/arvados/bin/arvados-server boot'