Last active
October 22, 2021 12:39
-
-
Save mnoskov/a6b11e92601189c43bbf145d4d842f20 to your computer and use it in GitHub Desktop.
Скрипт деплоя
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
#%$ set -e # Прерывание работы скрипта в случае ошибки | |
REPOSITORY=https://github.com/<username>/<project> | |
BRANCH=master | |
WORK_PATH=/path/to/this/script | |
PROJECT_PATH=/path/to/project/base/path | |
TEMP_DIR_NAME=`date +%Y-%m-%d_%H:%M:%S` | |
PHP_BIN=/opt/php74/bin/php | |
COMPOSER="${PHP_BIN} composer" | |
OWNER=www-root:www-root | |
# Функция выбора ветки репозитория | |
selectBranch() { | |
read item; | |
if [ -n "${item}" ] | |
then | |
selectedBranch=${item} | |
return 0 | |
else | |
if [ -n "${1}" ] | |
then | |
selectedBranch=${1} | |
return 0 | |
fi | |
echo -n "Необходимо указать ветку! " | |
selectBranch | |
fi | |
} | |
# Функция клонирования репозитория и переключения на необходимую ветку | |
gitPull() { | |
echo "Репозиторий проекта - ${REPOSITORY}" | |
echo -n "Какую ветку забираем? (по умолчанию - ${1}) " | |
selectBranch ${1} | |
echo "Забираю ветку ${selectedBranch}" | |
cd ${WORK_PATH} || exit $? | |
git clone --depth 1 ${REPOSITORY} ${TEMP_DIR_NAME} || exit $? | |
cd "${WORK_PATH}/${TEMP_DIR_NAME}" | |
git checkout ${selectedBranch} || exit $? | |
rm -rf "${WORK_PATH}/${TEMP_DIR_NAME}/.git" | |
} | |
afterDeploy() { | |
echo "Выполнение пост-скрипта" | |
cd ${PROJECT_PATH} | |
# change rights and owner | |
chown ${OWNER} -R . | |
chmod 755 -R . | |
cd core | |
${COMPOSER} install | |
# migrate database | |
${PHP_BIN} artisan migrate | |
# seed database | |
for file in database/seeders/* | |
do | |
basename=$(basename $file) | |
filename="${basename%%"."*}" | |
echo "Выполняю ${file}" | |
${PHP_BIN} artisan db:seed --class="${filename}" | |
done | |
#clear cache | |
${PHP_BIN} artisan cache:clear-full | |
} | |
# Функция работы с директорией релиза | |
copyFiles() { | |
echo "Копирую файлы в проект" | |
cp -r "${WORK_PATH}/${TEMP_DIR_NAME}/." ${PROJECT_PATH} || exit $? | |
cd ${WORK_PATH} | |
rm -rf "${WORK_PATH}/${TEMP_DIR_NAME}" || exit $? | |
} | |
gitPull ${BRANCH} | |
copyFiles | |
afterDeploy | |
echo "Деплой успешно завершен." | |
exit 0; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment