您可以通过在管道步骤中创建徽章、将徽章文件注册为管道工件并将它们发布到 GitLab 页面来实现您的需求。从那里您可以参考README.md中的徽章
按照你的要求怎么做
1。生成徽章
在每个 CI 步骤中,您都需要生成标记文件,并将它们存储在 public/<badge-file>.svg 下
您可以使用http://shields.io 生成徽章文件。我已经编写了自己的 Python 徽章生成器,可以在这里找到:https://github.com/jongracecox/anybadge
2。将徽章注册为管道工件
将每个生成的徽章文件注册为 CI 作业中的工件,方法是将其包含在 .gitlab-ci.yml 的每个作业中:
build_win32:
script: ...
- <generate public/build_win32.svg>
artifacts:
paths:
- public/build_win32.svg
build_ios:
script: ...
- <generate public/build_ios.svg>
artifacts:
paths:
- public/build_ios.svg
unit_tests:
script: ...
- <generate public/unit_tests.svg>
artifacts:
paths:
- public/unit_tests.svg
server_tests:
script: ...
- <generate public/server_tests.svg>
artifacts:
paths:
- public/server_tests.svg
client_tests:
script: ...
- <generate public/client_tests.svg>
artifacts:
paths:
- public/client_tests.svg
3。将徽章发布到 GitLab 页面
包括一个新的pages 发布步骤,其中deploys everything in the public directory to GitLab pages:
pages:
stage: deploy
artifacts:
paths:
- public
only:
- master
您不需要修改上述内容。运行此作业后,public 中的所有文件都将通过 GitLab 页面 Web 服务器提供。这通常是http://NAMESPACE.GITLABPAGESSERVER/project
在此处阅读有关 GitLab 页面的更多信息:https://docs.gitlab.com/ce/user/project/pages/index.html
4。在 README.md 中包含徽章
当项目的主管道运行时,徽章文件会发布到 GitLab 页面,然后可以从项目 README.md 中引用。
为什么这可能没有意义
我理解你为什么会问这个问题,但我想解释一下你为什么不想这样做。
GitLab 管道在每次推送到项目时运行 - 在每个分支上。通常,您只想从 master 分支(或发布)分支为您的 README 文件生成标记,因此您可以使用 restrict the pages step to only run on master@group/project。
还要考虑到,管道通常会配置为在作业出错时停止。这意味着如果主管道作业失败,则不会生成该管道的标记,因此无助于确定哪个作业失败。
获得即时反馈的最佳位置是在管道视图中,您可以将管道成功徽章添加到您的自述文件中,并带有指向管道的链接,通常类似于 https://gitlabserver/namespace/project/badges/branch/build.svg
如果您仍想使用您描述的方法,那么我的建议是将每个管道阶段设置为allow failure。这将允许整个管道运行,尽管任何作业都失败了,并且徽章仍应生成并发布到 Pages。