Проблема
Эликсир — новый игрок на рынке, и инструмент не такой полный, как другие, такие как C# и Java. Когда я начал изучать эликсир, у меня были такие вопросы, как:
- Где его размещать?
- Как построить и проверить его в стиле CI?
- Как развернуть его на Azure?
Непосредственный ответ состоял в том, чтобы иметь виртуальную машину на Azure, но это не доступное решение. К счастью, в настоящее время основная проблема решается с помощью Docker для разработки и развертывания. В этом посте я поделюсь простым решением для использования Azurevops для CI-части разработки и в последующей статье, я рассмотрю часть CD. Если вы хотите проверить код, вот репо: https://github.com/benyblack/elixir-phoenix-ci Анкет
Один из самых популярных подходов к созданию веб -сайтов в Elixir — это использование Phoenix. Чтобы настроить его, используя это суть. Условия для Postgres Server существуют в dev.exs в папке конфигурации. Если ваши учетные данные разные, вы можете изменить их в сценарии, взглянуть на конечный результат в следующем:
Перейдите к http://localhost: 4000 , и вы увидите что -то вроде этого:
Теперь, когда у нас есть рабочий код, мы можем подумать о сборке и тестировании. Чтобы начать, давайте попробуем сделать это на месте с Docker.
Во -первых, нам нужен файл Docker:
Создайте и запустите его этими командами:
docker build -t benyblack/helloworldci . docker run --rm -p 4000:4000 benyblack/helloworldci
Перейдите к http://localhost: 4000 и вы должны увидеть рабочий веб -сайт, хотя и с большим количеством ошибок подключения в консоли. Пришло время использовать магию докера. Файл конфигурации для Docker-Compose довольно прост:
Кроме того, нам нужно изменить базу данных имя хоста в test.exs . Измените имя хоста к База данных Анкет Затем запустите эту команду, чтобы построить и запустить наши тесты:
docker-compose up --abort-on-container-exit
Там у нас это есть! Вы должны увидеть результат в конце консольных сообщений:
Непрерывная интеграция
Вот и все! Теперь он готов к использованию в Azure DevOps. Нам нужно подключить нашу учетную запись GitHub и DockerHub к проекту в разделе «Настройки проекта Azurevops». Перейти к Настройки проекта В нижней левой части страницы, а затем выберите Сервисные соединения и нажмите » + Новое обслуживание соединения «. В списке выберите GitHub Анкет Необходимо предоставить доступ к нашему коду на GitHub.
Делайте то же самое, чтобы Dockerhub подключил ваши общественные репозитории к проекту, за исключением Select Docker Registry в это время. Мы будем использовать его позже для использования Docker-Compose.
Следующим шагом является создание трубопровода. Перейти к Трубопроводы из главного меню. Выберите GitHub из списка.
Хит Следующий и выберите Существующие Azure Tipelines Yaml File Анкет
Всплывающее окно должно появиться справа. Выберите файл конфигурации, который мы создали.
Затем вы можете настроить конфигурацию, нажав на ссылку настройку или редактировать ее вручную. Если ваше имя подключения DockerHub не совпадает с моим, вам придется его изменить.
Наконец, нажмите Запустить Кнопка в левом верхнем углу страницы.
Вы должны увидеть что -то вроде этого:
Наконец, у нас нужно иметь зеленые огни. Однако есть еще один шаг; Публикация результата теста. Проблема в том, что Azurevops не может проанализировать результат теста из Смешайте тест Анкет Решение состоит в том, чтобы применить Форматер Для результата теста. В этом случае я решил использовать JunitFormatter Анкет Он экспортирует результат в файл XML. Использование библиотеки довольно просто. Я добавил этот раздел в свой test.exs В папке конфигурации:
# Configure publishing test result config :junit_formatter, report_file: "report_file_test.xml", report_dir: "./", print_report_file: true, prepend_project_name?: true
Более того, нам нужно добавить тестовый шаг публикации в наш трубопровод. Перейдите в меню сборки и выберите «Редактировать», чтобы редактировать трубопроводы. На правой панели выберите Опубликовать результат теста и установить Testresultsfiles к ‘ **/hello_world_ci-report_file_test.xml ‘ Нажмите Добавить Анкет Это должно выглядеть так:
Сохраните и запустите снова. Вы должны увидеть что -то вроде этого:
Перейти к Тесты вкладка Ваша вкладка «Тесты» должна быть такой же, как и моя:
Вуаля! Вот и все! Довольно просто. В Предстоящий пост , Я собираюсь сделать CD часть.
Оригинал: «https://dev.to/behnam/azuredevops-elixir-docker-ci-cd-and-the-others-part-1-docker-compose-and-testing-o1m»