@servers(['localhost' => 'deployer@192.168.0.13']) @setup $repository = 'ssh://git@g.skillbox.ru:22004/kor_a_m/skill-back.git'; $releases_dir = '/www/site/back_go.skillbox.ru/releases'; $app_dir = '/www/site/back_go.skillbox.ru'; $release = date('YmdHis'); $new_release_dir = $releases_dir .'/'. $release . '_' . $branch; @endsetup @story('deploy', ['on' => 'localhost']) clone_repository create_symlinks install_req run_tests update_symlinks deployment_option_cleanup @endstory @task('clone_repository', ['on' => 'localhost']) echo '>> Клонируем репозиторий' echo '{{ $new_release_dir }}' [ -d {{ $releases_dir }} ] || mkdir {{ $releases_dir }} @if ($branch) git clone -b {{ $branch }} {{ $repository }} {{ $new_release_dir }} @endif @endtask @task('create_symlinks', ['on' => 'localhost']) echo '>> Создание симлинков' ln -s {{ $app_dir }}/configs/master/ssl {{ $new_release_dir }}/ssl @if ($branch == 'master') ln -nfs {{ $app_dir }}/configs/master/prod.env {{ $new_release_dir }}/config_app/settings/local.env ln -nfs {{ $app_dir }}/media/master {{ $new_release_dir }}/media @endif @if ($branch == 'dev') ln -nfs {{ $app_dir }}/configs/dev/dev.env {{ $new_release_dir }}/config_app/settings/local.env ln -nfs {{ $app_dir }}/media/master {{ $new_release_dir }}/media @endif ln -nfs {{ $app_dir }}/logs/{{ $branch }} {{ $new_release_dir }}/logs @endtask @task('install_req', ['on' => 'localhost']) echo '>> Подтягиваем зависимости' @if ($branch) cd {{ $new_release_dir }} source /env/bin/activate && pip install -r requirements.txt @endif @endtask @task('run_tests', ['on' => 'localhost']) echo '>> Запускаем тесты' @if ($branch) cd {{ $new_release_dir }} source /env/bin/activate && python manage.py test @endif @endtask @task('run_migrate', ['on' => 'localhost']) echo '>> Запускаем миграции' @if ($branch) cd {{ $new_release_dir }} source /env/bin/activate && python manage.py migrate @endif @endtask @task('update_symlinks', ['on' => 'localhost']) @if ($branch) ln -nfs {{ $app_dir }}/configs/{{ $branch }}/wsgi.py {{ $new_release_dir }}/lms/wsgi.py echo '>> Создаем симлинк на папку текущего релиза' ln -nfs {{ $new_release_dir }} {{ $app_dir }}/current_{{ $branch }} echo '>> restart Supervisor' supervisorctl restart {{ $branch }}: @endif @endtask @task('deployment_option_cleanup') cd {{ $releases_dir }} @if ( isset($cleanup) && $cleanup ) find . -maxdepth 1 -name "20*{{ $branch }}" -mmin +30 | head -n 3 | xargs rm -Rf echo "Cleaned up old deployments" @endif @endtask