Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: CXIII Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 09 мая 2022 г.)

Наука: Информационные технологии

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Васильев Н.А., Бармина А.А. ИСПОЛЬЗОВАНИЕ CODESHIP ПРИ РАЗРАБОТКЕ ВЕБ-ПРИЛОЖЕНИЯ // Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ: сб. ст. по мат. CXIII междунар. студ. науч.-практ. конф. № 5(112). URL: https://sibac.info/archive/technic/5(112).pdf (дата обращения: 24.04.2024)
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

ИСПОЛЬЗОВАНИЕ CODESHIP ПРИ РАЗРАБОТКЕ ВЕБ-ПРИЛОЖЕНИЯ

Васильев Николай Андреевич

студент, кафедра Информационных систем и программной инженерии, Балтийский государственный технический университет «ВОЕНМЕХ» имени Д.Ф. Устинова,

РФ, г. Санкт-Петербург

Бармина Анастасия Александровна

преподаватель, кафедра Информационных систем и программной инженерии, Балтийский государственный технический университет «ВОЕНМЕХ» имени Д.Ф. Устинова,

РФ, г. Санкт-Петербург

USING CODESHIP IN DEVELOPING A WEB APPLICATION

 

Nikolai Vasiliev

student, Department of Information Systems and Software Engineering, Baltic State Technical University "VOENMEH" named after D.F. Ustinov,

Russia, St. Petersburg

Anastasiia Barmina

lecturer, Department of Information Systems and Software Engineering, Baltic State Technical University "VOENMEH" named after D.F. Ustinov,

Russia, St. Petersburg

 

АННОТАЦИЯ

В статье приводится пример использования инструмента непрерывной интеграции и доставки CloudBees Codeship при разработке веб-приложения. Даны рекомендации по конфигурации инструментов управления версиями и развертывания.

ABSTRACT

This article provides an example of using the CloudBees Codeship continuous integration and delivery tool to develop a web application. Recommendations are given on the configuration of version control and deployment tools.

 

Ключевые слова: веб-приложение; непрерывная интеграция; git; codeship; docker.

Keywords: web application; continuous integration; git; codeship; docker.

 

В данной статье будет рассмотрено использование инструмента CI/CD CodeShip при разработке веб-приложения, основанного на технологии ASP.NET. Данный пример продемонстрирует применимость методов непрерывной интеграции и непрерывной доставки при разработке различных классов веб-приложений и докажет общую применимость данной методики.

При разработке веб-приложения будет использоваться система управления версиями git, а для развёртывания будут использованы контейнеры Docker. При этом для взаимодействия веб-приложения, развёрнутого во внутренней сети компании будет использован обратный прокси-сервер Traefik.

Docker — это платформа для разработки, доставки и запуска контейнерных приложений. Docker позволяет создавать контейнеры, автоматизировать их запуск и развертывание, управляет жизненным циклом. Он позволяет запускать множество контейнеров на одной хост-машине [1].

Для построения приложения системе непрерывной интеграции потребуется выполнить следующую команду:

dotnet new webapp --no-https --name demoaspnet

Флаг --no-https требуется, чтобы веб-приложение не использовало HTTPS, поскольку вместо этого используется Traefik, который возьмёт на себя работу с SSL [2].

Далее требуется создать файл Docker, который будет хранить образ разрабатываемого веб-приложения, для этого потребуется следующий скрипт:

FROM microsoft/dotnet:2.2-sdk AS build-env

WORKDIR /app

COPY *.csproj ./

RUN dotnet restore

COPY . ./

RUN dotnet publish -c Release -o out

FROM microsoft/dotnet:2.2-aspnetcore-runtime

WORKDIR /app

COPY --from=build-env /app/out .

HEALTHCHECK --interval=5m --timeout=3s \

  CMD curl -f http://localhost/ || exit 1

ENTRYPOINT ["dotnet", "demoaspnet.dll"]

В этом скрипте используется многоэтапная сборка, результатом которой будет создание окончательного образа, в котором есть только артефакты проекта. При этом инструкция HEALTHCHECK обеспечит его работоспособность до того, как будут запущены какие-либо зависимые сервисы.

Создание файла докера вручную противоречит практикам CI/CD, поэтому для этого будет использовано средство непрерывной интеграции CloudBees CodeShip.

Для его использования необходимо создать проект на сервере CI и создать файл конфигурации YAML. В случае использование данного инструмента интеграции потребуются два конфигурационных файла – один для хранения настроек контейнеров Docker, и иных внешних средств, используемых на различных шагах конвейера (codeship-services.yml), другой – для хранения непосредственно шагов конвейера (codeship-steps.yml).

Пример файла CodeShip с описанием контейнеров Docker, используемых конвейером CI/CD при развёртывании приложения показан ниже:

myapp:

  build:

    image: amitsaha/aspnetcore-demo

    context: demoaspnet

    dockerfile: Dockerfile

curl:

  image: pstauffer/curl:latest

  depends_on: ["myapp"]

Первый раздел файла настраивает службу myapp — здесь указываются образ Docker, каталог, который необходимо в него поместить (demoaspnet) в качестве содержимого и ранее описанный файл Dockerfile в качестве файла Docker.

Далее описываются зависимые службы, которые также необходимо развернуть для корректной работы разрабатываемого веб-приложения. Список служб может быть обширен, поэтому для примера приведена только одна – curl, которая будет использовать самый свежий из доступных образов данной службы из DockerHub. Для данной службы указано что она является зависимой от создаваемой службы myapp.

Файл codeship-steps.yml, содержащий требуемые шаги конвейера состоит из записей, подобных следующей:

- service: curl

  command: curl -I http://myapp

Это выполнит команду curl -I http://myapp внутри созданного контейнера curl. При этом произойдёт сборка требуемого контейнера (и того, от которого он зависит) в случае, если контейнер не был собран до этого.

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

Инструмент непрерывной интеграции CodeShip возьмёт на себя запуск описанного конвейера при каждом обновлении репозитория проекта.

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

После успешного прохождения всех тестов, образ Docker следует добавить в общий реестр для дальнейшего использования.

Далее следует развернуть приложение в рабочей среде. Помимо самого веб-приложения потребуется развернуть контейнер самого Docker и Traefik.

Само развёртывание будет представлять собой выполнение команд Docker, подобных представленным ниже:

docker run -d -p 80:80 -p 443:443 \

        -v $PWD/traefik.toml:/etc/traefik/traefik.toml \

        -v /var/run/docker.sock:/var/run/docker.sock \

        -v $PWD/acme.json:/acme.json \

        traefik

docker run \

      --label "traefik.backend=aspnetcoredemodemo" \

      --label "traefik.frontend.rule=Host:aspnetcoredemo.me"  \

      --label "traefik.port=80" \

      --label "traefik.backend.healthcheck.path=/" \

      --label "traefik.backend.healthcheck.interval=5s" \

      --label "app=$image" \

      -d $image

Данные команды должны будут выполняться как финальные шаги конвейера CI/CD и позволят развернуть созданное веб-приложение и перенаправлять на него внешний трафик средствами Traefik.

Как видно из примера, использование инструментов CI/CD позволяет ускорить развёртывание сложных веб-приложений и настраивать дополнительные службы для автоматического тестирования и перенаправления трафика из внешней сети.

 

Список литературы:

  1. Что такое Docker: для чего он нужен и где используется - Блог компании Селектел [электронный ресурс] — Режим доступа. — URL: https://selectel.ru/blog/what-is-docker/ (дата обращения 23.03.2022)
  2. Traefik [электронный ресурс] — Режим доступа. — URL: https://doc.traefik.io/traefik/ (дата обращения 01.04.2022)
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

Оставить комментарий

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