X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/b27c53dedf632f614356305bc624befa5477b98e..dc08f17cc3c90714efafb11e38e27ca8ea1b5f5b:/tools/arvbox/bin/arvbox diff --git a/tools/arvbox/bin/arvbox b/tools/arvbox/bin/arvbox index e8e3fa17ce..b3b9a5fcb4 100755 --- a/tools/arvbox/bin/arvbox +++ b/tools/arvbox/bin/arvbox @@ -44,14 +44,21 @@ if test -z "$ARVADOS_ROOT" ; then ARVADOS_ROOT="$ARVBOX_DATA/arvados" fi -if test -z "$COMPOSER_ROOT" ; then - COMPOSER_ROOT="$ARVBOX_DATA/composer" -fi - if test -z "$WORKBENCH2_ROOT" ; then WORKBENCH2_ROOT="$ARVBOX_DATA/workbench2" fi +if test -z "$ARVADOS_BRANCH" ; then + ARVADOS_BRANCH=main +fi + +if test -z "$WORKBENCH2_BRANCH" ; then + WORKBENCH2_BRANCH=main +fi + +# Update this to the docker tag for the version on releases. +DEFAULT_TAG= + PG_DATA="$ARVBOX_DATA/postgres" VAR_DATA="$ARVBOX_DATA/var" PASSENGER="$ARVBOX_DATA/passenger" @@ -61,7 +68,6 @@ NPMCACHE="$ARVBOX_DATA/npm" GOSTUFF="$ARVBOX_DATA/gopath" RLIBS="$ARVBOX_DATA/Rlibs" ARVADOS_CONTAINER_PATH="/var/lib/arvados-arvbox" -GEM_HOME="/var/lib/arvados/lib/ruby/gems/2.5.0" getip() { docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $ARVBOX_CONTAINER @@ -128,12 +134,11 @@ wait_for_arvbox() { docker_run_dev() { docker run \ "--volume=$ARVADOS_ROOT:/usr/src/arvados:rw" \ - "--volume=$COMPOSER_ROOT:/usr/src/composer:rw" \ "--volume=$WORKBENCH2_ROOT:/usr/src/workbench2:rw" \ "--volume=$PG_DATA:/var/lib/postgresql:rw" \ "--volume=$VAR_DATA:$ARVADOS_CONTAINER_PATH:rw" \ "--volume=$PASSENGER:/var/lib/passenger:rw" \ - "--volume=$GEMS:$GEM_HOME:rw" \ + "--volume=$GEMS:/var/lib/arvados-arvbox/.gem:rw" \ "--volume=$PIPCACHE:/var/lib/pip:rw" \ "--volume=$NPMCACHE:/var/lib/npm:rw" \ "--volume=$GOSTUFF:/var/lib/gopath:rw" \ @@ -187,6 +192,10 @@ run() { fi fi + if test -z "$TAG" -a -n "$DEFAULT_TAG"; then + TAG=":$DEFAULT_TAG" + fi + if [[ "$CONFIG" =~ ^public ]] ; then if test -n "$ARVBOX_PUBLISH_IP" ; then localip=$ARVBOX_PUBLISH_IP @@ -205,6 +214,7 @@ run() { --publish=8900:8900 --publish=9000:9000 --publish=9002:9002 + --publish=9004:9004 --publish=25101:25101 --publish=8001:8001 --publish=8002:8002 @@ -222,7 +232,7 @@ run() { fi if ! (docker ps -a | grep -E "$ARVBOX_CONTAINER-data$" -q) ; then - docker create -v /var/lib/postgresql -v $ARVADOS_CONTAINER_PATH --name $ARVBOX_CONTAINER-data arvados/arvbox-demo /bin/true + docker create -v /var/lib/postgresql -v $ARVADOS_CONTAINER_PATH --name $ARVBOX_CONTAINER-data arvados/arvbox-demo$TAG /bin/true fi docker run \ @@ -240,14 +250,11 @@ run() { if ! test -d "$ARVADOS_ROOT" ; then git clone https://git.arvados.org/arvados.git "$ARVADOS_ROOT" - fi - if ! test -d "$COMPOSER_ROOT" ; then - git clone https://github.com/arvados/composer.git "$COMPOSER_ROOT" - git -C "$COMPOSER_ROOT" checkout arvados-fork - git -C "$COMPOSER_ROOT" pull + git -C "$ARVADOS_ROOT" checkout $ARVADOS_BRANCH fi if ! test -d "$WORKBENCH2_ROOT" ; then git clone https://git.arvados.org/arvados-workbench2.git "$WORKBENCH2_ROOT" + git -C "$ARVADOS_ROOT" checkout $WORKBENCH2_BRANCH fi if [[ "$CONFIG" = test ]] ; then @@ -278,7 +285,6 @@ run() { -e COLUMNS=$(tput cols) \ -e TERM=$TERM \ -e WORKSPACE=/usr/src/arvados \ - -e GEM_HOME=$GEM_HOME \ -e CONFIGSRC=$ARVADOS_CONTAINER_PATH/run_tests \ $ARVBOX_CONTAINER \ /usr/local/lib/arvbox/runsu.sh \ @@ -374,27 +380,45 @@ build() { FORCE=-f fi GITHEAD=$(cd $ARVBOX_DOCKER && git log --format=%H -n1 HEAD) + + set +e + if which greadlink >/dev/null 2>/dev/null ; then + LOCAL_ARVADOS_ROOT=$(greadlink -f $(dirname $0)/../../../) + else + LOCAL_ARVADOS_ROOT=$(readlink -f $(dirname $0)/../../../) + fi + set -e + + # Get the go version we should use for bootstrapping + GO_VERSION=`grep 'const goversion =' $LOCAL_ARVADOS_ROOT/lib/install/deps.go |awk -F'"' '{print $2}'` + if test "$1" = localdemo -o "$1" = publicdemo ; then - set +e - if which greadlink >/dev/null 2>/dev/null ; then - ARVADOS_ROOT=$(greadlink -f $(dirname $0)/../../../) - else - ARVADOS_ROOT=$(readlink -f $(dirname $0)/../../../) - fi - set -e - docker build --build-arg=BUILDTYPE=demo $NO_CACHE --build-arg=arvados_version=$GITHEAD --build-arg=workdir=/tools/arvbox/lib/arvbox/docker -t arvados/arvbox-base:$GITHEAD -f "$ARVBOX_DOCKER/Dockerfile.base" "$ARVADOS_ROOT" - docker tag $FORCE arvados/arvbox-base:$GITHEAD arvados/arvbox-base:latest - docker build $NO_CACHE -t arvados/arvbox-demo:$GITHEAD -f "$ARVBOX_DOCKER/Dockerfile.demo" "$ARVBOX_DOCKER" - docker tag $FORCE arvados/arvbox-demo:$GITHEAD arvados/arvbox-demo:latest + BUILDTYPE=demo else - if ! test -d "$ARVADOS_ROOT" ; then - git clone https://git.arvados.org/arvados.git "$ARVADOS_ROOT" - fi - docker build --build-arg=BUILDTYPE=dev $NO_CACHE --build-arg=arvados_version=$GITHEAD --build-arg=workdir=/tools/arvbox/lib/arvbox/docker -t arvados/arvbox-base:$GITHEAD -f "$ARVBOX_DOCKER/Dockerfile.base" "$ARVADOS_ROOT" - docker tag $FORCE arvados/arvbox-base:$GITHEAD arvados/arvbox-base:latest - docker build $NO_CACHE -t arvados/arvbox-dev:$GITHEAD -f "$ARVBOX_DOCKER/Dockerfile.dev" "$ARVBOX_DOCKER" - docker tag $FORCE arvados/arvbox-dev:$GITHEAD arvados/arvbox-dev:latest + BUILDTYPE=dev fi + + if test "$ARVADOS_BRANCH" = "main" ; then + ARVADOS_BRANCH=$GITHEAD + fi + + docker build --build-arg=BUILDTYPE=$BUILDTYPE $NO_CACHE \ + --build-arg=go_version=$GO_VERSION \ + --build-arg=arvados_version=$ARVADOS_BRANCH \ + --build-arg=workbench2_version=$WORKBENCH2_BRANCH \ + --build-arg=workdir=/tools/arvbox/lib/arvbox/docker \ + -t arvados/arvbox-base:$GITHEAD \ + -f "$ARVBOX_DOCKER/Dockerfile.base" \ + "$LOCAL_ARVADOS_ROOT" + docker tag $FORCE arvados/arvbox-base:$GITHEAD arvados/arvbox-base:latest + docker build $NO_CACHE \ + --build-arg=go_version=$GO_VERSION \ + --build-arg=arvados_version=$ARVADOS_BRANCH \ + --build-arg=workbench2_version=$WORKBENCH2_BRANCH \ + -t arvados/arvbox-$BUILDTYPE:$GITHEAD \ + -f "$ARVBOX_DOCKER/Dockerfile.$BUILDTYPE" \ + "$ARVBOX_DOCKER" + docker tag $FORCE arvados/arvbox-$BUILDTYPE:$GITHEAD arvados/arvbox-$BUILDTYPE:latest } check() { @@ -434,7 +458,6 @@ case "$subcmd" in -e LINES=$(tput lines) \ -e COLUMNS=$(tput cols) \ -e TERM=$TERM \ - -e GEM_HOME=$GEM_HOME \ $ARVBOX_CONTAINER /bin/bash ;; @@ -443,14 +466,13 @@ case "$subcmd" in -e LINES=$(tput lines) \ -e COLUMNS=$(tput cols) \ -e TERM=$TERM \ - -e GEM_HOME=$GEM_HOME \ -u arvbox \ -w /usr/src/arvados \ $ARVBOX_CONTAINER /bin/bash --login ;; pipe) - exec docker exec -i $ARVBOX_CONTAINER /usr/bin/env GEM_HOME=$GEM_HOME /bin/bash - + exec docker exec -i $ARVBOX_CONTAINER /usr/bin/env /bin/bash - ;; stop) @@ -496,6 +518,7 @@ case "$subcmd" in echo "Status: running" echo "Container IP: $(getip)" echo "Published host: $(gethost)" + echo "Workbench: https://$(gethost)" else echo "Status: not running" fi @@ -567,7 +590,7 @@ case "$subcmd" in else echo "Usage: $0 $subcmd " echo "Available services:" - exec docker execa $ARVBOX_CONTAINER ls /etc/service + exec docker exec $ARVBOX_CONTAINER ls /etc/service fi ;; @@ -581,7 +604,6 @@ case "$subcmd" in "$ARVBOX_BASE/$1/gopath" \ "$ARVBOX_BASE/$1/Rlibs" \ "$ARVBOX_BASE/$1/arvados" \ - "$ARVBOX_BASE/$1/composer" \ "$ARVBOX_BASE/$1/workbench2" \ "$ARVBOX_BASE/$2" echo "Created new arvbox $2" @@ -614,7 +636,7 @@ case "$subcmd" in ;; hotreset) - exec docker exec -i $ARVBOX_CONTAINER /usr/bin/env GEM_HOME=$GEM_HOME /bin/bash - < [password]" + fi ;; removeuser) - docker exec -ti $ARVBOX_CONTAINER /usr/local/lib/arvbox/edit_users.py $ARVADOS_CONTAINER_PATH/cluster_config.yml.override $(getclusterid) remove $@ - docker exec $ARVBOX_CONTAINER sv restart controller + if [[ -n "$1" ]] ; then + docker exec -ti $ARVBOX_CONTAINER /usr/local/lib/arvbox/edit_users.py $ARVADOS_CONTAINER_PATH/cluster_config.yml.override $(getclusterid) remove $@ + docker exec $ARVBOX_CONTAINER sv restart controller + else + echo "Usage: removeuser " + fi ;; listusers) @@ -683,7 +710,7 @@ EOF echo "sv " echo " change state of service inside arvbox" echo "clone clone dev arvbox" - echo "adduser " + echo "adduser [password]" echo " add a user login" echo "removeuser " echo " remove user login"