Gitlab Pipeline构建dotnetcore应用程序的docker镜像并进行部署



我已经在Ubuntu的一台机器上安装了Gitlab。我在Gitlab有一个名为ABC的dotnetcore项目。

但是,在该ABC回购中,有多个小型doetcore应用程序,具有不同的目录,如abc1 abc2 abc3 abc4。

我想在ABC下写一个单独的管道,每当开发人员在各自的目录中推送代码时,都可以创建docker Image。但这需要为唯一的目录创建docker映像。

例如:开发人员将代码推送到abc3目录下,该时间管道运行并仅为abc3目录创建docker映像。

请帮我一下。提前感谢。。。!!!

下面是我写的Docker文件:

stages:
- docker
- build

services:
- docker:dind

before_script:
- "echo $gitlab"
docker-job:
stage: docker
image: docker:dind
script:
- docker login -u username -p password $CI_REGISTRY
- docker build -t dotnetcore .
#- docker push $IMAGE_PUSH:latest
build:
stage: build
tags: 
- shell
image: mcr.microsoft.com/dotnet/sdk
script:
- dotnet restore
- dotnet build

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
ENV ASPNETCORE_URLS=http://+:80
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["dotnetcore.csproj","./"]
RUN dotnet restore "dotnetcore.csproj"
COPY . .
WORKDIR "/src/"
RUN dotnet build "dotnetcore.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "dotnetcore.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "dotnetcore.dll"]

在这个管道和码头文件中,我只能构建";dotnetcore";项目但我在同一个Repo下有dotnetcore1 doctnetcore2 dotnetcore3项目。

gitlab-ci只有一个:更改功能。您可以定义多个作业,每个作业对应一个码头工人。

job-a:
script: docker build a
only:
changes:
- a/**/*
job-b:
script: docker build b
only:
changes:
- b/**/*

假设您有少量目录。您可以为每个目录创建一个作业。使用带有更改的规则来检查是否在特定目录中进行了更改。

最新更新