2 # Copyright (c) 2019 AT&T Intellectual Property.
3 # Copyright (c) 2019 Nokia.
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
19 source /etc/os-release
21 if [ -z ${CONT_USER} ]; then CONT_USER=builder ; fi
22 if [ -z ${CONT_UID} ]; then CONT_UID=$(stat -c "%u" $(readlink -f .) ); fi
23 if [ -z ${CONT_GROUP} ]; then CONT_GROUP=builder; fi
24 if [ -z ${CONT_GID} ]; then CONT_GID=$(stat -c "%g" $(readlink -f .) ); fi
26 if [ $(id -u) -eq $CONT_UID ] || [ $(id -u) -ne 0 ] ; then
30 if [ $(getent group ${CONT_GROUP}) ] || [ $(getent group ${CONT_GID}) ] ; then
34 if [ $(getent passwd ${CONT_USER}) ] || [ $(getent passwd ${CONT_UID}) ] ; then
35 echo "passwd conflict"
39 if [[ $ID == "ubuntu" ]] ; then
40 groupadd --gid ${CONT_GID} ${CONT_GROUP} || exit 10
41 useradd --shell /bin/bash --uid ${CONT_UID} --gid ${CONT_GID} -o -d /ws $(test -d /ws && echo "-M" || echo "-m") --groups $CONT_GID ${CONT_USER}|| exit 11
43 if [[ $ID == "alpine" ]] ; then
44 addgroup -g ${CONT_GID} ${CONT_GROUP} || exit 10
45 adduser -s /bin/bash -u ${CONT_UID} -G ${CONT_GROUP} -h /ws $(test -d /ws && echo "-H") -D ${CONT_USER} || exit 11
48 chown ${CONT_UID}.${CONT_GID} /ws
50 echo "${CONT_USER} ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
52 DOCKER_SOCKET=/var/run/docker.sock
53 if [ -S ${DOCKER_SOCKET} ]; then
54 DOCKER_GID=$(stat -c '%g' ${DOCKER_SOCKET})
55 if [ $(getent group ${DOCKER_GID}) ]; then
56 if [[ $ID == "ubuntu" ]] ; then
57 usermod -aG $(getent group ${DOCKER_GID} | cut -d: -f1) ${CONT_USER} || exit 12
59 if [[ $ID == "alpine" ]] ; then
60 addgroup ${CONT_USER} $(getent group ${DOCKER_GID} | cut -d: -f1) || exit 12
63 if [[ $ID == "ubuntu" ]] ; then
64 groupadd -for -g ${DOCKER_GID} docker_${CONT_USER} || exit 13
65 usermod -aG docker_${CONT_USER} ${CONT_USER} || exit 14
67 if [[ $ID == "alpine" ]] ; then
68 addgroup -g ${DOCKER_GID} docker_${CONT_USER} || exit 13
69 addgroup ${CONT_USER} docker_${CONT_USER} || exit 14
74 export USER=${CONT_USER}
78 chown -R ${CONT_UID}.${CONT_GID} /ws/go
79 export GOPATH="/ws/go"
81 sudo -E -s -u ${CONT_USER} env "PATH=$PATH" "$@"