GitLab CI 允许将
rules
添加到作业中,这将定义何时触发特定作业的处理,例如仅当推送到特定分支时发生。
我想知道是否有办法也使用用户的ID。
原因: 这是出于对项目所需软件许可证的担忧,但该许可证绑定到特定人员(具有相应的 GitLab 用户帐户)。如果添加这样的规则,则只有作为许可证持有者的用户才能执行该作业,从而不会与许可协议发生任何冲突(与往常一样,该协议非常模糊和草率)。执行作业并有权访问许可软件的运行者也将受到限制。如果无法进行此设置,则会产生大量额外工作(下载和发送代码、构建代码,然后将其上传到某个地方,以便可以使用)。
有一些预定义变量您可以在
rules:
中使用来检查用户:
GITLAB_USER_EMAIL
/ GITLAB_USER_ID
指触发管道的用户(或者在手动作业的情况下,指触发作业的用户)CI_COMMIT_AUTHOR
指的是git中提交作者的电子邮件。请记住,除非您强制执行 GPG 签名,否则用户可以推送使用任意作者的提交。例如,您可以这样做:
rules:
- if: $GITLAB_USER_ID == "123"
但请记住,GitLab CI
rules:
并不打算用作安全措施,任何可以更改 CI YAML 的人都可以简单地删除这些限制或创建其他作业或修改存储库中执行相同脚本操作的源代码无需对用户 ID 进行相关检查。
如果您有 GitLab Premium 或 Ultimate 订阅,您可以考虑使用“受保护的环境功能”来选择允许哪些用户触发该环境的“部署”作业。 这些东西是否满足您在软件许可协议下的法律义务是另一回事。