Эта статья была первоначально опубликована на Circleci’s блог Стэнли Ндаги
Непрерывная интеграция (CI) включает в себя автоматизацию тестирования фиксированных ветвей, прежде чем они объединены в основной филиал Git в проекте. Это гарантирует, что кодовая база не обновляется с изменениями, которые могут что-то сломать. Непрерывная доставка (CD), с другой стороны, опирается на CI путем автоматизации выбросов этих ветвей и/или основной ветви. Это позволяет небольшим дополнительным обновлениям достичь ваших пользователей быстрее, в соответствии с философией развития программного обеспечения Agile.
В этой статье я возьму вас через настройку CI с GitHub. Мы будем использовать приложение Python, чтобы продемонстрировать наш трубопровод CI.
Вот шаги, которые мы возьмем:
- Создайте простое приложение Python (с колбой)
- Создание тестов для этого приложения
- Добавьте
config.yml
файл - Нажмите на Github
- Настроить Circleci
- Обновите наш
Readme
со значком - Создайте PR и увидеть Circleci в действии
Создание простого приложения Python
Предварительные условия
Если у вас не установлен Python, следуйте инструкциям здесь для вашей локальной системы. Установка Python поставляется с пипс
(PYPA рекомендуется инструмент для установки пакетов Python).
Создание приложения
Для простоты, с точки зрения наименьших линий кода, мы создадим приложение Flask. Flask — это микроразрушение для Python. Для наших упражнений необходимо мало знаний о структуре. Мы будем использовать пример найден здесь Отказ
Во-первых, создайте каталог проекта (папку) и CD
внутрь. Введите это в терминал:
mkdir python_app && cd $_/
Далее откройте свой любимый редактор и создадите Hello.py
файл. Затем скопируйте следующие строки в этот файл:
from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!"
Виртуальные среды в Python
При работе в Python настоятельно рекомендуется использовать виртуальную среду. Это позволяет устанавливать пакеты Python в абстрактную среду, которая не является вашей локальной машиной. Некоторые распространенные способы сделать это, должны использовать Виртуальский
или, даже лучше, VirtualenVwrapper
. Мы будем использовать модуль Венв
Это приходит как часть Python3. Вот как это сделано:
- Создать виртуальную среду:
python3 -m venv venv
(Обратите внимание, что мы можем использовать другие имена для нашей виртуальной среды, например, в следующем примере.)
python3 -m venv Env
- Активируйте эту среду:
source venv/bin/activate
(Заменить Venv Если вы использовали другое имя для окружающей среды)
Вы заметите (Венв)
Незадолго до подсказки снаряда говорят вам, что виртуальная среда активна. Установлен любой пакет Python, который установлен, будет установлен в этой среде. Чтобы деактивировать эту среду просто запустить:
deactivate
Запуск приложения
Теперь давайте создадим требования .txt
Файл в нашем редакторе. Добавить слово Колбу
в файл и сохранить его.
Flask
Затем в виртуальной среде установите пакет за счет работы:
pip install -r requirements.txt
Последняя команда для запуска этого приложения:
FLASK_APP=hello.py flask run
Вы можете увидеть приложение, запущенное в вашем браузере в http://localhost: 5000/ Отказ
Тесты
В вашем редакторе создайте Tests.py
Файл и вставьте эти строки в него:
from hello import app with app.test_client() as c: response = c.get('/') assert response.data == b'Hello World!' assert response.status_code == 200
Пожалуйста, смотрите эти ссылки для получения дополнительной информации о тестах:
Теперь давайте запустим наш тест. Откройте терминал и запустить:
python3 tests.py
Ничего не должно быть возвращено в наш терминал. Почему? Причина в том, что мы структурировали наше приложение для колб, чтобы он не выводил на терминал на проход. Это означает, что наши тесты проходят. Упомянутые выше ресурсы дают лучшие примеры терминала UX (пользовательский опыт) на тесты, проходящие и неудачу, но это будет достаточно для нашего дела.
Circleci Config файл
Создать .circleci
папка и внутри этого создают config.yml
файл. Затем скопируйте эти строки в него:
version: 2 jobs: build: docker: - image: circleci/python:3.6 steps: - checkout - restore_cache: key: deps1-{{ .Branch }}-{{ checksum "requirements.txt" }} - run: command: | python3 -m venv venv . venv/bin/activate pip install -r requirements.txt - save_cache: key: deps1-{{ .Branch }}-{{ checksum "requirements.txt" }} paths: - "venv" - run: name: Running tests command: | . venv/bin/activate python3 tests.py - store_artifacts: path: test-reports/ destination: python_app
Для получения дополнительной информации относительно этого config
Файл, см.: https://circleci.com/docs/2.0/language-python/ Отказ
Толкая в Github
Мы должны иметь инициализированные Git ранее и имели атомные коммиты (философия совершения вашего кода рано и часто). Однако, поскольку этот учебник о интеграции Circleci и GitHub, я намеренно положил его на удержание до сих пор.
Наша текущая структура кода выглядит так:
Откройте свой редактор и создайте .gitignore
Файл в рабочем каталоге, чтобы утвердить, какие файлы и папки, которые мы Не хочу посвятить Git. Скопируйте следующие строки в этот файл:
# Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] # Virtualenv venv/*
Теперь мы собираемся совершить наш код, запустив следующие команды:
git add .
git commit -m "Initial commit"
Перейти к https://github.com И создать учетную запись GitHub, если у вас его еще нет. Затем создайте репозиторий.
После создания нового репозитория вы попадете на страницу, подобную этой:
Мы пойдем со вторым вариантом, … толкнуть существующий репозиторий Отказ Запустить:
git remote add origin https://github.com/NdagiStanley/python_app.git git push -u origin master
Настройка circleci.
Теперь, когда REPO находится на GitHub, мы можем доработать CI, настроив CIRCLECI.
Наверь на https://circleci.com/ Отказ Затем нажмите Зарегистрироваться в правом верхнем углу.
Зарегистрируйтесь на Circleci с вашей учетной записью GitHub.
Как только вы вошли в систему, убедитесь, что ваш личный аккаунт GitHUB активен. Если вы находитесь в нескольких организациях GitHub, один из них может быть активен. Просто нажмите на раскрывающееся меню (вверху слева) и выберите имя пользователя GitHub. Затем нажмите Добавить проекты Отказ На самом недавнем проекте «Python_app» появляется там.
Нажмите Настроить проект На правой стороне ряда включает в себя наш проект. На перенаправленной странице вы заметите Следующие шаги раздел. У нас не было нашего собственного .circleci/config.yml
Файл, мы бы начали на № 1 Отказ Нам просто нужно прокрутить до № 5 и нажмите Начать строительство Отказ
В течение не времени на сборку проходит сборку. Это успешно!
В правом верхнем углу нажмите Настройки господствовать Затем нажмите Проекты Слева и, наконец, python_app Отказ
Вы будете на пути, как этот: circleci.com/gh/g/
Отказ Мой это https://circleci.com/gh/ndagistanley/python_app
Отказ Нажмите на Настройки COG рядом с именем репо: python_app Отказ
Важно, чтобы вы познакомились с настройками, которые вы можете изменить для этого проекта. Я прикоснусь к тому, что имеет отношение к нам сейчас.
В Расширенные настройки , обратите внимание, что Только построить запросы на потяжку выключен. Это означает, что каждый толчок в GitHub будет работать на Circleci, включая PRS.
В Уведомления об чате , Обратите внимание, что вы можете настроить патку, Hipchat, FlowDock, Camsfire и IRC, чтобы быть уведомлены в каждой сборке. Для слабых, Это Ресурс удобный.
В Значки состояния обратите внимание на код Markdown Embed Code. Мы скопируем этот код, чтобы вставить в наш README.
Readme — Значок статуса
На нашей местной машине, оформить заказ в другую ветку Git, запустив:
git checkout -b add_readme
Откройте свой редактор и создайте Readme.md
файл. Скопируйте и вставьте следующие строки в этот файл:
README.md # PYTHON APPLICATION This Python application repo was created to showcase the integration between GitHub and CircleCI. [![CircleCI](https://circleci.com/gh/NdagiStanley/python_app.svg?style=svg)](https://circleci.com/gh/NdagiStanley/python_app)
Я добавил заголовок и краткое описание для моего.
Теперь запустите следующие команды:
git add . git commit -m "Add README" git push -u origin add_readme
Если вы идете в https://github.com/ /python_app. Вы заметите, что у нас есть новая филиал: add_readme
Отказ Мы можем идти вперед и нажмите Сравнить и потяните запрос Отказ
Открытие запроса на тягу
Вот как я настроил свой PR:
Нажмите Создать запрос на тягу И в кратчайшие сроки это то, что мы получаем:
Успешная сборка! Теперь нажмите Показать все чеки Отказ Вы увидите, что чек от Circleci.
Даже вкладка браузера Favicon показывает галочку для успешного запуска:
Если вы нажмете Детали , это перенаправляет вас в сборку на Circleci:
Обратите внимание, что Favicon здесь также показывает, что сборка успешна:
Наверху нажмите python_app.
Вы перенаправлены в сборки для этого проекта:
Заключение
И там у вас есть! Мы объединили GitHub с Circleci. Таким образом, мы создали приложение Python и созданные тесты для него. Затем мы создали файл конфигурации CIRCLECI и нажали кодовую базу в GitHub. Наконец, мы подключили репозиторий GitHub, который мы создали в Circleci.
Если вы успешно проехали, вы теперь можете настроить свой собственный проект в GitHub и настроить CI сборки CIRCLECI. Следующие ссылки указывают на мои ссылки во время записи этой статьи.
https://circleci.com/docs/2.0/Configuration-Reference/#full-example http://flask.pocoo.org/ https://circleci.com/docs/2.0/Configuration-Reference/
Про Стэнли: от молодого века, Стэнли, подкупал электроникой и строительство вещей с техникой. Теперь он инженер в Андела и его работа включает в себя данные, веб и IOT. Stemming от своей жизни любви к самому подению, он в личном путешествии по вызове строителя внутри и обучает других по пути. Он заботится о том, как технологии влияют на общество и ищет сотрудничества с другими, которые работают над созданием положительного воздействия.
Оригинал: «https://dev.to/ronpowelljr/setting-up-continuous-integration-with-github-2apd»