Setup docker and ci pipelines
This commit is contained in:
42
.gitlab-ci.yml
Normal file
42
.gitlab-ci.yml
Normal 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
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
@Portfolio.Api_HostAddress = http://localhost:5129
|
|
||||||
|
|
||||||
GET {{Portfolio.Api_HostAddress}}/weatherforecast/
|
|
||||||
Accept: application/json
|
|
||||||
|
|
||||||
###
|
|
||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user