diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d66ce83d335670d30136aaec4e9618617edfff47..4fd9b717eee5c95779695155a226679ef3ac8d30 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,7 +5,7 @@ include: variables: VERSION: ${CI_COMMIT_TAG} - CI_VERSION: v2.2.15 + CI_VERSION: v2.2.17 before_script: - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY diff --git a/run/scripts/dir b/run/scripts/dir index 801a8ff14f8543b03fb3c3c131e2992128bcb5e9..4860dc9d23514e347252110fc3169104805c91ef 100755 --- a/run/scripts/dir +++ b/run/scripts/dir @@ -1,5 +1,5 @@ #!/bin/bash if [[ -n $1 ]]; then - docker inspect ${1}_l3d | jq -r .[0].Config.Env | grep L3DHOSTDIR | cut -d'=' -f 2 | cut -d'"' -f 1 + docker inspect ${1}_${USERNAME}_l3d | jq -r .[0].Config.Env | grep L3DHOSTDIR | cut -d'=' -f 2 | cut -d'"' -f 1 fi diff --git a/run/scripts/start b/run/scripts/start index c49a7a0e59763f6f016ba4723438cf1b32328a5e..3f65ed3c8248ddab09e9b98f746f3f48c5f3eb19 100755 --- a/run/scripts/start +++ b/run/scripts/start @@ -1,6 +1,11 @@ #!/bin/bash function getConfig() { + if [[ "$L3D_COMPOSE" != "[]" ]]; then + COMPOSE_PROJECT_NAME=$(yq .name $L3D_COMPOSE) + PHP_VERSION=$(yq .services.php.image $L3D_COMPOSE | cut -d':' -f 2) + rm "$L3D_COMPOSE" + fi if [[ ! -n ${PHP_VERSION} ]]; then while true; do DEFAULT=8.1 @@ -23,24 +28,6 @@ function getConfig() { esac done fi - if [[ ! -n ${COMPOSER_DOWNGRADE} ]]; then - while true; do - DEFAULT=0 - read -p "Do you want to downgrade Composer to version 1 - 0=No, 1=Yes? [No] " VALUE - if [[ "x$VALUE" == "x" ]]; then - COMPOSER_DOWNGRADE=$DEFAULT - else - COMPOSER_DOWNGRADE=$VALUE - fi - case ${COMPOSER_DOWNGRADE} in - 0) break ;; - 1) break ;; - no|NO|No) COMPOSER_DOWNGRADE=0 ;; - yes|YES|Yes) COMPOSER_DOWNGRADE=1 ;; - *) echo "Only 1 or 0 are valid responses." ;; - esac - done - fi if [[ ! -n ${COMPOSE_PROJECT_NAME} ]]; then DEFAULT=$(basename $WORKDIR) read -p "Name your project (used as subdomain): [$DEFAULT]" VALUE @@ -64,9 +51,9 @@ function startContainer() { if [[ $COMPOSE_PROJECT_NAME == "." ]]; then mode=NONPRESISTENT else - ID=$(docker container ls --all -q -f name=^${COMPOSE_PROJECT_NAME}_l3d$) + ID=$(docker container ls --all -q -f name=^${COMPOSE_PROJECT_NAME}_${USERNAME}_l3d$) if [[ -n ${ID} ]]; then - docker start ${COMPOSE_PROJECT_NAME}_l3d + docker start ${COMPOSE_PROJECT_NAME}_${USERNAME}_l3d mode=REGULAR fi fi @@ -80,13 +67,17 @@ function startContainer() { --env COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME} --env COMPOSER_DOWNGRADE=${COMPOSER_DOWNGRADE} --env PHP_VERSION=${PHP_VERSION} - --env SSH_AUTH_SOCK=${SSHAUTHSOCK} --volume ${L3DDOCKERHOST}:/var/run/docker.sock --volume ${WORKDIR}:/drupal - --volume ${SSHAUTH}:${SSHAUTHSOCK} --volume ${HOMEDIR}:/home/${USERNAME} --workdir /drupal ) + if [[ -n "$SSHAUTH" ]]; then + start_params+=( + --env SSH_AUTH_SOCK=${SSHAUTHSOCK} + --volume ${SSHAUTH}:${SSHAUTHSOCK} + ) + fi if [[ ${L3DHOSTOS} != Darwin ]]; then start_params+=( --user ${USERID}:${GROUPID} @@ -107,7 +98,7 @@ function startContainer() { start_params+=( --hostname ${COMPOSE_PROJECT_NAME}-l3d ) - docker run --name ${COMPOSE_PROJECT_NAME}_l3d -dt \ + docker run --name ${COMPOSE_PROJECT_NAME}_${USERNAME}_l3d -dt \ "${start_params[@]}" \ --restart unless-stopped \ registry.lakedrops.com/docker/l3d/php-${PHP_VERSION}:${L3DVERSION} @@ -116,8 +107,12 @@ function startContainer() { --hostname "L3D" --env HOMEDIR=${HOMEDIR} --env WORKDIR=${WORKDIR} - --env SSHAUTH=${SSHAUTH} ) + if [[ -n "$SSHAUTH" ]]; then + start_params+=( + --env SSHAUTH=${SSHAUTH} + ) + fi docker run -it --rm \ "${start_params[@]}" \ registry.lakedrops.com/docker/l3d/php-${PHP_VERSION}:${L3DVERSION} \ @@ -129,8 +124,12 @@ function startContainer() { start_params=( --env HOMEDIR=${HOMEDIR} --env WORKDIR=${WORKDIR} - --env SSHAUTH=${SSHAUTH} ) + if [[ -n "$SSHAUTH" ]]; then + start_params+=( + --env SSHAUTH=${SSHAUTH} + ) + fi if [[ "$PHP_VERSION" != "unknown" ]]; then start_params+=( --env PHP_VERSION=${PHP_VERSION} @@ -138,7 +137,7 @@ function startContainer() { fi docker exec -it \ "${start_params[@]}" \ - ${COMPOSE_PROJECT_NAME}_l3d \ + ${COMPOSE_PROJECT_NAME}_${USERNAME}_l3d \ /usr/local/bin/.start exitContainer fi @@ -148,7 +147,7 @@ if [[ -n $1 ]]; then if [[ "$1" == "." ]]; then COMPOSE_PROJECT_NAME=. else - ID=$(docker container ls --all -q -f name=^$1_l3d$) + ID=$(docker container ls --all -q -f name=^$1_${USERNAME}_l3d$) if [[ -n ${ID} ]]; then PHP_VERSION=unknown COMPOSE_PROJECT_NAME=$1 diff --git a/setup/scripts/l3d b/setup/scripts/l3d index 9592dd7206f4cd394a8264628cb6096129ba9db2..793f60a90c8ce41700ab00a2711c093865552028 100755 --- a/setup/scripts/l3d +++ b/setup/scripts/l3d @@ -4,7 +4,6 @@ GROUPID=$(id -g) GROUPIDS=$(id -G) L3DHOSTOS="$(uname -s)" L3DDOCKERHOST=/var/run/docker.sock -SSHAUTH=${SSH_AUTH_SOCK} SSHAUTHSOCK=/ssh-agent USERID=$(id -u) USERNAME=${USER} @@ -25,9 +24,11 @@ case "${L3DHOSTOS}" in USERNAME=root # This variable is used to access the ssh agent on MacOS. - SSHAUTHMAGICPATH="/run/host-services/ssh-auth.sock" - SSHAUTH=${SSHAUTHMAGICPATH} - SSHAUTHSOCK=${SSHAUTHMAGICPATH} + if [[ -f "/run/host-services/ssh-auth.sock" ]]; then + SSHAUTHMAGICPATH="/run/host-services/ssh-auth.sock" + SSH_AUTH_SOCK=${SSHAUTHMAGICPATH} + SSHAUTHSOCK=${SSHAUTHMAGICPATH} + fi if [[ $? > 0 ]]; then exit $? fi @@ -80,7 +81,7 @@ fi # Chenge directory to the existing project root, if available. if [[ -n $1 ]]; then - ID=$(docker container ls --all -q -f name=^$1_l3d$) + ID=$(docker container ls --all -q -f name=^$1_${USERNAME}_l3d$) if [[ -n ${ID} ]]; then cd $(docker exec ${ID} php /usr/local/bin/volume.php --none) fi @@ -98,6 +99,11 @@ if [[ -f ".lakedrops.yml" ]]; then L3D_CONFIG=/tmp/${RANDOM}.lakedrops.yml docker cp .lakedrops.yml l3drun:$L3D_CONFIG >/dev/null 2>&1 fi +L3D_COMPOSE=[] +if [[ -f "docker-compose.yml" ]]; then + L3D_COMPOSE=/tmp/${RANDOM}-docker-compose.yml + docker cp docker-compose.yml l3drun:$L3D_COMPOSE >/dev/null 2>&1 +fi # Create project container parameters project_params=( @@ -109,13 +115,18 @@ project_params=( --env L3DSHELL=${L3DSHELL} --env L3D_ALWAYS_CLEANUP=${L3D_ALWAYS_CLEANUP} --env L3D_CONFIG=${L3D_CONFIG} + --env L3D_COMPOSE=${L3D_COMPOSE} --env WORKDIR=${PWD} - --env SSHAUTH=${SSHAUTH} - --env SSHAUTHSOCK=${SSHAUTHSOCK} --env PHP_VERSION=${PHP_VERSION} --env COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME} --env COMPOSER_DOWNGRADE=${COMPOSER_DOWNGRADE} ) +if [[ -n "$SSH_AUTH_SOCK" ]]; then + project_params+=( + --env SSHAUTH=${SSH_AUTH_SOCK} + --env SSHAUTHSOCK=${SSHAUTHSOCK} + ) +fi # Execute project container docker exec -it \ diff --git a/start.sh b/start.sh index 31f57d97daed4ec6b00887a1a7555ea9ae77c43e..1fa8357c37c7ec28de044c7541513d1930e5a41b 100755 --- a/start.sh +++ b/start.sh @@ -32,20 +32,22 @@ function restoreEnvFile { if [[ "${COMPOSE_PROJECT_NAME}" == "." ]]; then return fi - if [[ -n ${PHP_VERSION} ]]; then - echo "PHP_VERSION=${PHP_VERSION}" >>.env - fi - if [[ -n ${COMPOSE_PROJECT_NAME} ]]; then - echo "COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME}" >>.env - fi - if [[ -n ${COMPOSER_DOWNGRADE} ]]; then - echo "COMPOSER_DOWNGRADE=${COMPOSER_DOWNGRADE}" >>.env - fi - if [[ -f ".env" ]]; then - # shellcheck disable=SC2046 - # shellcheck disable=SC2094 - # shellcheck disable=SC2002 - env -i $(cat .env | xargs) >.env + if [[ -f ".env" && -w ".env" ]] || [[ ! -f ".env" && -w . ]]; then + if [[ -n ${PHP_VERSION} ]]; then + echo "PHP_VERSION=${PHP_VERSION}" >>.env + fi + if [[ -n ${COMPOSE_PROJECT_NAME} ]]; then + echo "COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME}" >>.env + fi + if [[ -n ${COMPOSER_DOWNGRADE} ]]; then + echo "COMPOSER_DOWNGRADE=${COMPOSER_DOWNGRADE}" >>.env + fi + if [[ -f ".env" ]]; then + # shellcheck disable=SC2046 + # shellcheck disable=SC2094 + # shellcheck disable=SC2002 + env -i $(cat .env | xargs) >.env + fi fi } @@ -207,30 +209,36 @@ function initialSetup { } function setupAhoy { - if [[ ! -f .ahoy.yml ]]; then + if [[ ! -f .ahoy.yml && -w . ]]; then echo "ahoyapi: v2" >.ahoy.yml echo "commands:" >>.ahoy.yml fi - if [[ ! -L .ahoy.l3d ]]; then + if [[ ! -L .ahoy.l3d && -w . ]]; then ln -s /etc/ahoy .ahoy.l3d fi if [[ -f .gitignore ]]; then EXISTING=$(cat .gitignore | grep "^/.ahoy.l3d$") if [[ -z ${EXISTING} ]]; then - echo "/.ahoy.l3d" >>.gitignore + if [[ -f ".gitignore" && -w ".gitignore" ]] || [[ ! -f ".gitignore" && -w . ]]; then + echo "/.ahoy.l3d" >>.gitignore + fi fi fi - EXISTING=$(cat .ahoy.yml | grep "^ changelog:") - if [[ -z ${EXISTING} ]]; then - echo " changelog:" >>.ahoy.yml - echo " imports:" >>.ahoy.yml - echo " - ./.ahoy.l3d/changelog.yml" >>.ahoy.yml - echo " usage: Changelog tools." >>.ahoy.yml + if [[ -f ".ahoy.yml" && -w ".ahoy.yml" ]] || [[ ! -f ".ahoy.yml" && -w . ]]; then + EXISTING=$(cat .ahoy.yml | grep "^ changelog:") + if [[ -z ${EXISTING} ]]; then + echo " changelog:" >>.ahoy.yml + echo " imports:" >>.ahoy.yml + echo " - ./.ahoy.l3d/changelog.yml" >>.ahoy.yml + echo " usage: Changelog tools." >>.ahoy.yml + fi fi } if [[ -n ${PHP_VERSION} ]]; then - echo "PHP_VERSION=${PHP_VERSION}" >>.env + if [[ -f ".env" && -w ".env" ]] || [[ ! -f ".env" && -w . ]]; then + echo "PHP_VERSION=${PHP_VERSION}" >>.env + fi fi readEnv # Validate PHP version @@ -242,7 +250,7 @@ if [[ "$INSTALLED_PHP_VERSION" != "$PHP_VERSION" ]]; then if [[ "${COMPOSE_PROJECT_NAME}" != "." ]]; then echo -e "\\033[31m Killed the outdated container, please start again !!! \\033[0m" echo -e "\\033[31m ===================================================== \\033[0m" - docker rm -f ${COMPOSE_PROJECT_NAME}_l3d + docker rm -f ${COMPOSE_PROJECT_NAME}_${USERNAME}_l3d fi fi if [[ "$COMPOSER_DOWNGRADE" == "1" ]]; then @@ -278,8 +286,8 @@ if [[ "${COMPOSE_PROJECT_NAME}" != "." ]]; then echo "#!/bin/sh" > .git/hooks/post-checkout chmod +x .git/hooks/post-checkout fi - OLDCOMMAND='docker exec '${COMPOSE_PROJECT_NAME}'_l3d /usr/local/bin/update-env' - NEWCOMMAND='RUNNING=$(docker container ls --all -q -f name='${COMPOSE_PROJECT_NAME}'_l3d);if [ "x$RUNNING" != "x" ];then docker exec '${COMPOSE_PROJECT_NAME}'_l3d /usr/local/bin/update-env;fi' + OLDCOMMAND='docker exec '${COMPOSE_PROJECT_NAME}'_'${USERNAME}'_l3d /usr/local/bin/update-env' + NEWCOMMAND='RUNNING=$(docker container ls --all -q -f name='${COMPOSE_PROJECT_NAME}'_'${USERNAME}_'l3d);if [ "x$RUNNING" != "x" ];then docker exec '${COMPOSE_PROJECT_NAME}'_l3d /usr/local/bin/update-env;fi' OLD_HOOK_DEFINED=$(grep "$OLDCOMMAND" .git/hooks/post-checkout) NEW_HOOK_DEFINED=$(grep "$NEWCOMMAND" .git/hooks/post-checkout) if [[ "x$OLD_HOOK_DEFINED" = "x" ]]; then