2 # Copyright (C) The Arvados Authors. All rights reserved.
4 # SPDX-License-Identifier: AGPL-3.0
6 # Build an arvados-server-easy package, then install and run it on a
11 # docker-build-install.sh --force-buildimage --force-installimage # always build fresh docker images
13 # docker-build-install.sh # reuse cached docker images if possible
18 while [[ $# -gt 0 ]]; do
23 opts[force-buildimage]=1
26 opts[force-installimage]=1
29 echo >&2 "invalid argument '$arg'"
35 if [[ -n "${buildctr}" ]]; then
36 docker rm "${buildctr}" || true
38 if [[ -n "${installctr}" ]]; then
39 docker rm "${installctr}" || true
44 version=$(git describe --tag --dirty)
49 buildimage=arvados-buildpackage-${osbase}
50 if [[ "${opts[force-buildimage]}" || -z "$(docker images --format {{.Repository}} "${buildimage}")" ]]; then
52 echo >&2 building arvados-server...
56 echo >&2 building ${buildimage}...
57 buildctr=${buildimage/:/-}
58 docker rm "${buildctr}" || true
60 --name "${buildctr}" \
62 -v "${GOPATH:-${HOME}/go}"/bin/arvados-server:/arvados-server:ro \
63 -v "$(pwd)":/arvados:ro \
65 /arvados-server install \
68 -package-version "${version}"
69 docker commit "${buildctr}" "${buildimage}"
70 docker rm "${buildctr}"
74 pkgfile=/tmp/pkg/arvados-server-easy_${version}_amd64.deb
78 echo >&2 building arvados-dev...
82 echo >&2 building ${pkgfile}...
85 -v "${GOPATH:-${HOME}/go}"/bin/arvados-dev:/arvados-dev:ro \
86 -v "$(pwd)":/arvados:ro \
88 /arvados-dev buildpackage \
90 -package-version "${version}" \
91 -output-directory /pkg
95 echo >&2 dpkg-scanpackages...
97 dpkg-scanpackages . | gzip > Packages.gz
99 sourcesfile=/tmp/sources.conf.d-arvados
100 echo >$sourcesfile "deb [trusted=yes] file:///pkg ./"
102 installimage="arvados-installpackage-${osbase}"
103 if [[ "${opts[force-installimage]}" || -z "$(docker images --format {{.Repository}} "${installimage}")" ]]; then
104 echo >&2 building ${installimage}...
105 installctr=${installimage/:/-}
106 docker rm "${installctr}" || true
108 --name "${installctr}" \
109 -v /tmp/pkg:/pkg:ro \
110 -v ${sourcesfile}:/etc/apt/sources.list.d/arvados-local.list:ro \
112 bash -c 'apt update && DEBIAN_FRONTEND=noninteractive apt install -y arvados-server-easy postgresql'
113 docker commit "${installctr}" "${installimage}"
114 docker rm "${installctr}"
118 echo >&2 installing ${pkgfile} in ${installimage}, then starting arvados...
119 docker run -it --rm \
120 -v /tmp/pkg:/pkg:ro \
121 -v ${sourcesfile}:/etc/apt/sources.list.d/arvados-local.list:ro \
123 bash -c 'apt update && DEBIAN_FRONTEND=noninteractive apt install --reinstall -y arvados-server-easy postgresql && /etc/init.d/postgresql start && /var/lib/arvados/bin/arvados-server init -cluster-id x1234 && /var/lib/arvados/bin/arvados-server boot'