(IT 1) ci: add CircleCI configuration

main
Artem-Darius Weber 3 weeks ago
parent 59a153b3c2
commit fcce15fa58

@ -0,0 +1,37 @@
# Непрерывная интеграция (CI/CD) для проекта "Individual Task 1"
## Обзор
Данный проект использует CircleCI для автоматизации процессов сборки, тестирования и контейнеризации.
## Конфигурация
Конфигурация CI/CD находится в файле `.circleci/config.yml` и включает следующие этапы:
### 1. Сборка проекта
- Использует официальный образ .NET 8.0 SDK
- Восстанавливает зависимости проекта
- Выполняет сборку проекта в режиме Release
### 2. Тестирование
- Запускает программу с тестовыми данными
- Проверяет корректность вывода и результатов
### 3. Сборка и проверка Docker-образа
- Собирает Docker-образ на основе Dockerfile
- Запускает контейнер для проверки работоспособности
- Логирует вывод контейнера для анализа
## Как использовать
1. Настройте проект в CircleCI, связав его с GitHub/GitLab репозиторием
2. При каждом пуше в репозиторий автоматически будет запускаться процесс CI/CD
3. Результаты выполнения можно отслеживать в интерфейсе CircleCI
## Примечания
- Для локального тестирования CI/CD процесса можно использовать [CircleCI CLI](https://circleci.com/docs/local-cli)
- Для успешного завершения процесса необходимо, чтобы все этапы выполнялись без ошибок

@ -0,0 +1,63 @@
version: 2.1
jobs:
build:
docker:
- image: mcr.microsoft.com/dotnet/sdk:8.0
steps:
- checkout
- run:
name: Восстановление зависимостей
command: dotnet restore "Individual Task 1/Individual Task 1.fsproj"
- run:
name: Сборка проекта
command: dotnet build "Individual Task 1/Individual Task 1.fsproj" -c Release
- persist_to_workspace:
root: .
paths:
- Individual Task 1
- .git
test:
docker:
- image: mcr.microsoft.com/dotnet/sdk:8.0
steps:
- attach_workspace:
at: .
- run:
name: Запуск на тестовых данных
command: cd "Individual Task 1" && dotnet run
docker_build:
machine:
image: ubuntu-2204:current
steps:
- attach_workspace:
at: .
- run:
name: Сборка Docker образа
command: docker build -t euler-105:${CIRCLE_SHA1} -f "Individual Task 1/Dockerfile" "Individual Task 1"
- run:
name: Запуск контейнера
command: |
docker run --name euler-test euler-105:${CIRCLE_SHA1}
docker logs euler-test
- run:
name: Очистка контейнера
command: docker rm euler-test
when: always
workflows:
version: 2
build_test_deploy:
jobs:
- build
- test:
requires:
- build
- docker_build:
requires:
- test

@ -7,6 +7,7 @@ help:
@echo " make help - Показать это сообщение" @echo " make help - Показать это сообщение"
@echo " make docker-build - Собрать Docker образ" @echo " make docker-build - Собрать Docker образ"
@echo " make docker-run - Запустить проект в Docker" @echo " make docker-run - Запустить проект в Docker"
@echo " make ci-local - Запустить CircleCI локально"
clean: clean:
dotnet clean dotnet clean
@ -17,3 +18,7 @@ docker-build:
docker-run: docker-run:
docker compose up docker compose up
ci-local:
circleci config validate
circleci local execute

Loading…
Cancel
Save