我创建了一个管道来运行一系列自动将我的应用程序部署到沙箱环境的作业。我对 .gitlab-ci.yml
的配置是:
stages:
- pull
- build
pull-code-job:
stage: deploy
script:
- cd /usr/share/nginx/html
- git pull http://myuser:mypassword@mydomain.com/user/my-app.git master
build-code-job:
stage: deploy
script:
- npm install
- npm run alpha
当我查看pipelines日志时,总是发现他们失败了:
Unknown option: -c
我不叫git -c
。
我的 GitLab CE 版本是 12.0.3,使用 runners 的 git 版本是 1.7.1。
答案 0 :(得分:1)
对于您定义的每个作业,在您的任何脚本、before_script 或 after_script 部分运行之前,与管道关联的代码将始终被提取或克隆到作业环境中。如果您的作业应该针对存储库中的代码运行,则根本不必git clone
或 git pull
;它会为你自动发生。您在作业中看到的输出来自此自动提取。
如果需要,您可以使用设置为 none 的 GIT_STRATEGY
变量禁用自动获取:
pull-code-job:
stage: deploy
variables:
GIT_STRATEGY: none
script:
- cd /usr/share/nginx/html
- git pull http://myuser:mypassword@mydomain.com/user/my-app.git master
对于此作业,不会从 Gitlab 获取/克隆存储库。如果您的管道中有另一个工作来提取您的代码,然后构建一个工件,如 npm 依赖项、从源代码编译的二进制文件等,这将非常有用。
由于您使用的是 shell
执行器,因此作业直接在运行器所在的主机上运行(而不是在 Docker 容器内)。查看 git usage
输出,该 git 版本似乎没有 -c
选项。尝试在运行您的 git
ALPHA 的主机上升级 gitlab-runner
并再次运行您的管道。