feat: init lab 5 project to monorepo

main
Artem-Darius Weber 3 weeks ago
parent 763d609f73
commit 60e610317f

@ -8,18 +8,25 @@ jobs:
steps:
- checkout
- run:
name: Восстановление зависимостей
name: Восстановление зависимостей (Individual Task 1)
command: dotnet restore "Individual Task 1/Individual Task 1.fsproj"
- run:
name: Сборка проекта
name: Сборка проекта (Individual Task 1)
command: dotnet build "Individual Task 1/Individual Task 1.fsproj" -c Release
- run:
name: Восстановление зависимостей (lab 5)
command: dotnet restore "lab 5/lab 5.fsproj"
- run:
name: Сборка проекта (lab 5)
command: dotnet build "lab 5/lab 5.fsproj" -c Release
- persist_to_workspace:
root: .
paths:
- Individual Task 1
- lab 5
- .git
test:
test_it1:
docker:
- image: mcr.microsoft.com/dotnet/sdk:8.0
@ -27,9 +34,20 @@ jobs:
- attach_workspace:
at: .
- run:
name: Запуск на тестовых данных
name: Запуск на тестовых данных (Individual Task 1)
command: cd "Individual Task 1" && dotnet run
test_lab5:
docker:
- image: mcr.microsoft.com/dotnet/sdk:8.0
steps:
- attach_workspace:
at: .
- run:
name: Запуск проекта (lab 5)
command: cd "lab 5" && dotnet run
docker_build:
machine:
image: ubuntu-2204:current
@ -38,16 +56,21 @@ jobs:
- attach_workspace:
at: .
- run:
name: Сборка Docker образа
command: docker build -t euler-105:${CIRCLE_SHA1} -f "Individual Task 1/Dockerfile" "Individual Task 1"
name: Сборка Docker образов
command: docker compose build
- run:
name: Запуск контейнера
name: Запуск контейнера (Individual Task 1)
command: |
docker run --name euler-test euler-105:${CIRCLE_SHA1}
docker logs euler-test
docker compose up -d euler-105
docker compose logs euler-105
- run:
name: Очистка контейнера
command: docker rm euler-test
name: Запуск контейнера (lab 5)
command: |
docker compose up -d lab5
docker compose logs lab5
- run:
name: Очистка контейнеров
command: docker compose down
when: always
workflows:
@ -55,9 +78,13 @@ workflows:
build_test_deploy:
jobs:
- build
- test:
- test_it1:
requires:
- build
- test_lab5:
requires:
- build
- docker_build:
requires:
- test
- test_it1
- test_lab5

@ -1,12 +1,18 @@
run:
dotnet run --project "Individual Task 1/Individual Task 1.fsproj"
run-lab5:
dotnet run --project "lab 5/lab 5.fsproj"
help:
@echo "Доступные команды:"
@echo " make run - Запустить проект 'Individual Task 1'"
@echo " make run-lab5 - Запустить проект 'lab 5'"
@echo " make help - Показать это сообщение"
@echo " make docker-build - Собрать Docker образ"
@echo " make docker-run - Запустить проект в Docker"
@echo " make docker-build - Собрать Docker образы всех проектов"
@echo " make docker-run - Запустить все проекты в Docker"
@echo " make lab5-docker-build - Собрать Docker образ для lab 5"
@echo " make lab5-docker-run - Запустить lab 5 в Docker"
@echo " make ci-local - Запустить CircleCI локально"
clean:
@ -18,6 +24,12 @@ docker-build:
docker-run:
docker compose up
lab5-docker-build:
docker compose build lab5
lab5-docker-run:
docker compose up lab5
ci-local:
circleci config validate
circleci local execute

@ -12,6 +12,7 @@
| Проект | Описание | Документация |
|--------|----------|--------------|
| [Individual Task 1](Individual%20Task%201/README.md) | Решение задачи 105 из Project Euler на F# | [README](Individual%20Task%201/README.md) |
| [lab 5](lab%205/README.md) | Лабораторная работа 5 по функциональному программированию | [README](lab%205/README.md) |
## Инструменты разработки
@ -42,10 +43,19 @@ cd neko-fi
```bash
make help
# Запуск Individual Task 1
make run
# Запуск lab 5
make run-lab5
# Запуск в Docker
make docker-build
make docker-run
# Запуск только lab 5 в Docker
make lab5-docker-build
make lab5-docker-run
```
## CI/CD

@ -8,4 +8,13 @@ services:
volumes:
- ./Individual Task 1:/app
stdin_open: true
tty: true
lab5:
build:
context: ./lab 5
dockerfile: Dockerfile
volumes:
- ./lab 5:/app
stdin_open: true
tty: true

@ -0,0 +1,10 @@
FROM mcr.microsoft.com/dotnet/sdk:8.0
WORKDIR /app
COPY . .
RUN dotnet restore
RUN dotnet build -c Release
CMD ["dotnet", "run", "--no-build", "--configuration", "Release"]

@ -0,0 +1,2 @@
// For more information see https://aka.ms/fsharp-console-apps
printfn "Hello from F#"

@ -0,0 +1,29 @@
# Лабораторная работа 5
## Описание
Этот проект содержит решение задач пятой лабораторной работы по функциональному программированию на F#.
## Цели проекта
## Запуск проекта
### Локально
```bash
cd "lab 5"
dotnet run
```
### Через Docker
```bash
make lab5-docker-build
make lab5-docker-run
```
## Требования
- .NET 8.0 SDK или выше
- Docker (optional)

@ -0,0 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<RootNamespace>lab_5</RootNamespace>
</PropertyGroup>
<ItemGroup>
<Compile Include="Program.fs" />
</ItemGroup>
</Project>
Loading…
Cancel
Save