Рубрики
Uncategorized

Добавьте CI в свой проект с помощью Azure DEVOPS

Добавьте простой поток CI в проект бесплатно, с помощью Azure DevOps. Помечено в DevOps, Azure, Micronaut.

Дежопт

Дежол Весьма везде прямо сейчас, и как разработчик, важно знать об этом, на самом деле это больше, чем куча инструментов — это культура автоматизации, которую вы должны развиваться в каждом проекте, который вы сделали, поэтому в этом посте я собираюсь Показать небольшой пример простого Дежол автоматизация.

Так что, если у вас есть боковой проект, вы можете найти много инструментов, чтобы применить Дежол Философия, много людей используют (Circleci) [ https://circleci.com/ ] или (Travisci) [ https://travis-ci.com/ ] которые довольно одинаковы идеей создания скрипта для автоматизации потока, определенного вами.

Я выбрал Azure DEVOPS (я собираюсь сделать сообщение для других инструментов тоже), который позволяет вам иметь личный или публичный проект бесплатно, это может быть полезно, если вы не хотите иметь публичный репозиторий, чтобы применить CI-труба, Azure DevOps Может интегрироваться с различными провайдерами управления исходной версией, такими как Github (Microsoft) и Битбукет Или если вы хотите, вы можете использовать инструмент Azure Reppo, встроенный в Azure DevOps Отказ

ОПИСАНИЕ ПРОЕКТА

Для проекта я собираюсь использовать репо Github с базовым проектом Micronaut-Java [ https://github.com/fabianbg/microservice_micronaut_base ] Автоматизированный процесс будет похож:

push code to branch:

     => if branch updated
           => test
           => build
           => dockerize
           => push to DockerHub
           => use everywhere

Давай сделаем это

Прежде всего, нам нужен проект для развертывания, чтобы выбрать проект, который вы хотите автоматизировать, но будьте осторожны по технологии, иногда технология трудна для автоматизации или сборки. Для этого я собираюсь использовать Проект Micronaut Java Если вы хотите узнать больше о том, смотрите эту страницу [ https://fabianbg.netlify.com/posts/micronaut-introduction-tuctorialial-Article/ ] Это статья, написанная мной (когда я начал писать на испанском языках : P). Это базовый проект, который подключается к базе данных Postgres и предоставляет некоторые услуги для отдыха.

Второй шаг состоит в том, чтобы создать тестовые скрипты теста, сборки и докеремизации, это будет сложная часть, потому что она зависит от технологии, чем вы используете, но на самом деле многие технологии приходят с полезным клиентом, который может сделать намного проще для работы. В случае Micronaut-Java у вас есть Maven или росцел Если вы используете более сложный процесс в вашей сборке или тесте, вам необходимо создать скрипт в корневой папке вашего проекта, чтобы сказать трубу, которая выполняет скрипт, чтобы легко развернуть ваше приложение.

Третий шаг — это счет в Azure DevOps [ https://azure.microsoft.com/es-es/services/devops/]:

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

После создания проекта вы можете увидеть приборную панель проекта. Есть куча инструментов, которые могут быть полезны для развития, такого как доска задач, репос, труб, испытаний и артефактов, но самая важная часть — репос и трубы.

Импортировать репо

Хорошо, теперь начните забавную часть, в этом случае я хочу также иметь код в Azure Repos, по этой причине, я должен синхронизировать с моим существующим репо на GitHub для этого в представлении REPO I Import.

Примечание. Не нужно создавать Azure Repo или импортировать его, ** Вы можете определить непосредственно трубу и подключиться к репо (BitBucket, GitHub, Subversion и SO). *

Я вставляю URL REPO и позвольте Azure сделать импорт, в конце концов он показывает импортированное репо.

Создать трубу

Хорошо, так что это далеко проект на Azure Repos Теперь и пришло время настроить трубу, в разделе трубопроводов вы можете создать новую трубу, сначала вы должны выбрать провайдер REPO, если у вас есть код в другом репо и не хочу иметь два репоим в Azure и Другой на вашем предпочтительном провайдере, вы можете пропустить часть импортированной репо, если вы выберете другого провайдера, чем Azure Repos, вы должны дать доступ Azure DEVOPS к вашему репо. После подключения к вашему провайдеру вы выбрали репо и пришло время настроить вашу трубу:

Это шаблоны с базовыми конфигурациями труб, я собираюсь определить мою собственную трубу, поэтому я выбираю Существующий файл лазурного трубопровода вариант. Файл трубы сдержит всю конфигурацию, чтобы рассказать Azure, как запустить проект, а для моего проекта является следующая конфигурация:

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

variables:
  imageName: 'fabianbg/micronaut-base'


steps:
- task: Gradle@2
  displayName: Test
  inputs:
    workingDirectory: '$(Build.SourcesDirectory)/base'
    gradleWrapperFile: '$(Build.SourcesDirectory)/base/gradlew'
    gradleOptions: '-Xmx3072m'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: '1.8'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: true
    testResultsFiles: '**/TEST-*.xml'
    tasks: 'test'

- task: Gradle@2
  displayName: Build
  inputs:
    workingDirectory: '$(Build.SourcesDirectory)/base'
    gradleWrapperFile: '$(Build.SourcesDirectory)/base/gradlew'
    gradleOptions: '-Xmx3072m'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: '1.8'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: true
    testResultsFiles: '**/TEST-*.xml'
    tasks: 'build'

- task: Docker@2
  displayName: Build and Push docker image
  inputs:
    containerRegistry: 'DockerHUB'
    command: buildAndPush
    repository: $(imageName)
    dockerfile: '$(Build.SourcesDirectory)/base/Dockerfile'
    tags: |
      $(Build.BuildNumber)

Эта труба имеет три задания, * Тестовая задача с тестом Gradle, задача по сборке с сборкой Gradle и Docker Build и Push Task * Отказ AZURE обеспечивает вид шаблонов задач для exects, такие задачи, как Gradle и Docker, вам просто нужно предоставить базовую конфигурацию каждому, что в некоторых случаях являются учетными данными доступа к услуге.

Сохранить трубу, но не запускать трубу И все же , у него нет конфигурации сервисного подключения, так что он собирается бросить ошибку, потому что она не может получить доступ к репо DockerHub, чтобы нажать изображение до того, как запуск необходимо настроить сервисное соединение.

Сервисные соединения

Счет службы — это способ защиты наших учетных данных для доступа к внешним сервисам, таким как конфиденциальное хранилище Docker Hub или сервер, с этим мы Избегайте поставить учетные данные на наш код Таким образом, вместо этого просто поставьте имя учетной записи службы и Azure сделать привязку к учетным данным.

Для создания учетной записи службы в левой части приборной панели нажмите на Настройки проекта А затем на сервисных соединениях вы можете создать новый:

Там создал учетную запись службы в Dockerhub с именем «DockerHub», поэтому используйте это имя, чтобы определить доступ в трубе.

Трубный автоматический триггер

Как это определяется в трубе, у меня есть триггер с главной веткой, поэтому, если какое-либо изменение отправляется на Master, он будет вызвать сборку и уведомить по электронной почте.

Для целей тестирования вы можете сделать изменение в проекте, затем подтолкнуть к главной ветви и посмотреть, что это происходит.

  • Примечание. Не забудьте подтолкнуть к репо, который вы выбираете, когда вы создаете трубу, если он является импортированным нажатием на Azure Repos.

Если все правильно, труба успешно выполняется и отправит вам уведомление на вашу почту.

Как мы можем видеть созданное изображение на моей учетной записи DockerHub.

Azure DevOps Является ли простым инструментом для применения некоторой автоматизации в наши проекты, оно может быть сделано частным путем для бесплатной, ценообразование начинается во втором проекте и бесплатно это является предел выполнения времени выполнения труб.

Самая сложная часть автоматизации Проект — это не Трубы CI — это сам проект, как мы можем видеть, используем ли мы инструменты, которые помогают нам, как Micronaut-Java, которые создают проекты со всеми конфигурацией Docker, легко применить CI/CD , но если проект требует больше скриптов и конфигурации, это будет довольно тяжелая работа.

Оригинал: «https://dev.to/fabianbg/add-the-ci-to-your-project-with-azure-devops-2p70»