我已经在一台Ubuntu机器上安装了Gitlab。我在Gitlab中以ABC的名义安装了dotnetcore项目。
但是,在ABC存储库中有多个小的doetnetcore应用程序,它们具有不同的目录,如abc 1 abc 2 abc 3 abc 4。
我想在ABC下编写一个单独的管道,以便在开发人员将代码推入相应目录时创建Docker Image。但这需要为该唯一目录创建Docker Image。
例如:开发人员将代码推送到abc 3目录下,时间管道运行并仅为abc 3目录创建Docker Image。
请帮我解决这个问题。提前谢谢...!!!
下面是我的管道什么我也写了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"]
在这个管道和dockerfile中,我只能构建“dotnetcore”项目。但是我在同一个Repo下有dotnetcore 1、dotnetcore 2、dotnetcore 3个项目。
2条答案
按热度按时间sdnqo3pr1#
gitlab ci有一个only:changes特性,你可以定义多个作业,每个作业对应一个docker。
ruoxqz4g2#
假设您只有少数目录。您可以为每个目录建立一个工作。使用变更规则来检查是否在特定目录中进行变更。