是否可以在Gitlab CI中删除旧版本?我测试了一些东西,现在有大约20个无用的构建(大多数都失败了).它还显示了我不再拥有的阶段,这些阶段使Pipelines页面变得混乱,并且一些上传的工件有点大.
我无法在此找到任何文档,只是在设置中禁用CI不会删除构建.
使用Gitlab 8.10社区(由Gitlab.com主办)
我正在使用gitlab CI runner来测试我的代码并生成一些文件.我只是想通过CI runner将生成的文件推送到gitlab存储库.有没有办法做到这一点?
是否有可能覆盖全球before_script使用空before_script作业中?
我有一个.gitlab-ci.yml文件说:
include:
- project: 'my-proj/my-gitlab-ci'
ref: master
file: '/pipeline/gitlab-ci.yml'
Run Code Online (Sandbox Code Playgroud)
由于一些“不便”,我想覆盖在gitlab-ci.yml注入我的顶级.gitlab-ci.yml文件的上述文件中定义的某些特定阶段。plan我感兴趣的阶段有以下内容:
plan-dummy:
stage: plan
script:
- terraform plan -lock=false -var-file=vars/vars.tfvars
Run Code Online (Sandbox Code Playgroud)
我想要做的是覆盖主.gitlab-ci.yml文件上的上述内容,以便仅将脚本作为覆盖执行:
plan-dummy:
stage: plan
script:
- terraform refresh # This is the line I want to add as an additional step before next
- terraform plan -lock=false -var-file=vars/dev.tfvars
Run Code Online (Sandbox Code Playgroud)
如何在不摆弄注入文件的情况下实现这一目标?是的,我知道替代方法是从子文件中进行脏复制粘贴,但我不想这样做。
问候,
我正在使用Gitlab CI 8.0和gitlab-ci-multi-runner 0.6.0.我有一个.gitlab-ci.yml类似于以下的文件:
before_script:
- npm install
server_tests:
script: mocha
client_tests:
script: karma start karma.conf.js
Run Code Online (Sandbox Code Playgroud)
这有效,但这意味着在每个测试作业之前独立安装依赖项.对于具有许多依赖项的大型项目,这会增加相当大的开销.
在Jenkins中,我将使用一个作业来安装依赖项,然后对它们进行TAR,然后创建一个构建工件,然后将其复制到下游作业.类似的东西可以与Gitlab CI一起使用吗?有推荐的方法吗?
我在Windows Gitlab运行器上通过HTTP克隆大型存储库时遇到了一些麻烦.我已经尝试了几种方法来做浅克隆或禁用克隆压缩.仍然没有运气.
通过SSH克隆相同的存储库非常适合作为临时解决方案,我希望在我们的Gitlab CI过程中实现这一点.
现在问题就在于我不知道如何使用SSH作为gitlab-multi-runner的克隆方法.它似乎只是使用HTTP作为默认值,我唯一关于克隆的选项是它是完成克隆还是获取.

有人可以解释我如何通过SSH而不是HTTP来使克隆/获取工作在跑步者身上?
Gitlab版本:GitLab社区版8.10.7
谢谢!
有没有办法export在 GitLab CI 中将环境变量从一个阶段转移到下一个阶段?我正在寻找类似于作业工件功能的东西,仅适用于环境变量而不是文件。
假设我正在一个configure阶段配置构建,并希望将结果存储为(秘密的、受保护的)环境变量以供下一个阶段使用。我可以保护文件中的配置并将它们存储为作业工件,但我担心文件中提供的秘密可以供所有人下载。
是否可以使用以下要求定义构建作业的gitlab-ci文件:
我想到了类似的东西,但这是错误的:
build_jar:
stage: build
script:
- echo "build jar"
artifacts:
paths:
- jar/path/*.jar
only:
- master
when: manual
Run Code Online (Sandbox Code Playgroud)
对我来说,唯一的解决方案是拥有两个作业,一个用于主推,一个用于手动输入.但缺点是,在gitlab中它变得令人困惑
在我的 gitlab 项目中有 3 个主要分支:develop、stage 和 master。
每次将更新的代码推送到开发分支时,我都必须将其合并到阶段分支,然后再次手动将其合并到主分支。
这看起来效率不高。
有没有办法在不冲突的情况下自动合并分支?
此外,可以使用名为“gitlab-ci.yml”的文件进行自动合并,例如
# merge develop branch to stage branch
merge-to-stage:
only:
- develop
script:
- merge (develop) to (stage) << something like this
# merge stage branch to master branch when the job above is completed
stage-to-master:
only:
- stage
script:
- merge (stage) to (master) << something like this
Run Code Online (Sandbox Code Playgroud)
请给我您的好意建议。
我使用 GitLab Runner 在 AWS EC2 Spot 实例上运行 CI 作业,并使用 Docker Machine 的自动缩放功能。
突然,今天 GitLab CI 无法运行作业,并向我显示了我想要启动的所有作业的以下作业输出:
Running with gitlab-runner 14.9.1 (f188edd7)
on AWS EC2 runner ...
Preparing the "docker+machine" executor
10:05
ERROR: Preparation failed: exit status 1
Will be retried in 3s ...
ERROR: Preparation failed: exit status 1
Will be retried in 3s ...
ERROR: Preparation failed: exit status 1
Will be retried in 3s ...
ERROR: Job failed (system failure): exit status 1
Run Code Online (Sandbox Code Playgroud)
我在 AWS 控制台中看到 EC2 …
amazon-web-services docker gitlab-ci gitlab-ci-runner docker-machine