diff --git a/src/bin/base_setup.sh b/src/bin/base_setup.sh index fc406a6..73547ac 100644 --- a/src/bin/base_setup.sh +++ b/src/bin/base_setup.sh @@ -15,8 +15,8 @@ fi; # abort on not set error=0; -if [ -z "${GIT_REPOSITORY_FOLDER}" ]; then - echo "Missing GIT_REPOSITORY_FOLDER entry"; +if [ -z "${GIT_WEBHOOK_BASE_FOLDER}" ]; then + echo "Missing GIT_WEBHOOK_BASE_FOLDER entry"; error=1; fi; if [ -z "${WWW_GROUP}" ]; then @@ -56,9 +56,9 @@ PEM_BASE="${BASE_FOLDER}../pem/"; JUMP_PEM_FILE="somen-jump.tequila.jp#scripts#webhook-git#ed25519.pem"; # add trailing slash if missing -GIT_REPOSITORY_FOLDER="${GIT_REPOSITORY_FOLDER%/}/" +GIT_WEBHOOK_BASE_FOLDER="${GIT_WEBHOOK_BASE_FOLDER%/}/" -if [ -d "${GIT_REPOSITORY_FOLDER}" ]; then +if [ -d "${GIT_WEBHOOK_BASE_FOLDER}" ]; then echo "Base folder already exists, update check"; echo "[TODO] -> Not implemented exit"; # check folders @@ -71,27 +71,27 @@ else echo "=> Create new folder structure"; # User for sudo, but only if SUDO is enabled if [ "${USE_SUDO}" != "0" ]; then - echo "+ Add user ${WWW_GROUP}:${SUDO_USER} with base folder ${GIT_REPOSITORY_FOLDER}"; - useradd -d "${GIT_REPOSITORY_FOLDER}" -m -s /usr/sbin/nologin "${SUDO_USER}" + echo "+ Add user ${WWW_GROUP}:${SUDO_USER} with base folder ${GIT_WEBHOOK_BASE_FOLDER}"; + useradd -d "${GIT_WEBHOOK_BASE_FOLDER}" -m -s /usr/sbin/nologin "${SUDO_USER}" fi; - if [ -d "${GIT_REPOSITORY_FOLDER}" ]; then - echo "+ Create Folder: ${GIT_REPOSITORY_FOLDER}"; - mkdir "${GIT_REPOSITORY_FOLDER}"; + if [ -d "${GIT_WEBHOOK_BASE_FOLDER}" ]; then + echo "+ Create Folder: ${GIT_WEBHOOK_BASE_FOLDER}"; + mkdir "${GIT_WEBHOOK_BASE_FOLDER}"; fi; echo "+ Set folder user/group"; # user is not mandatory, but we need to set the group - setfacl -m u:"${SUDO_USER}":rwx -R "${GIT_REPOSITORY_FOLDER}" - setfacl -m -d u:"${SUDO_USER}":rwx -R "${GIT_REPOSITORY_FOLDER}" - setfacl -m g:"${WWW_GROUP}":rx -R "${GIT_REPOSITORY_FOLDER}" + setfacl -m u:"${SUDO_USER}":rwx -R "${GIT_WEBHOOK_BASE_FOLDER}" + setfacl -m -d u:"${SUDO_USER}":rwx -R "${GIT_WEBHOOK_BASE_FOLDER}" + setfacl -m g:"${WWW_GROUP}":rx -R "${GIT_WEBHOOK_BASE_FOLDER}" # SSH if [ "${USE_SUDO}" != "0" ]; then echo "+ Add .ssh folder" - sudo -u "${SUDO_USER}" mkdir "${GIT_REPOSITORY_FOLDER}"/.ssh/ - sudo -u "${SUDO_USER}" touch "${GIT_REPOSITORY_FOLDER}"/.ssh/config - sudo -u "${SUDO_USER}" chmod 700 "${GIT_REPOSITORY_FOLDER}"/.ssh/ - sudo -u "${SUDO_USER}" chmod 600 "${GIT_REPOSITORY_FOLDER}"/.ssh/config + sudo -u "${SUDO_USER}" mkdir "${GIT_WEBHOOK_BASE_FOLDER}"/.ssh/ + sudo -u "${SUDO_USER}" touch "${GIT_WEBHOOK_BASE_FOLDER}"/.ssh/config + sudo -u "${SUDO_USER}" chmod 700 "${GIT_WEBHOOK_BASE_FOLDER}"/.ssh/ + sudo -u "${SUDO_USER}" chmod 600 "${GIT_WEBHOOK_BASE_FOLDER}"/.ssh/config # add master jump host - cat >> "${GIT_REPOSITORY_FOLDER}"/.ssh/config << 'EOF' + cat >> "${GIT_WEBHOOK_BASE_FOLDER}"/.ssh/config << 'EOF' Host UdonGitJump Hostname somen-jump.tequila.jp User webhook-git @@ -99,9 +99,9 @@ Host UdonGitJump Port 37337 EOF if [ -f "${PEM_BASE}${JUMP_PEM_FILE}" ]; then - sudo -u "${SUDO_USER}" cp "${PEM_BASE}${JUMP_PEM_FILE}" "${GIT_REPOSITORY_FOLDER}"/.ssh/; - chown "${SUDO_USER}:" "${GIT_REPOSITORY_FOLDER}/.ssh/${JUMP_PEM_FILE}" - sudo -u "${SUDO_USER}" chmod 600 "${GIT_REPOSITORY_FOLDER}/.ssh/${JUMP_PEM_FILE}" + sudo -u "${SUDO_USER}" cp "${PEM_BASE}${JUMP_PEM_FILE}" "${GIT_WEBHOOK_BASE_FOLDER}"/.ssh/; + chown "${SUDO_USER}:" "${GIT_WEBHOOK_BASE_FOLDER}/.ssh/${JUMP_PEM_FILE}" + sudo -u "${SUDO_USER}" chmod 600 "${GIT_WEBHOOK_BASE_FOLDER}/.ssh/${JUMP_PEM_FILE}" else echo "PEM FILE ${JUMP_PEM_FILE} must be added manually" fi; @@ -110,29 +110,29 @@ EOF echo "+ Other folders for clone base: ${CLONE_BASE}, logs, scripts, www/webhook-incoming" sudo -u "${SUDO_USER}" \ mkdir -p \ - "${GIT_REPOSITORY_FOLDER}${CLONE_BASE}" \ - "${GIT_REPOSITORY_FOLDER}${LOG_FOLDER}" \ - "${GIT_REPOSITORY_FOLDER}${SCRIPT_FOLDER}" \ - "${GIT_REPOSITORY_FOLDER}${CONFIG_FOLDER}" \ - "${GIT_REPOSITORY_FOLDER}${WWW_WEBHOOK_INCOMING}" \ - "${GIT_REPOSITORY_FOLDER}${WWW_ADMIN}"; + "${GIT_WEBHOOK_BASE_FOLDER}${CLONE_BASE}" \ + "${GIT_WEBHOOK_BASE_FOLDER}${LOG_FOLDER}" \ + "${GIT_WEBHOOK_BASE_FOLDER}${SCRIPT_FOLDER}" \ + "${GIT_WEBHOOK_BASE_FOLDER}${CONFIG_FOLDER}" \ + "${GIT_WEBHOOK_BASE_FOLDER}${WWW_WEBHOOK_INCOMING}" \ + "${GIT_WEBHOOK_BASE_FOLDER}${WWW_ADMIN}"; # set basic folder rights, clone folder is excluded sudo -u "${SUDO_USER}" chmod 700 \ - "${GIT_REPOSITORY_FOLDER}${LOG_FOLDER}" \ - "${GIT_REPOSITORY_FOLDER}${SCRIPT_FOLDER}" \ - "${GIT_REPOSITORY_FOLDER}${CONFIG_FOLDER}" \ - "${GIT_REPOSITORY_FOLDER}${WWW_WEBHOOK_INCOMING}" \ - "${GIT_REPOSITORY_FOLDER}${WWW_ADMIN}"; - # setfacl -m u:"${SUDO_USER}":rwx -R "${GIT_REPOSITORY_FOLDER}${CLONE_BASE}" - # setfacl -d -m u:"${SUDO_USER}":rwx -R "${GIT_REPOSITORY_FOLDER}${CLONE_BASE}" + "${GIT_WEBHOOK_BASE_FOLDER}${LOG_FOLDER}" \ + "${GIT_WEBHOOK_BASE_FOLDER}${SCRIPT_FOLDER}" \ + "${GIT_WEBHOOK_BASE_FOLDER}${CONFIG_FOLDER}" \ + "${GIT_WEBHOOK_BASE_FOLDER}${WWW_WEBHOOK_INCOMING}" \ + "${GIT_WEBHOOK_BASE_FOLDER}${WWW_ADMIN}"; + # setfacl -m u:"${SUDO_USER}":rwx -R "${GIT_WEBHOOK_BASE_FOLDER}${CLONE_BASE}" + # setfacl -d -m u:"${SUDO_USER}":rwx -R "${GIT_WEBHOOK_BASE_FOLDER}${CLONE_BASE}" # web user must have access to the clone folder, RWX - setfacl -m g:"${WWW_GROUP}":rwx -R "${GIT_REPOSITORY_FOLDER}${CLONE_BASE}" - setfacl -d -m g:"${WWW_GROUP}":rwx -R "${GIT_REPOSITORY_FOLDER}${CLONE_BASE}" + setfacl -m g:"${WWW_GROUP}":rwx -R "${GIT_WEBHOOK_BASE_FOLDER}${CLONE_BASE}" + setfacl -d -m g:"${WWW_GROUP}":rwx -R "${GIT_WEBHOOK_BASE_FOLDER}${CLONE_BASE}" # Copy files echo "+ Copy basic script and config files"; # git_pull.sh, init.sh, new_clone.sh, webhook.default.cfg - sudo -u "${SUDO_USER}"cp "${BASE_FOLDER}new_clone.sh" "${BASE_FOLDER}init.sh" "${BASE_FOLDER}git_clone.sh" "${GIT_REPOSITORY_FOLDER}${SCRIPT_FOLDER}"; - sudo -u "${SUDO_USER}"cp "${CONFIG_BASE}/webhook.default.cfg" "${GIT_REPOSITORY_FOLDER}${CONFIG_FOLDER}"; + sudo -u "${SUDO_USER}"cp "${BASE_FOLDER}new_clone.sh" "${BASE_FOLDER}init.sh" "${BASE_FOLDER}git_clone.sh" "${GIT_WEBHOOK_BASE_FOLDER}${SCRIPT_FOLDER}"; + sudo -u "${SUDO_USER}"cp "${CONFIG_BASE}/webhook.default.cfg" "${GIT_WEBHOOK_BASE_FOLDER}${CONFIG_FOLDER}"; fi; # __END__ diff --git a/src/bin/git_pull.sh b/src/bin/git_pull.sh index a6aa533..dd43a66 100755 --- a/src/bin/git_pull.sh +++ b/src/bin/git_pull.sh @@ -15,12 +15,12 @@ BASE_FOLDER=$(dirname "$(readlink -f "$0")")"/"; . "${BASE_FOLDER}init.sh"; # check that repository path exists -REPOSITORY_PATH="${GIT_REPOSITORY_FOLDER}${CLONE_BASE}${REPOSITORY}"; +REPOSITORY_PATH="${GIT_WEBHOOK_BASE_FOLDER}${CLONE_BASE}${REPOSITORY}"; if [ ! -d "${REPOSITORY_PATH}$" ]; then echo "${REPOSITORY} not found in clone folder"; exit; fi; -LOG_FILE="${GIT_REPOSITORY_FOLDER}${LOG_FOLDER}${REPOSITORY}.log"; +LOG_FILE="${GIT_WEBHOOK_BASE_FOLDER}${LOG_FOLDER}${REPOSITORY}.log"; # fetch to null # ${GIT_COMMAND} -C "${REPOSITORY_PATH}" fetch -q "${REMOTE}" "${BRANCH}"; diff --git a/src/bin/init.sh b/src/bin/init.sh index eff71ea..fa63fd0 100644 --- a/src/bin/init.sh +++ b/src/bin/init.sh @@ -33,13 +33,13 @@ if [ -n "${USE_SUDO}" ]; then fi; # add trailing slash if not set -GIT_REPOSITORY_FOLDER="${GIT_REPOSITORY_FOLDER%/}/" +GIT_WEBHOOK_BASE_FOLDER="${GIT_WEBHOOK_BASE_FOLDER%/}/" CLONE_BASE="clone-base/" LOG_FOLDER="log/" # base folder does not exist -if [ ! -d "${GIT_REPOSITORY_FOLDER}" ]; then - echo "Base folder: ${GIT_REPOSITORY_FOLDER} not found"; +if [ ! -d "${GIT_WEBHOOK_BASE_FOLDER}" ]; then + echo "Base folder: ${GIT_WEBHOOK_BASE_FOLDER} not found"; error=1; fi; @@ -50,14 +50,14 @@ if [ -n "${BRANCH}" ]; then fi; # check that log folder exists -if [ ! -d "${GIT_REPOSITORY_FOLDER}${LOG_FOLDER}" ]; then - echo "Log folder does not exist: ${GIT_REPOSITORY_FOLDER}${LOG_FOLDER}"; +if [ ! -d "${GIT_WEBHOOK_BASE_FOLDER}${LOG_FOLDER}" ]; then + echo "Log folder does not exist: ${GIT_WEBHOOK_BASE_FOLDER}${LOG_FOLDER}"; error=1; fi; # check that the base clone folder exists -if [ ! -d "${GIT_REPOSITORY_FOLDER}${CLONE_BASE}" ]; then - echo "Clone base folder does not exist: ${GIT_REPOSITORY_FOLDER}${CLONE_BASE}"; +if [ ! -d "${GIT_WEBHOOK_BASE_FOLDER}${CLONE_BASE}" ]; then + echo "Clone base folder does not exist: ${GIT_WEBHOOK_BASE_FOLDER}${CLONE_BASE}"; error=1; fi; diff --git a/src/bin/new_clone.sh b/src/bin/new_clone.sh index 9c6b6ea..9253072 100755 --- a/src/bin/new_clone.sh +++ b/src/bin/new_clone.sh @@ -26,8 +26,8 @@ echo "* Validate SSH PEM Key exist and SSH config"; echo "New clone"; -GIT_COMMAND=("${GIT_COMMAND_BASE[@]}" "clone" "-b" "${BRANCH}" "--single-branch" "--depth" "1" "--origin" "${REMOTE}" "${REMOTE_HOST}:${REPOSITORY}" "${GIT_REPOSITORY_FOLDER}${CLONE_BASE}") +GIT_COMMAND=("${GIT_COMMAND_BASE[@]}" "clone" "-b" "${BRANCH}" "--single-branch" "--depth" "1" "--origin" "${REMOTE}" "${REMOTE_HOST}:${REPOSITORY}" "${GIT_WEBHOOK_BASE_FOLDER}${CLONE_BASE}") echo "Command: ${GIT_COMMAND[*]}" -# echo ${GIT_COMMAND_BASE} clone -b "${BRANCH}" --single-branch --depth 1 --origin "${REMOTE}" "${REMOTE_HOST}:${REPOSITORY}" "${GIT_REPOSITORY_FOLDER}${CLONE_BASE}"; +# echo ${GIT_COMMAND_BASE} clone -b "${BRANCH}" --single-branch --depth 1 --origin "${REMOTE}" "${REMOTE_HOST}:${REPOSITORY}" "${GIT_WEBHOOK_BASE_FOLDER}${CLONE_BASE}"; # __END__ diff --git a/src/config/webhook.default.cfg b/src/config/webhook.default.cfg index f70bd5b..6ab7cec 100644 --- a/src/config/webhook.default.cfg +++ b/src/config/webhook.default.cfg @@ -1,4 +1,4 @@ -GIT_REPOSITORY_FOLDER="" +GIT_WEBHOOK_BASE_FOLDER="" WWW_GROUP="" SUDO_USER="" USE_SUDO=0