|
| 1 | +#!/bin/sh |
| 2 | +# |
| 3 | +# Copyright (c) 2019-2024 Red Hat, Inc. |
| 4 | +# This program and the accompanying materials are made |
| 5 | +# available under the terms of the Eclipse Public License 2.0 |
| 6 | +# which is available at https://www.eclipse.org/legal/epl-2.0/ |
| 7 | +# |
| 8 | +# SPDX-License-Identifier: EPL-2.0 |
| 9 | +# |
| 10 | +# Contributors: |
| 11 | +# Red Hat, Inc. - initial API and implementation |
| 12 | +# |
| 13 | + |
| 14 | +# Create Home directory |
| 15 | +if [ ! -d "${HOME}" ] |
| 16 | +then |
| 17 | + mkdir -p "${HOME}" |
| 18 | +fi |
| 19 | + |
| 20 | +############################################################################# |
| 21 | +# Grant access to projects volume in case of non root user with sudo rights |
| 22 | +############################################################################# |
| 23 | +if [ "$(id -u)" -ne 0 ] && command -v sudo >/dev/null 2>&1 && sudo -n true > /dev/null 2>&1; then |
| 24 | + sudo chown "${USER_ID}:${GROUP_ID}" /projects |
| 25 | +fi |
| 26 | + |
| 27 | +if [ -f "${HOME}"/.venv/bin/activate ]; then |
| 28 | + source "${HOME}"/.venv/bin/activate |
| 29 | +fi |
| 30 | + |
| 31 | +############################################################################# |
| 32 | +# If KUBEDOCK_ENABLED="true" then link podman to /usr/bin/podman-wrapper.sh |
| 33 | +# else link podman to /usr/bin/podman.orig |
| 34 | +############################################################################# |
| 35 | +if [[ "${KUBEDOCK_ENABLED:-false}" == "true" ]]; then |
| 36 | + echo |
| 37 | + echo "Kubedock is enabled (env variable KUBEDOCK_ENABLED is set to true)." |
| 38 | + |
| 39 | + SECONDS=0 |
| 40 | + KUBEDOCK_TIMEOUT=${KUBEDOCK_TIMEOUT:-10} |
| 41 | + until [ -f $KUBECONFIG ]; do |
| 42 | + if (( SECONDS > KUBEDOCK_TIMEOUT )); then |
| 43 | + break |
| 44 | + fi |
| 45 | + echo "Kubeconfig doesn't exist yet. Waiting..." |
| 46 | + sleep 1 |
| 47 | + done |
| 48 | + |
| 49 | + if [ -f $KUBECONFIG ]; then |
| 50 | + echo "Kubeconfig found." |
| 51 | + |
| 52 | + KUBEDOCK_PARAMS=${KUBEDOCK_PARAMS:-"--reverse-proxy --kubeconfig $KUBECONFIG"} |
| 53 | + |
| 54 | + echo "Starting kubedock with params \"${KUBEDOCK_PARAMS}\"..." |
| 55 | + |
| 56 | + kubedock server ${KUBEDOCK_PARAMS} > /tmp/kubedock.log 2>&1 & |
| 57 | + |
| 58 | + echo "Done." |
| 59 | + |
| 60 | + echo "Replacing podman with podman-wrapper.sh..." |
| 61 | + |
| 62 | + ln -f -s /usr/bin/podman-wrapper.sh /home/user/.local/bin/podman |
| 63 | + |
| 64 | + export TESTCONTAINERS_RYUK_DISABLED="true" |
| 65 | + export TESTCONTAINERS_CHECKS_DISABLE="true" |
| 66 | + |
| 67 | + echo "Done." |
| 68 | + echo |
| 69 | + else |
| 70 | + echo "Could not find Kubeconfig at $KUBECONFIG" |
| 71 | + echo "Giving up..." |
| 72 | + fi |
| 73 | +else |
| 74 | + echo |
| 75 | + echo "Kubedock is disabled. It can be enabled with the env variable \"KUBEDOCK_ENABLED=true\"" |
| 76 | + echo "set in the workspace Devfile or in a Kubernetes ConfigMap in the developer namespace." |
| 77 | + echo |
| 78 | + ln -f -s /usr/bin/podman.orig /home/user/.local/bin/podman |
| 79 | +fi |
| 80 | + |
| 81 | +# Configure Podman builds to use vfs or fuse-overlayfs |
| 82 | +if [ ! -d "${HOME}/.config/containers" ]; then |
| 83 | + mkdir -p ${HOME}/.config/containers |
| 84 | + if [ -c "/dev/fuse" ] && [ -f "/usr/bin/fuse-overlayfs" ]; then |
| 85 | + (echo '[storage]';echo 'driver = "overlay"';echo '[storage.options.overlay]';echo 'mount_program = "/usr/bin/fuse-overlayfs"') > ${HOME}/.config/containers/storage.conf |
| 86 | + else |
| 87 | + (echo '[storage]';echo 'driver = "vfs"') > "${HOME}"/.config/containers/storage.conf |
| 88 | + fi |
| 89 | +fi |
| 90 | + |
| 91 | +# Create User ID |
| 92 | +if ! whoami &> /dev/null |
| 93 | +then |
| 94 | + if [ -w /etc/passwd ] |
| 95 | + then |
| 96 | + echo "${USER_NAME:-user}:x:$(id -u):0:${USER_NAME:-user} user:${HOME}:/bin/bash" >> /etc/passwd |
| 97 | + echo "${USER_NAME:-user}:x:$(id -u):" >> /etc/group |
| 98 | + fi |
| 99 | +fi |
| 100 | + |
| 101 | +# Create subuid/gid entries for the user |
| 102 | +USER=$(whoami) |
| 103 | +START_ID=$(( $(id -u)+1 )) |
| 104 | +echo "${USER}:${START_ID}:2147483646" > /etc/subuid |
| 105 | +echo "${USER}:${START_ID}:2147483646" > /etc/subgid |
| 106 | + |
| 107 | +# Configure Z shell |
| 108 | +if [ ! -f ${HOME}/.zshrc ] |
| 109 | +then |
| 110 | + (echo "HISTFILE=${HOME}/.zsh_history"; echo "HISTSIZE=1000"; echo "SAVEHIST=1000") > ${HOME}/.zshrc |
| 111 | + (echo "if [ -f ${PROJECT_SOURCE}/workspace.rc ]"; echo "then"; echo " . ${PROJECT_SOURCE}/workspace.rc"; echo "fi") >> ${HOME}/.zshrc |
| 112 | +fi |
| 113 | + |
| 114 | +# Login to the local image registry |
| 115 | +podman login -u $(oc whoami) -p $(oc whoami -t) image-registry.openshift-image-registry.svc:5000 |
| 116 | + |
| 117 | +exec "$@" |
0 commit comments