From ef20828d0ac5558ee88f83e3256cb5b50e7d35c6 Mon Sep 17 00:00:00 2001 From: jurgenhaas <juergen.haas@lakedrops.com> Date: Thu, 29 Feb 2024 15:33:22 +0100 Subject: [PATCH] docker/gitlab-drupal-ci#48 - determine composer project name and php version from docker-compose.yml if available - do not ask for composer downgrade anymore - l3d should now also work without ssh-auth-sock - no longer writes to .env if that's read-only --- run/scripts/start | 42 ++++++++++++++++++++---------------------- setup/scripts/l3d | 17 +++++++++++------ start.sh | 7 ++++++- 3 files changed, 37 insertions(+), 29 deletions(-) diff --git a/run/scripts/start b/run/scripts/start index c49a7a0..367d7bf 100755 --- a/run/scripts/start +++ b/run/scripts/start @@ -1,6 +1,10 @@ #!/bin/bash function getConfig() { + if [[ -f "docker-compose.yml" ]]; then + COMPOSE_PROJECT_NAME=$(yq .name docker-compose.yml) + PHP_VERSION=$(yq .services.php.image docker-compose.yml | cut -d':' -f 2) + fi if [[ ! -n ${PHP_VERSION} ]]; then while true; do DEFAULT=8.1 @@ -23,24 +27,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 @@ -80,13 +66,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} @@ -116,8 +106,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 +123,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} diff --git a/setup/scripts/l3d b/setup/scripts/l3d index 9592dd7..c4ec7d2 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 @@ -110,12 +111,16 @@ project_params=( --env L3D_ALWAYS_CLEANUP=${L3D_ALWAYS_CLEANUP} --env L3D_CONFIG=${L3D_CONFIG} --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 31f57d9..f54a8aa 100755 --- a/start.sh +++ b/start.sh @@ -32,6 +32,9 @@ function restoreEnvFile { if [[ "${COMPOSE_PROJECT_NAME}" == "." ]]; then return fi + if [[ ! -w ".env" ]]; then + return + fi if [[ -n ${PHP_VERSION} ]]; then echo "PHP_VERSION=${PHP_VERSION}" >>.env fi @@ -230,7 +233,9 @@ function setupAhoy { } if [[ -n ${PHP_VERSION} ]]; then - echo "PHP_VERSION=${PHP_VERSION}" >>.env + if [[ -w ".env" ]]; then + echo "PHP_VERSION=${PHP_VERSION}" >>.env + fi fi readEnv # Validate PHP version -- GitLab