Если вы открываете другое решение, которое я предлагаю использовать fabric (fabfile), я приведу вам пример:создайте .env.default с переменной типа:
DB_CONNECTION=mysql
DB_HOST=%(HOST)s
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=%(USER)s
DB_PASSWORD=%(PASSWORD)s
После установки фабрики добавьте fabfile в каталог вашего проекта:
from fabric.api import env , run , put
prod_env = {
'name' : 'prod' ,
'user' : 'user_ssh',
'deploy_to' : '/path_to_project',
'hosts' : ['ip_server'],
}
def set_config(env_config):
for key in env_config:
env[key] = env_config[key]
def prod():
set_config(prod_env)
def deploy(password,host,user):
run("cd %s && git pull -r",env.deploy_to)
process_template(".env.default",".env" , { 'PASSWORD' : password , 'HOST' : host,'USER': user } )
put( ".env" , "/path_to_projet/.env" )
def process_template(template , output , context ):
import os
basename = os.path.basename(template)
output = open(output, "w+b")
text = None
with open(template) as inputfile:
text = inputfile.read()
if context:
text = text % context
#print " processed \n : %s" % text
output.write(text)
output.close()
Теперь вы можете запустить локальный тестовый скрипт:
fab prod deploy: пароль = "pass", user = "user", host = "host"
Он развернет проект на вашем сервере и проверит, обрабатывает ли он .env
Если работает сейчас настало время для gitlab ci, это пример файла:
image: python:2.7
before_script:
- pip install 'fabric<2.0'
# Setup SSH deploy keys
- 'which ssh-agent || ( apt-get install -qq openssh-client )'
- eval $(ssh-agent -s)
- ssh-add <(echo "$SSH_PRIVATE_KEY")
- mkdir -p ~/.ssh
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
deploy_staging:
type: deploy
script:
- fab prod deploy:password="$PASSWORD",user="$USER",host="$HOST"
only:
- master
$ SSH_PRIVATE_KEY, $ PASSWORD, $ USER, $ HOST - переменная средыgitlab, вы должны добавить закрытый ключ $ SSH_PRIVATE_KEY, который имеет доступ к серверу.
Надеюсь, я не пропущу ни шагу.