Рубрики
Без рубрики

Введение в CI / CD с Trvis CI и Python

Автоматизируйте скучные вещи с непрерывной интеграцией (CI), непрерывное развертывание (CD) I F … с учетом учебника, Python, тестированием.

Автоматизировать скучные вещи с непрерывной интеграцией (CI), непрерывное развертывание (CD)

Я впервые узнал о TRAVIS-CI путем выдвижения в Github для оформления нескольких проектов с открытым исходным кодом. Я видел, как у них есть непрерывные рабочие процессы интеграции, создают тестируйте свой код на каждом филиале, филиал и запросе на потяну.

Что казалось таким удобным Поэтому я ушел, чтобы попробовать это сам. Я документировал то, что я узнал ниже, чтобы помочь вам начать!

Выбор непрерывной службы интеграции

Что рассмотреть при создании Python3 CI/CD-трубопровода

  • Сообщество Python на Github – Поддержка всех версий Python3 🐍.
  • Выберите рамки тестирования – Используйте его с любыми популярными тестирующимися каркасами: Pтойца, в нетестые и т. Д.
  • Открыто против закрытого источника – Я рекомендую по возможности выбрать вариант открытого исхода. Поставщики ниже, как правило, предлагают варианты нулевых затрат для новых проектов с открытым исходным кодом с разумными строгами 🛠 ограничения. Если вы пойдете к закрытому источнику, вам потребуется вилочка над некоторыми 💵.

Общие провайдеры

  • TRAVIS-CI – Мой первый и служил мне хорошо
  • Круг CI – Кажется, имеет небольшой синтаксис Sharer и более тонкой конфигурации относительно TRAVIS-CI
  • Gitlab – наклоняется открытым источником, где другие являются закрытыми источниками
  • Действия GitHub – Новее, уроженец для GitHub и предлагает Linux, Windows и MacOS.

Мое обучение началось с Travis-CI и использую его, так как я знаком с ним. Я не сделал подробное сравнение инструментов, и он соответствует потребностям простых проектов Python CI/CD. Я хочу посмотреть на действия GitHub, теперь, когда он выходит из бета.

Вы можете использовать то, что вы предпочитаете, чувствовать себя правильно или хотелось бы начать с. Эта статья не является сравнением, а скорее введение в то, как выглядит процесс с одним сервисом CI.

Начните маленьким и создайте то, что вы узнаете. Вы сделаете прогресс, столкнулись с проблемами, познакомится с некоторыми. Не забудьте спать !!!! Фото кредит: 4Geeksacademy.co/feelings-learning-coding/

Это тревога, вознаграждение, а иногда и стрессовый день в день. 😬

На вашем пути нет неправильного варианта, чтобы узнать больше об этих инструментах и процессе. Где вы начинаете, не должен быть там, где вы находитесь в будущем. Моя рекомендация заключается в том, что вы выбираете один, не подумайте об этом, и получите его и работаю!

Поместите свою работу там и подключитесь с другими. Вам не нужно создавать что-то с нуля. Вы можете помочь вашим любимым существующим проектам настроить или улучшить свой CI/CD-трубопровод. Лучше, когда мы строим вместе. 🌎🌈🌍🚀🌏.

Соединения знаний, и вы будете поражены там, где вы скоро. 🗺️. 🚀 💻.

Предварительные условия

У вас должны быть базовые знания о Github, Python, Frameworks, и как использовать Терминал Отказ Знание Pipenv (Pipfiles) и Pтойца – это плюс, но не требуется. Инструменты CI/CD – отличный способ изучить оба. Мы также создадим учетную запись TRAVIS-CI.

Основы ЯМЛ

Большинство услуг CI взаимодействуют с вашими репозиториями, используя файл конфигурации YAML.

Если вам нужна настройка на Ямл Вот рекомендуемая ссылка:

Примечание: Anisible использует формат YAML и является еще одним полезным инструментом. Более подробное руководство – это поощрение поощрению в другое время.

Travis-Ci Yaml Пример

Вот полный пример .travis.yml Файл из одного из моих проектов. Мы сломаем каждый раздел.

# .travis.yml

dist: xenial

language: python

cache: pip

python:
    - "3.6"
    - "3.7"
    - "3.8"
    - "nightly"

matrix:
    allow_failures:
        - python: "nightly"

install:
    - pip install pipenv --upgrade-strategy=only-if-needed
    - pipenv install --dev

script:
    - bash scripts/test.sh

after_script:
    - bash <(curl -s https://codecov.io/bash)

Давайте объясним каждый раздел

dist: xenial

Dist где указан кодовое управление высвобождение Ubuntu. Ксениал Ubuntu 16.04 LTS CodeName – см.: http://releaseest.ubuntu.com/ для полного списка.

Это указывает базовую операционную систему, используемую для остальной части рабочего процесса.

language: python

Язык Используется ли язык программирования. Этот учебник использует Python, но это очень хорошо может быть потрясающий , идти , ржавчина , так далее.

cache: pip

кэш Позволяет хранить версии пакета Python, чтобы сохранить между прогонами, чтобы ускорить последовательные сборки. Кэш может применить к более чем просто пакетам Python.

python:
    - "3.6"
    - "3.7"
    - "3.8"
    - "nightly"

Python Учитывая описание вышеуказанного языка, является ключом для последовательности версий Python для выполнения наращиваний. Как правило, большинство инструментов CI используют последнюю версию выпуска ошибки для каждой второй версии. Журналы сборки скажут вам конкретные версии.

matrix:
    allow_failures:
        - python: "nightly"

Матрица Позволяет модификации в вышеупомянутой последовательности сборки. В этом случае ключ «Разрешения» определяет ссылку на Python последовательность выше, и имеет значение «Ночной» , что означает, что эта версия разрешена потерпеть неудачу. Подумайте об этом как о раннем обнаружении и будущем развитии Python. * Примечание: также есть также версии для разработки каждой версии Python, например "3.8-dev" Отказ Они используются, когда версия Python находится в отпуске кандидата или бета-этапов.

install:
    - pip install pipenv --upgrade-strategy=only-if-needed
    - pipenv install --dev

Установить является первым разделом, который выполняется внутри каждого из целей сборки (виртуальные среды для каждого из версий Python выше).

Каждый элемент в последовательности выполнен чтобы!

Пипенв и Pipfiles.

В этом примере мы используем Пипнв и а Pipfile Отказ

Большинство PipFiles имеют производственные зависимости и зависимости развития. Вы часто найдете пакеты, необходимые для запуска тестовых чехлов или создают документацию под dev-packages раздел. Ниже приведен пример:

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]
mypy = "*"
black = "*"
jupyter = "*"
better-exceptions = "*"
pytest = "*"
pytest-cov = "*"
isort = "*"
flit = "*"
autoflake = "*"
mkdocs = "*"
mkdocs-material = "*"

[packages]
pydantic = "==0.32.2"

Команда PIP Установить --dev Устанавливает все пакеты под [Пакеты] и [dev-packages] Отказ PIP Установить только установит пакеты под [Пакеты] Отказ

Требования.txt файлы

Примечание: также обычно использовать пипс с А. требования файл.

pip install -r requirements.txt

Python.org теперь рекомендует Пипнв Как часть его общего Рекомендации инструмента Отказ

Необязательно в сторону О различных вариантах виртуальной среды

Пипнв Имеет преимущество в обеспечении механизма установки ваших пакетов в виртуальную среду без другого пакета. Есть много альтернативы – один простой альтернавность венчание .

Более новая альтернатива Поэзия ( https://poetry.eustace.io/ ). Поэзия Целью для облегчения того, какие как требования. atxt, и Pipfiles не пут, и это выделяют зависимости при развертывании к Pypi. Вы обычно видите Flit и а pyproject.toml Файл или setup.py Файл с избыточной информацией о функционале. Это избыточность – это то, что Поэзия стремится к улучшению.

Теперь давайте поможем вам получить настройку CI/CD

1. Получить настройку, чтобы установить шаблон проекта Pathon Package Pathon

Убедитесь, что у вас есть совместимая среда Python 🐍 на вашем компьютере.

python3 --version
python3 -m pip --version
python3 -m pytest --version

Если вы отсутствуете ни одно из вышеперечисленного, вы можете добавить пакеты в основной установку Python.

Рекомендуемое чтение на Python Главная установка против Altinstall Отказ Если у вас есть только или хотите только одну версию Python3 на вашем компьютере, нет никакого вреда для выполнения следующих команд. Существуют нюансы между версиями Ubuntu (16,04 против 18,04 против последних), на которых версия Python3 – установка по умолчанию.

sudo apt-get update
sudo apt-get install python3-pip
sudo apt-get install python3-pytest

Теперь, когда мы подтвердили вашу базовую настройку Python, давайте продолжим и убедитесь, что Pipenv и Pubenecutter Python Packages установлены.

python3 -m pip install --user pipenv
python3 -m pip install --user cookiecutter

2. Создайте проект Python и настроить виртуальную среду Pipenv

# make sure your path finds --user installs

## add `export PATH="$HOME/.local/bin:$PATH"` 
## to your ~/.bashrc, ~/.zshrc file on linux

cookiecutter https://github.com/iancleary/pypackage
# For the sake of brevity, repos on GitHub can just use the 'gh' prefix
cookiecutter gh:iancleary/pypackage

`

Заполните волшебник!

Использовать CD New-Directory Чтобы изменить в новый каталог, который вы только что создали (замените New-Directory )

Беги Пипнв отображать его варианты. Посмотрите, что предлагается.

Далее запустить Pipenv Установить --dev Чтобы установить продукцию и зависимость от разработки, указанные в Pipfile Отказ

Беги Pipenv Shell загрузить виртуальную среду.

3. Запустите тесты локально и убедитесь, что они проходят

Я рекомендую вам открыть VS-код или ваш текстовый редактор выбора для просмотра структуры папки

Выполнить ./scripts/tests.sh изнутри в каталоге Pipenv.

Эта команда выполняет сценарий Bash, который делает несколько вещей:

  • бежит pteest Чтобы проверить тестовые случаи и проверять тестовое покрытие
  • Проверяет форматирование с черный упаковка
  • Запускает статический тип проверки на вашу кодовую базу с майка
  • Проверяет сортировку импорта из Standard Lib, вашего приложения и Пользовательские пакеты

Это все вещи, которые должны быть отправлены в скрипты, чтобы позволить вам освободить свой разум от простого форматирования и других дренажных задач. Пусть это сделает это для вас!

4. Нажмите каталог на удаленный GIT REPO

Я рекомендую вам следовать руководству по странице справки GitHub:

5. Подключите TRAVIS-CI к репо

Опять же, документация как GitHub, так и Travis-Ci приятно следовать за этот шаг.

Перейти к TRAVIS-CI И войти в систему с вашей учетной записью GitHub:

После входа в Trvis-CI и включите доступ GitHub, вы захотите настроить TRAVIS с страницы настроек GitHub.

6. Теперь мы настроены, давайте начнем сборку

Сделайте простое изменение в REPO, либо Commit, либо откройте новую ветвь, чтобы начать сборку!

Возьмите свой 🍿 и давайте посмотрим, как запуск процесса CI начнутся! 😎

Это очень круто, чтобы посмотреть процесс. Ключ для запоминания – это повторяемость тестового набора.

После завершения вы добавите свой новый проект в приборную панель TRAVIS-CI. Три красных ящика ниже:

  1. Подключенный репо, который в настоящее время выбран.
  2. Действие, которое начало сборку (запрашивать или потянуть запрос)
  3. Матрица сборки визуализирована со ссылками для просмотра более подробной информации.

7. Счастливое кодирование с кондиционерами CI/CD 🎉🙌

Ваша настройка должна дать вам уверенность в том, что код будет работать в этих условиях. Если это REPO с открытым исходным кодом, нет вашего слова для него. Журналы там правы!

Вы не захотите вернуться в свою жизнь до этого! Это такое улучшение качества!

Куда пойти отсюда?

  • Начните выгружать и автоматизировать ваши тестирование, развертывание и другие виды деятельности. Есть так много возможностей связать в разных крючках или особенностях, это только начало.

Некоторые примеры того, что еще вы можете автоматизировать

Pypi Publishing

Я еще не сделал много в этом пространстве, но я видел другие проекты успешно использовать Flit Пакет Python.

Если это ваш следующий шаг, оформить заказ Flit Отказ Я знаю, что есть некоторые другие хорошие учебники, чтобы начать работу внутри и снаружи трубопровода CI/CD.

Jupyter Ноутбук Развертывание изображения с CI/CD в Docker Hub

Я использовал ноутбуки Jupyter и Docker более и совсем недавно. Я значительно улучшил модель обслуживания моего личного изображения, создавая автоматизированное тестирование и развертывание трубопровода, используя TRAVIS CI. Проверьте мой Личный ноутбук Jupyter Репозиторий!

Оформить заказ Докерный образ IANCLEAREARY/Personal-Notebook Отказ

башмак Docker Pull Iancleary/Personal-Notebook

Развертывание экземпляра Amazon EC2

Я также в процессе обучения, как использовать постоянное развертывание на экземпляры Amazon EC2.

Вы можете найти мои заметки на Подключение AWS CODDEDEDOLD и TRAVIS CI Использование в колбе проекта.

Этот пример является доказательством концепции, и я рад использовать этот рабочий процесс больше в будущем.

использованная литература

  • Я многому научился от https://github.com/tiangolo/fastapi и зачислять их как авторы в моем питьере Cookicutter Авторы. Мд Отказ Это не только приятно делать, но требуется многие лицензии с открытым исходным кодом.

Оригинал: “https://dev.to/iancleary/an-introduction-to-ci-cd-with-travis-ci-and-python-3025”