Setup docker and ci pipelines

This commit is contained in:
2025-01-19 19:41:25 +01:00
parent 43ecfe6813
commit d9d501faa2
4 changed files with 64 additions and 14 deletions

42
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,42 @@
stages:
- build
- test
- publish
variables:
DOCKER_IMAGE: registry.leon-hoppe.de/leon.hoppe/portfolio
build:
stage: build
image: mcr.microsoft.com/dotnet/sdk:9.0
script:
- dotnet restore
- dotnet build --configuration Release --no-restore
artifacts:
paths:
- "**/bin/Release"
expire_in: 10 minutes
test:
stage: test
image: mcr.microsoft.com/dotnet/sdk:9.0
script:
- dotnet test --verbosity normal
dependencies:
- build
publish:
stage: publish
image: docker:latest
services:
- name: docker:dind
alias: docker
script:
- export VERSION=$(echo $CI_COMMIT_TAG | sed 's/^v//')
- docker login -u leon.hoppe -p ${CI_REGISTRY_PASSWORD} registry.leon-hoppe.de
- docker build -t $DOCKER_IMAGE/api:$VERSION -f src/Portfolio.Api/Dockerfile .
- docker build -t $DOCKER_IMAGE/web:$VERSION -f src/Portfolio.Web/Dockerfile .
- docker push $DOCKER_IMAGE/api:$VERSION
- docker push $DOCKER_IMAGE/web:$VERSION
only:
- tags

View File

@@ -7,10 +7,17 @@ EXPOSE 8081
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
ARG BUILD_CONFIGURATION=Release ARG BUILD_CONFIGURATION=Release
WORKDIR /src WORKDIR /src
COPY ["src/Portfolio.Api/Portfolio.Api.csproj", "src/Portfolio.Api/"]
RUN dotnet restore "src/Portfolio.Api/Portfolio.Api.csproj" COPY ["src/Portfolio.Shared/Portfolio.Shared.csproj", "./Portfolio.Shared/"]
COPY . . RUN dotnet restore "Portfolio.Shared/Portfolio.Shared.csproj"
WORKDIR "/src/src/Portfolio.Api"
COPY ["src/Portfolio.Api/Portfolio.Api.csproj", "./Portfolio.Api/"]
RUN dotnet restore "Portfolio.Api/Portfolio.Api.csproj"
COPY ["src/Portfolio.Shared/", "./Portfolio.Shared/"]
COPY ["src/Portfolio.Api", "./Portfolio.Api/"]
WORKDIR "/src/Portfolio.Api"
RUN dotnet build "Portfolio.Api.csproj" -c $BUILD_CONFIGURATION -o /app/build RUN dotnet build "Portfolio.Api.csproj" -c $BUILD_CONFIGURATION -o /app/build
FROM build AS publish FROM build AS publish

View File

@@ -1,6 +0,0 @@
@Portfolio.Api_HostAddress = http://localhost:5129
GET {{Portfolio.Api_HostAddress}}/weatherforecast/
Accept: application/json
###

View File

@@ -7,10 +7,17 @@ EXPOSE 8081
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
ARG BUILD_CONFIGURATION=Release ARG BUILD_CONFIGURATION=Release
WORKDIR /src WORKDIR /src
COPY ["src/Portfolio.Web/Portfolio.Web.csproj", "src/Portfolio.Web/"]
RUN dotnet restore "src/Portfolio.Web/Portfolio.Web.csproj" COPY ["src/Portfolio.Shared/Portfolio.Shared.csproj", "./Portfolio.Shared/"]
COPY . . RUN dotnet restore "Portfolio.Shared/Portfolio.Shared.csproj"
WORKDIR "/src/src/Portfolio.Web"
COPY ["src/Portfolio.Web/Portfolio.Web.csproj", "./Portfolio.Web/"]
RUN dotnet restore "Portfolio.Web/Portfolio.Web.csproj"
COPY ["src/Portfolio.Shared/", "./Portfolio.Shared/"]
COPY ["src/Portfolio.Web", "./Portfolio.Web/"]
WORKDIR "/src/Portfolio.Web"
RUN dotnet build "Portfolio.Web.csproj" -c $BUILD_CONFIGURATION -o /app/build RUN dotnet build "Portfolio.Web.csproj" -c $BUILD_CONFIGURATION -o /app/build
FROM build AS publish FROM build AS publish