GitlabHQ + Gitlab-CI:自定义构建逻辑

GitlabHQ + Gitlab-CI:自定义构建逻辑

我们在基础架构中使用 GitlabHQ 和 Gitlab-CI。有了这样的持续集成设置,我们愿意在 CI 中自定义构建逻辑。

现在,新的提交 GitlabHQ 会触发 CI 的钩子,它会告诉 gitlab-ci-runner 运行构建或测试。

Runner 具有硬编码逻辑(至少在 Web UI 中不可定制),并且在运行用户定义的脚本之前会发出以下命令:

cd $HOMEDIR/gitlab-ci-runner/tmp/builds && git clone git@$GITLABSERVER:root/test1.git project-1 && cd project-1 && git checkout $COMMIT

cd $HOMEDIR/gitlab-ci-runner/tmp/builds/project-1 && git reset --hard && git checkout $COMMIT

然后用户定义的脚本

我想要什么:

  • 自定义传递给 git 的选项
  • 在发出上述命令之前运行一些用户定义的脚本(就我而言,我想启动运行器上的虚拟机,以便获得干净的测试环境)

问题是:有人遇到过类似的情况吗?有没有好的方法来解决缺少所需选项的问题?

现在我正在使用一种非常肮脏的黑客技术:用名为“git”的 bash 脚本替换 git 二进制文件,它会捕获传递给 git 的选项并在虚拟机内运行它,但在我看来这似乎不是一个好方法。

答案1

不确定这是否是您想要的,但您可以通过将 GIT_STRATEGY 设置为 none 来完全禁用从 git 提取代码:

variables:
  GIT_STRATEGY: none

https://docs.gitlab.com/ce/ci/yaml/#git-strategy

要在作业执行之前运行命令,可以使用“before_script”指令

before_script is used to define the command that should be run before all jobs, including deploy jobs, but after the restoration of artifacts. This can be an array or a multi-line string.

https://docs.gitlab.com/ce/ci/yaml/#before_script-and-after_script

相关内容