まあ私はgitlabについて知らないし、基本的にはサーバー上のあなたの設定に欠けているものはすべてあるが、gitリポジトリにgitフックを設定することができる。
ここでは、サンプルdjangoプロジェクトをデプロイするための受信後フックの例を示します。考慮すべきいくつかの事
#!/bin/bash
while read oldrev newrev ref
do
if [[ $ref =~ .*/master$ ]];
then
echo "master branch received, deploying..."
GIT_WORK_TREE="/PATH/TO/DJANGO/PROJECT" git checkout -f master > /dev/null
source /PATH/TO/DJANGO/VIRTUAL/ENVIRONMENT/bin/activate > /dev/null
echo "installing new pip dependencies..."
pip install -r /PATH/TO/DJANGO/PROJECT/dependencies.txt > /dev/null
echo "applaying new db migrations..."
python /PATH/TO/DJANGO/PROJECT/manage.py migrate_schemas > /dev/null
deactivate > /dev/null
touch /PATH/TO/DJANGO/PROJECT/PROJECT_NAME/wsgi.py > /dev/null
echo "Sever code reloaded."
else
echo "Received branch $ref, not deploying."
fi
done
ので:
- このスクリプトはgitrepo.git /フック/ポストrecive
- 上に配置されているファイル、ポストreciveは実行可能でなければなりません
chmod +x FILE_NAME
- それあなたが仮想環境を持っていると仮定します。
- は、それはあなたがレポと呼ばれるdependencies.txt上のファイルを持っていると仮定し、あなたは実行中のApacheの場合は、コードをリロードします
pip freeze > dependencies.txt
(ノート、ファイルのすべてがサーバー上insatledされます)
- 注
touch wsgi.py
とそれを生成することができますデーモンモード(more info)
プロしてくださいクローンされたファイルのリストを表示して、実際に何が落ちたのかを知ることができます。 –