用于构建dotnetcore应用程序的Docker映像并进行部署的Gitlab管道

tsm1rwdh  于 2022-11-22  发布在  Docker
关注(0)|答案(2)|浏览(190)

我已经在一台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个项目。

sdnqo3pr

sdnqo3pr1#

gitlab ci有一个only:changes特性,你可以定义多个作业,每个作业对应一个docker。

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

ruoxqz4g2#

假设您只有少数目录。您可以为每个目录建立一个工作。使用变更规则来检查是否在特定目录中进行变更。

相关问题