在GitLab CI中编辑变量并确保它们的安全



我在GitLab中有一个多项目管道。管道中的第一个项目会触发第二个项目的构建。

此时,第一个项目将两个变量传递给下一个项目——一个变量包含项目的名称$CI_project_name,另一个包含项目的URL$CI_project_URL。这两个都是第二个项目所必需的。

在第二个项目中,我需要$CI_project_URL变量来执行

git clone https://oauth2:$ACCESS_TOKEN@${CI_PROJECT_URL}

因此,我的第一个问题是:如何删除CI_PROJECT_URL开头的https://?它不适用于https://,但如果我在没有它的情况下硬编码url,它会起作用。我确信这是一个简单的问题,尽管我只是想不通!

我的第二个问题。我需要检查$CI_PROJECT_NAME和$CI_PROJECT_URL是否有任何恶意内容,例如在第一个项目中的变量声明之后添加的新行、附加命令等。作为参考,$CI_PROJECT_URL看起来是这样的,尽管有不同的项目名称和用户名:https://projects.dep.place.co.uk/username/project_1.解决这个问题的建议方法是什么?

我还试图弄清楚是否可以简单地访问触发第二个项目构建的项目url。如果这是可能的,它将完全绕过这个问题。这有可能吗?

谢谢你的帮助。

对于您的第一个问题,您可以在不使用http协议的情况下使用Gitlab CI为每个运行作业提供的一些其他预定义变量来构建URL。在你的一份工作中尝试一下,看看它是否正确:

...
script:
- echo "${CI_SERVER_HOST}:${CI_SERVER_PORT}/${CI_PROJECT_PATH}"

对于您的第二个问题,这些变量中的每一个,包括$CI_PROJECT_TITLE(项目名称(,都是由Gitlab CI本身提供的,它们不是用户提供的,所以您可以相信,当您在管道中使用这些值时,这些值将始终是所描述的值。

您可以在此处查看Gitlab CI提供的所有预定义变量:https://docs.gitlab.com/ee/ci/variables/predefined_variables.html

最新更新