diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..216d6d4 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,49 @@ +variables: + SERVER_URL: "go.skillbox.ru" + DOMAIN: "$CI_BUILD_REF_SLUG.$SERVER_URL" + GIT_DEPTH: "1" + +types: + - deploy_branch + - deploy_production + +deploy_branch: + stage: deploy_branch + script: + - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' + - 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' + - ~/.composer/vendor/bin/envoy run deploy --cleanup --branch="$CI_BUILD_REF_SLUG" + environment: + name: production + url: https://go.skillbox.ru + + variables: + GIT_DEPTH: "1" + +# when: manual + only: + - dev + - autodeploy + +deploy_production: + stage: deploy_production + script: + - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' + - 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' + - ~/.composer/vendor/bin/envoy run deploy --cleanup --branch="$CI_BUILD_REF_SLUG" + environment: + name: production + url: https://go.skillbox.ru + + variables: + GIT_DEPTH: "1" + + when: manual + only: + - master \ No newline at end of file diff --git a/Envoy.blade.php b/Envoy.blade.php index db4f6be..b0de027 100644 --- a/Envoy.blade.php +++ b/Envoy.blade.php @@ -1,15 +1,16 @@ @servers(['localhost' => 'deployer@192.168.0.13']) @setup - $repository = 'ssh://git@g.skillbox.ru:22004/kor_a_m/lms-front.git'; + $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/'; + $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 + run_tests update_symlinks deployment_option_cleanup @endstory @@ -24,10 +25,21 @@ echo '{{ $new_release_dir }}' @endif @endtask +@task('run_tests', ['on' => 'localhost']) +echo '>> Запускаем тесты' +@if ($branch) + cd {{ $new_release_dir }} + source /www/servers/python-server/bin/activate && python manage.py test +@endif +@endtask + @task('update_symlinks', ['on' => 'localhost']) @if ($branch) -echo '>> Создаем симлинк на папку текущего релиза' -ln -nfs {{ $new_release_dir }} {{ $app_dir }}/current_{{ $branch }} + ln -nfs {{ $new_release_dir }}/lms/wsgi.py {{ $app_dir }}/configs/{{ $branch }}/wsgi.py + echo '>> Создаем симлинк на папку текущего релиза' + ln -nfs {{ $new_release_dir }} {{ $app_dir }}/current_{{ $branch }} + echo '>> restart Supervisor' + supervisorctl restart {{ $branch }}: @endif @endtask diff --git a/README.md b/README.md index c392986..0b4e369 100644 --- a/README.md +++ b/README.md @@ -11,4 +11,4 @@ 4 cd skill-back 5 pip install -r requirements.txt 6 python manage.py test - +7 python manage.py runserver diff --git a/access/urls.py b/access/urls.py index 4e8aef6..75ef29a 100644 --- a/access/urls.py +++ b/access/urls.py @@ -4,6 +4,8 @@ import progress.views from access import views urlpatterns = [ + url(r'progress_detail/(?P[0-9A-Fa-f-]+)/$', progress.views.CourseProgressUserView.as_view()), + url(r'progress_dynamic/(?P[0-9A-Fa-f-]+)/$', progress.views.CourseProgressDynamicView.as_view()), url(r'teachers/$', views.TeacherListView.as_view()), url(r'detail/(?P[0-9A-Fa-f-]+)/$', views.DetailUserView.as_view()), url(r'detail/$', views.DetailUserView.as_view()), @@ -16,6 +18,4 @@ urlpatterns = [ url(r'logout/$', views.LogoutView.as_view()), url(r'reset/$', views.ResetPasswordView.as_view()), url(r'progress_detail/upload/(?P[0-9A-Fa-f-]+)/$', progress.views.UploadCourseProgressUserView.as_view()), - url(r'progress_detail/(?P[0-9A-Fa-f-]+)/$', progress.views.CourseProgressUserView.as_view()), - url(r'progress_dynamic/(?P[0-9A-Fa-f-]+)/$', progress.views.CourseProgressDynamicView.as_view()), ] \ No newline at end of file diff --git a/access/views.py b/access/views.py index d3c8a87..cfcaed5 100644 --- a/access/views.py +++ b/access/views.py @@ -158,8 +158,8 @@ class DetailUserView(APIView): return Response(serialized_user, status=200) @staticmethod - def get(request, pk=None): - if pk is None: + def get(request, out_key=None): + if out_key is None: if request.user.is_authenticated(): serialized_user = UserSelfSerializer(request.user).data serialized_user['is_i'] = True @@ -167,10 +167,10 @@ class DetailUserView(APIView): return Response('anonymous', status=200) if request.user.is_authenticated() and request.user.is_superuser \ - or request.user.is_staff or request.user.out_key == pk: + or request.user.is_staff or request.user.out_key == out_key: try: - user = get_user_model().objects.get(out_key=pk) + user = get_user_model().objects.get(out_key=out_key) except get_user_model().DoesNotExist: return Response("User doesn't exist", status=404) diff --git a/lms/wsgi.py b/lms/wsgi.py deleted file mode 100644 index 5e9e9dc..0000000 --- a/lms/wsgi.py +++ /dev/null @@ -1,7 +0,0 @@ -import os - -from django.core.wsgi import get_wsgi_application - -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") - -application = get_wsgi_application()