Get Appointment

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅: Π·Π°Ρ‡Π΅ΠΌ Flask-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ CI/CD?

Flask – популярный Python-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для создания Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π§Ρ‚ΠΎΠ±Ρ‹ ваши прилоТСния Π±Ρ‹Π»ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ, быстро обновлялись ΠΈ бСзопасно Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π»ΠΈΡΡŒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° грамотная настройка CI/CD (нСпрСрывная интСграция ΠΈ доставка). Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассмотрим соврСмСнныС способы Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ процСссов для Flask-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с использованиСм GitLab CI, GitHub Actions ΠΈ Jenkins. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π΅Π»ΠΈΠ·Ρ‹, ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ошибки.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ бизнСсу Π²Π°ΠΆΠ½ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π΅ΠΏΠ»ΠΎΠΉ Flask?

  • Π‘ΠΎΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
  • Автоматизация тСстирования для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ.
  • Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ влияния чСловСчСского Ρ„Π°ΠΊΡ‚ΠΎΡ€Π° Π½Π° сборку ΠΈ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅.
  • Π›Ρ‘Π³ΠΊΠΎΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ.

GitLab CI для Flask: быстро ΠΈ Π³ΠΈΠ±ΠΊΠΎ

GitLab CI идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΊΠΎΠΌΠ°Π½Π΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ GitLab. Основой слуТит Ρ„Π°ΠΉΠ» .gitlab-ci.yml Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’ Π½Ρ‘ΠΌ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹: этапы сборки, тСстирования ΠΈ дСплоя.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°:

stages:
  - test
  - deploy

test:
  stage: test
  image: python:3.10
  script:
    - pip install -r requirements.txt
    - pytest

deploy:
  stage: deploy
  script:
    - ./deploy.sh
  only:
    - master

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° GitLab CI:

  • Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ ΠΈ issue-Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€ΠΎΠΌ.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Docker ΠΈ Kubernetes.
  • Гибкая настройка ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния.

GitHub Actions для Flask: автоматизация Π² ΠΎΠ±Π»Π°ΠΊΠ΅

GitHub Actions – соврСмСнноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ всСх этапов CI/CD нСпосрСдствСнно Π² GitHub. Настройка происходит Ρ‡Π΅Ρ€Π΅Π· YAML-Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΠ°ΠΏΠΊΠ΅ .github/workflows.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ workflow:

name: CI
on:
  push:
    branches: [ master ]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up Python
        uses: actions/setup-python@v2
        with:
          python-version: '3.10'
      - run: pip install -r requirements.txt
      - run: pytest

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° GitHub Actions:

  • БСсплатныС ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ для ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π².
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹ΠΌΠΈ сСрвисами.
  • Богатая экосистСма Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… Action’ов.

Jenkins для Flask: кастомныС ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹ любой слоТности

Jenkins – ΠΏΡ€ΠΈΠ·Π½Π°Π½Π½Ρ‹ΠΉ Π»ΠΈΠ΄Π΅Ρ€ Π² области CI/CD с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для слоТных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… особых сцСнариСв сборки ΠΈ дСплоя.

ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ инструкция ΠΏΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ:

  1. УстановитС Jenkins Π½Π° сСрвСр ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.
  2. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Jenkins Pipeline (Jenkinsfile) Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Flask-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  3. НастройтС этапы: установка зависимостСй, запуск тСстов, Π΄Π΅ΠΏΠ»ΠΎΠΉ прилоТСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Jenkinsfile:

pipeline {
  agent any
  stages {
    stage('Install') {
      steps {
        sh 'pip install -r requirements.txt'
      }
    }
    stage('Test') {
      steps {
        sh 'pytest'
      }
    }
    stage('Deploy') {
      steps {
        sh './deploy.sh'
      }
    }
  }
}

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Jenkins:

  • Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Π² интСграциях ΠΈ настройках.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ³ΠΎ количСства ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ слоТных ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠ².

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ инструмСнтов: Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для вашСго Flask-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°?

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈΠ‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΡΡ‚Ρ€ΠΎΠΉΠΊΠΈΠ‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ
GitLab CIВысокийБрСдняяБСсплатно для ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ…/ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎ для ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Ρ…
GitHub ActionsВысокийНизкаяБСсплатно для ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ…/Π»ΠΈΠΌΠΈΡ‚Ρ‹ для ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Ρ…
JenkinsΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉΠ’Ρ‹ΡΠΎΠΊΠ°ΡΠ‘Π΅ΡΠΏΠ»Π°Ρ‚Π½ΠΎ, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ сСрвСр

Π’Ρ‹Π±ΠΎΡ€ зависит ΠΎΡ‚ инфраструктуры, Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ бСзопасности, ΠΌΠ°ΡΡˆΡ‚Π°Π±Π° ΠΈ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ возмоТности: тСсты, Docker, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ

  • Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ статичСский Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π° (flake8, mypy) Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹.
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Docker-ΠΎΠ±Ρ€Π°Π·Ρ‹ для повторяСмости окруТСния.
  • Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΄Π΅ΠΏΠ»ΠΎΠΉ Π½Π° сСрвСры, Π² ΠΎΠ±Π»Π°ΠΊΠ° ΠΈΠ»ΠΈ Kubernetes.
  • НастройтС сСкрСты ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния для бСзопасной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌΠΈ ΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ.

Π’ΠΈΠΏΠΎΠ²Ρ‹Π΅ ошибки ΠΏΡ€ΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ настройкС CI/CD

  • ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ автоматичСских тСстов.
  • ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ этапов ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°.
  • НСдостаточная Π·Π°Ρ‰ΠΈΡ‚Π° сСкрСтных Π΄Π°Π½Π½Ρ‹Ρ….
  • НСоптимизированныС Docker-ΠΎΠ±Ρ€Π°Π·Ρ‹, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ врСмя сборки.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: ΠΊΠΎΠΌΡƒ Π΄ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ настройку CI/CD для Flask?

Автоматизация CI/CD – Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ шаг для соврСмСнных Flask-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π’Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ GitLab CI, GitHub Actions ΠΈ Jenkins зависит ΠΎΡ‚ Π²Π°ΡˆΠΈΡ… Π·Π°Π΄Π°Ρ‡. Грамотная настройка ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° позволяСт ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° ΠΈ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ Π΅Π³ΠΎ качСство.

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ эффСктивный CI/CD для вашСго Flask-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°? ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΌΠΎΡ‡ΡŒ – ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ здСсь!

Avatar
Raman Sapezhka

CEO Plantago/CTO