【问题标题】:Gitlab Pipeline to build docker Image of dotnetcore application and deployGitlab Pipeline 构建 docker dotnetcore 应用程序的镜像并进行部署
【发布时间】:2022-07-20 14:51:59
【问题描述】:

我在其中一台 Ubuntu 机器上安装了 Gitlab。并且我在 Gitlab 中有一个名为 ABC 的 dotnetcore 项目。

但是,在那个 ABC repo 中有多个小的 doetnetcore 应用程序,它们具有不同的不同目录,例如 abc1 abc2 abc3 abc4。

每当开发人员将代码推送到相应目录中时,我想在 ABC 下编写一个管道来创建 docker Image。但需要为该目录​​创建 docker Image。

eg: 开发者将代码推送到 abc3 目录下,此时管道运行并为 abc3 目录创建 docker Image。

请帮帮我。 提前谢谢...!!!

下面是我的管道,我也写过 Docker 文件: 阶段:

  • 码头工人
  • 构建

服务:

  • docker:dind

之前的脚本: - “回声 $gitlab”

码头工人工作: 阶段:码头工人 图片:码头工人:dind 脚本: - docker login -u 用户名 -p 密码 $CI_REGISTRY - 码头工人构建 -t dotnetcore 。 #- 搬运工推送 $IMAGE_PUSH:latest 建造: 阶段:构建 标签: - 壳 图片:mcr.microsoft.com/dotnet/sdk 脚本: - 点网还原 - dotnet 构建

来自 mcr.microsoft.com/dotnet/aspnet:5.0 作为基础 工作目录 /app 曝光 80

ENV ASPNETCORE_URLS=http://+:80

来自 mcr.microsoft.com/dotnet/sdk:5.0 AS 构建 工作目录 /src 复制 ["dotnetcore.csproj","./"] 运行 dotnet 还原“dotnetcore.csproj” 复制 。 . 工作目录“/src/” 运行 dotnet build "dotnetcore.csproj" -c Release -o /app/build

FROM 构建 AS 发布 运行 dotnet publish "dotnetcore.csproj" -c Release -o /app/publish

FROM 基础 AS 最终 工作目录 /app 复制 --from=publish /app/publish 。 入口点 ["dotnet", "dotnetcore.dll"]

在这个管道和 dockerfile 中,我只能构建“dotnetcore”项目。但我在同一个 Repo 下有 dotnetcore1 doctnetcore2 dotnetcore3 项目。

【问题讨论】:

    标签: docker .net-core gitlab gitlab-ci gitlab-pipelines


    【解决方案1】:

    gitlab ci 有一个only:changes 功能。您可以定义多个作业,每个作业用于一个 docker。

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

    【讨论】:

    • 如果可以的话,请分享完整的管道示例..
    • 不看你的电流是不可能的。
    • 我已经添加了我写的管道和dockerfile,假设我有一个以dotnetcore名义的git repo,并且在dotnetcore repo内部我有多个以dotnetcore1名义的项目dotnetcore2 dotnetcore3.
    • 您发布的 gitlab ci 不包含构建特定项目的命令,相反,它似乎是 vs 模板的模板。您至少应该有工作来构建这 3 个项目。然后学习如何仅在更改时触发。
    • 谢谢 Lei Yang,我对你的回答并不完全清楚,但很清楚它是如何工作的。但很少有事情不能正常工作,但希望我能尽快解决
    【解决方案2】:

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

    【讨论】:

    • 是的,但我只想要所有子目录的一次管道。我不希望每个目录都有多个管道。
    猜你喜欢
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 2021-12-29
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多