Избегание фиксации глобального конфига в git
Репост https://stackoverflow.com/questions/53233742/avoiding-committing-of-global-config-to-git
Я пишу сценарий развертывания, чтобы параметризовать (и в конечном итоге подключить) развертывание к устаревшему приложению. Я создал ряд <env>.<appname>.conf
файлов, а также сценарий развертывания в одном git-репо и параметризованный файл «globals.inc» в моем репо.
Моя проблема в том, что я хотел бы иметь возможность редактировать его в моем каталоге dev, не добавляя его в git.
Я подумал добавить его в свой .gitignore
файл, но это означало бы, что у меня возникнет другой набор проблем, когда я захочу обновить globals.inc
файл потенциальными новыми переменными.
Мое первоначальное решение состояло в том, чтобы иметь globals.inc.template
файл, а затем добавить globals.inc
в каталог, имея тот ( globals.inc
) в .gitignore
. Я хотел бы получить некоторую информацию о том, есть ли элегантный трюк Git, который я могу использовать, или я должен просто пойти по шаблону маршрута и скопировать шаблон перед запуском захватывающих частей сценария развертывания.
deploy.sh
#! /bin/bash #Inspiration: https://blog.rjmetrics.com/2010/02/01/simple-deploy-script-for-php-applications/ #Deployscript # Detect exactly 1 argument APP_NAME=MyAPP #GIT_ROOT=localhost:/repo #GIT_USER=josste #APP_REPO=$GIT_ROOT/$APP_NAME.git RELEASE_NAME=`date +"%Y-%m-%d-%H%M%S"` #inspiration: https://clubmate.fi/replace-strings-in-files-with-the-sed-bash-command/ configurer(){ # Loop the config array for i in "${!confs[@]}" do search=$i replace=$ # Note the "" after -i, needed in OS X sed -i "s/$/$/g" $GLOBALS_FILE done } #Get environment if (($# == 1)); then DEPLOY_ENV=$1 echo "Deploying $APP_NAME to $DEPLOY_ENV environment." DEPLOY_FILE=$DEPLOY_ENV.appname.conf else echo "Usage: deploy.sh " exit 1 fi if [ -f $DEPLOY_FILE ]; then #load Configuration . $DEPLOY_FILE #check if directory exists if [ -d $DEPLOY_DIR ]; then echo "folder $DEPLOY_DIR exists. locating globals.inc" GLOBALS_FILE="$DEPLOY_DIR/globals.inc" if [ -f $GLOBALS_FILE ]; then echo "file $GLOBALS_FILE found" GLOBALS="" #replace all variables in globals.inc configurer #add git version to file VER="$(git -C $DEPLOY_DIR rev-parse HEAD)" echo "define("\"APP_VERSION\"","\"$VER\"");" >> $GLOBALS_FILE else echo "expected to find $GLOBALS_FILE but there was nothing there" fi else echo "folder $DEPLOY_DIR not found" fi else echo "Could not find deploy file for $DEPLOY_ENV environment, it should be located in $DEPLOY_FILE" exit 1 fi
globals.inc
<?php /** * GLOBAL variables * */ error_log("SERVER_ADDR: " . $_SERVER["SERVER_ADDR"]); define("SITE_TITLE","¤SITE_TITLE¤"); define("SITE_NAME", "¤SITE_NAME¤"); define("SITE_FQDN", "¤SITE_FQDN¤"); define("DEFAULT_FROM_EMAIL", "¤DEFAULT_FROM_EMAIL¤"); define("SESSION_NAME","¤SESSION_NAME¤"); define("MYSQL_USERNAME","¤MYSQL_USERNAME¤"); define("MYSQL_PASSWORD","¤MYSQL_PASSWORD¤"); define("MYSQLDATABASENAME","¤MYSQL_DB_NAME¤"); define("MYSQL_HOSTNAME","¤MYSQL_HOSTNAME¤"); $mysqlConn = new mysqli(MYSQL_HOSTNAME, MYSQL_USERNAME, MYSQL_PASSWORD, MYSQLDATABASENAME, 3306); if ($mysqlConn->connect_errno) { echo "Failed to connect to MySQL: (" . $mysqlConn->connect_errno . ") " . $mysqlConn->connect_error; } $mysqlConn->query("SET NAMES 'utf8'");
Пример dev.myapp.conf
declare -A confs confs=( [¤SITE_TITLE¤]="MyAPP TestSite" [¤SITE_NAME¤]=myapptest [¤SITE_FQDN¤]=myapp.local [¤DEFAULT_FROM_EMAIL¤]=spam@stevnsvig.com [¤SESSION_NAME¤]=MyAppTestSession [¤MYSQL_HOSTNAME¤]=localhost [¤MYSQL_DB_NAME¤]=myappdb [¤MYSQL_USERNAME¤]=myappdbuser [¤MYSQL_PASSWORD¤]=0c5a1a783e45edsfsdf798sdfh943h59fd643yth943 ) DEPLOY_DIR=/d/Udvikling/MyApp GIT_BRANCH=development
0 ответов на вопрос
Похожие вопросы
-
9
В чем разница между командами "su -s" и "sudo -s"?
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
4
Каковы различия между основными дистрибутивами Linux? Я замечу?
-
-
2
Ограничить использование процессора для Flash в Firefox?
-
2
Как мне заставить мой микрофон работать под Debian GNOME?
-
2
Конки установки - образцы / идеи?
-
3
Каковы различия между оконными менеджерами Linux?
-
2
ThunderBird / Синхронизация освещения с SE k770i
-
4
Файловая система Linux
-
6
Полноэкранная медленная вспышка в KDE 4