From dad398d17e5a726b50c1fe3ddc8b7c2ee80f16e2 Mon Sep 17 00:00:00 2001 From: Basyrov Rustam Date: Mon, 9 Jun 2025 16:38:53 +0300 Subject: [PATCH 1/7] remove migrate command --- Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 52cafbc..32bf32e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,8 +5,6 @@ RUN pip install --no-cache-dir -r requirements.txt COPY ./manage.py . -# RUN ./manage.py migrate - COPY docker-entrypoint.sh . EXPOSE 8000 From 3eda26838b7498eccc454a50d5217dcb5d72dddd Mon Sep 17 00:00:00 2001 From: Basyrov Rustam Date: Mon, 9 Jun 2025 16:38:56 +0300 Subject: [PATCH 2/7] add paths --- .github/workflows/docker-build.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/docker-build.yaml b/.github/workflows/docker-build.yaml index fb33147..294ba40 100644 --- a/.github/workflows/docker-build.yaml +++ b/.github/workflows/docker-build.yaml @@ -6,6 +6,9 @@ on: - main types: - closed + paths: + - './Dockerfile' + - './manage.py' jobs: build-and-push: From a28be75f300bb834a8c66bba79767e28286644e5 Mon Sep 17 00:00:00 2001 From: Basyrov Rustam Date: Mon, 9 Jun 2025 16:43:50 +0300 Subject: [PATCH 3/7] add README --- README.md | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9100c43..fc007cb 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,21 @@ # Django example app -Application made by django's instruction for **DevOps** education purposes +Пример веб-приложения из туториала по Django для изучения **DevOps**-практик. + +## Описание приложения + +Простое приложение для голосования. В данный момент есть только одно +голосование: "Will it work?", с двумя вариантами ответа "Yes" и "No". + +Приложение запаковано в docker-образ и доступно в +[DockerHub](https://hub.docker.com/r/wtukatyr/django-example-app). + +## Пайплайн + +Пайплайн состоит из трех сегментов. + +1. CI-сегмент с проверками кода ([YML-файл](./.github/workflows/ci.yml)). +2. Сегмент со сборкой образа Docker и пушем в DockerHub ([YML-файл](./.github/workflows/docker-build.yaml)). +3. Сегмент с деплоем на сервер с помощью Jenkins ([YML-файл](./.github/workflows/jenkins-deploy.yml)). -# Pylint -![pylint](https://img.shields.io/badge/PyLint-6.22-orange?logo=python&logoColor=white) From 80de812d5d58349d0d31a0086fbbf675dcb28454 Mon Sep 17 00:00:00 2001 From: Basyrov Rustam Date: Mon, 9 Jun 2025 16:58:45 +0300 Subject: [PATCH 4/7] rename message --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 22d0337..6125abc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,7 +50,7 @@ jobs: to: ${{ secrets.TELEGRAM_TO }} token: ${{ secrets.TELEGRAM_TOKEN }} message: | - PyTest success + Workflow failed Commit message: ${{ github.event.commits[0].message }} Repository: ${{ github.repository }} See changes: https://github.com/${{ github.repository }}/commit/${{github.sha}} From c2894166e3654b7f7278b4014b7dcd9e0a8443a1 Mon Sep 17 00:00:00 2001 From: Basyrov Rustam Date: Mon, 9 Jun 2025 16:58:51 +0300 Subject: [PATCH 5/7] add some info --- README.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/README.md b/README.md index fc007cb..48f8bd8 100644 --- a/README.md +++ b/README.md @@ -18,4 +18,36 @@ 2. Сегмент со сборкой образа Docker и пушем в DockerHub ([YML-файл](./.github/workflows/docker-build.yaml)). 3. Сегмент с деплоем на сервер с помощью Jenkins ([YML-файл](./.github/workflows/jenkins-deploy.yml)). +### CI-сегмент +Этот пайплайн срабатывает, если открывается pull-request в ветку **main**. + +Порядок действий: + +1. Получение кодовой базы (*checkout*). +2. Проверка синтаксиса и его рекомендаций в Dockerfile, с помощью `hadolint`. +3. Проверка синтаксиса кода с помощью *pylint*. +4. Установка python и зависимостей для него (см. файл + [requirements.txt](./requirements.txt)) +5. Запуск тестов с помощью *pytest*. +6. В случае провала любого из предыдущих этапов отправляется + уведомление в телеграме. +7. В случае успеха, также отправляется сообщение в телеграме. + +### Docker build and push + +Этот пайплайн собирает образ Docker и пушит его в DockerHub в случае если +pull-request закрыт и в нем были затронуты файлы *Dockerfile* и *manage.py*. + +### Jenkins Deploy + +Этот пайплайн деплоит приложение на сервер. Он запускается только если +успешно сработал предыдущий workflow. + +Пайплайн состоит из двух частей: + +- [Workflow-файла](.github/workflows/jenkins-deploy.yml), который триггерит + работу Jenkins с помощью `curl` и API. +- [Jenkinsfile](Jenkinsfile), в котором описана процесс деплоя. Он состоит в + том, чтобы подключиться к серверу, зайти в нужную папку и выполнить ряд + комманд (`git pull`, `docker compose pull` и пр.). From 47d8e92dfd7361d09382aa7f41802b5b4f1a1a06 Mon Sep 17 00:00:00 2001 From: Basyrov Rustam Date: Mon, 9 Jun 2025 16:59:24 +0300 Subject: [PATCH 6/7] remove empty line --- Jenkinsfile | 1 - 1 file changed, 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 01539aa..b2aa2b3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,7 +1,6 @@ pipeline { agent any - stages { stage('Hello') { steps { From 347871e643811fbf6b6a1159cbd553ed02f4cce2 Mon Sep 17 00:00:00 2001 From: Basyrov Rustam Date: Mon, 9 Jun 2025 17:02:20 +0300 Subject: [PATCH 7/7] add pylint badge --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 48f8bd8..c383741 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ Пример веб-приложения из туториала по Django для изучения **DevOps**-практик. +![pylint]() + ## Описание приложения Простое приложение для голосования. В данный момент есть только одно