2 # Copyright (C) The Arvados Authors. All rights reserved.
4 # SPDX-License-Identifier: AGPL-3.0
9 . /usr/local/lib/arvbox/common.sh
11 if test "$1" != "--only-deps" ; then
12 while [ ! -f $ARVADOS_CONTAINER_PATH/api.ready ]; do
17 mkdir -p $ARVADOS_CONTAINER_PATH/git
19 export ARVADOS_API_HOST=$localip:${services[controller-ssl]}
20 export ARVADOS_API_HOST_INSECURE=1
21 export ARVADOS_API_TOKEN=$(cat $ARVADOS_CONTAINER_PATH/superuser_token)
26 export HOME=$ARVADOS_CONTAINER_PATH/git
30 mkdir -p ~arvbox/.ssh ~git/.ssh
31 chmod 0700 ~arvbox/.ssh ~git/.ssh
33 if ! test -s ~arvbox/.ssh/id_rsa ; then
34 ssh-keygen -t rsa -P '' -f .ssh/id_rsa
35 cp ~arvbox/.ssh/id_rsa ~arvbox/.ssh/id_rsa.pub ~git/.ssh
38 if test -s ~arvbox/.ssh/known_hosts ; then
39 ssh-keygen -f ".ssh/known_hosts" -R localhost
42 if ! test -f $ARVADOS_CONTAINER_PATH/gitolite-setup ; then
45 # Do a no-op login to populate known_hosts
46 # with the hostkey, so it won't try to ask
48 cp .ssh/id_rsa.pub .ssh/authorized_keys
49 ssh -o stricthostkeychecking=no git@localhost true
50 rm .ssh/authorized_keys
52 cp /usr/local/lib/arvbox/gitolite.rc .gitolite.rc
54 gitolite setup -pk .ssh/id_rsa.pub
56 if ! test -d gitolite-admin ; then
57 git clone git@localhost:gitolite-admin
61 git config user.email arvados
62 git config user.name arvados
63 git config push.default simple
66 touch $ARVADOS_CONTAINER_PATH/gitolite-setup
68 # Do a no-op login to populate known_hosts
69 # with the hostkey, so it won't try to ask
70 # about it later. Don't run anything,
71 # get the default gitolite behavior.
72 ssh -o stricthostkeychecking=no git@localhost
75 prefix=$(arv --format=uuid user current | cut -d- -f1)
77 if ! test -s $ARVADOS_CONTAINER_PATH/arvados-git-uuid ; then
78 repo_uuid=$(arv --format=uuid repository create --repository "{\"owner_uuid\":\"$prefix-tpzed-000000000000000\", \"name\":\"arvados\"}")
79 echo $repo_uuid > $ARVADOS_CONTAINER_PATH/arvados-git-uuid
82 repo_uuid=$(cat $ARVADOS_CONTAINER_PATH/arvados-git-uuid)
84 if ! test -s $ARVADOS_CONTAINER_PATH/arvados-git-link-uuid ; then
85 all_users_group_uuid="$prefix-j7d0g-fffffffffffffff"
88 read -rd $'\000' newlink <<EOF
90 "tail_uuid":"$all_users_group_uuid",
91 "head_uuid":"$repo_uuid",
92 "link_class":"permission",
97 link_uuid=$(arv --format=uuid link create --link "$newlink")
98 echo $link_uuid > $ARVADOS_CONTAINER_PATH/arvados-git-link-uuid
101 if ! test -d $ARVADOS_CONTAINER_PATH/git/repositories/$repo_uuid.git ; then
102 git clone --bare /usr/src/arvados $ARVADOS_CONTAINER_PATH/git/repositories/$repo_uuid.git
104 git --git-dir=$ARVADOS_CONTAINER_PATH/git/repositories/$repo_uuid.git fetch -f /usr/src/arvados main:main
107 cd /usr/src/arvados/services/api
109 if test -s $ARVADOS_CONTAINER_PATH/api_rails_env ; then
110 RAILS_ENV=$(cat $ARVADOS_CONTAINER_PATH/api_rails_env)
112 RAILS_ENV=development
115 git_user_key=$(cat ~git/.ssh/id_rsa.pub)
117 cat > config/arvados-clients.yml <<EOF
119 gitolite_url: $ARVADOS_CONTAINER_PATH/git/repositories/gitolite-admin.git
120 gitolite_tmp: $ARVADOS_CONTAINER_PATH/git
121 arvados_api_host: $localip:${services[controller-ssl]}
122 arvados_api_token: "$ARVADOS_API_TOKEN"
123 arvados_api_host_insecure: false
124 gitolite_arvados_git_user_key: "$git_user_key"
128 bundle exec script/arvados-git-sync.rb $RAILS_ENV