当非所有者开发人员将分支推送到我们的 Gitlab 存储库时,它会返回一条“管道失败”消息,其中包含详细信息“管道由于未验证用户而失败”。在开发人员的帐户上,他收到添加信用卡以验证他是否有资格获得免费管道分钟的提示。
但是我没有设置任何管道 - 我的 repo 中没有 gitlab-ci.yml 文件,新分支也没有。Gitlab 上项目的 CI/CD 选项卡下没有作业或计划。那么为什么有一个标记说分支在管道中失败了呢?
commit/merge request如果我的管道中唯一的更改部分与文件相关,我需要跳过管道中的 GitLab CI 作业*.md, eslintrc.json or jsconfig.json。
例子:
我试图实现这一点,但到目前为止我还没有发现except:changes也没有用处。rules:when:never我该怎么做?
我试图使用 .gitlab-ci.yaml 文件在 gitlab 中安排 ci/cd 管道。我没有找到正确的文档来使用 ci/cd yaml 文件实施计划。是否可以在 .gitlab-ci.yaml 文件中配置管道运行计划(例如每天上午 08:00)?
谢谢阿伦
假设分阶段定义了4个工作。
阶段:
现在测试、部署和上传仅在管道手动触发时运行。我们可以为此定义单独作业的规则,但它会重复。(不想使用它)
是否可以在“阶段”上定义规则,以便一个作业将在自动触发器上运行,其余 3 个作业将在管道的手动触发器上运行。
skip-ci目前,我正在复制每项工作的信息,如下所示
job1:
except:
variables:
- $CI_COMMIT_MESSAGE =~ /skip-ci/
...
job2:
except:
variables:
- $CI_COMMIT_MESSAGE =~ /skip-ci/
...
job3:
except:
variables:
- $CI_COMMIT_MESSAGE =~ /skip-ci/
...
Run Code Online (Sandbox Code Playgroud)
有没有办法只写一次就可以适用于所有工作?
continuous-integration yaml gitlab gitlab-ci gitlab-pipelines
我正在开发一个多管道项目,并使用trigger关键字触发下游管道,但我无法传递在上游项目中创建的工件。我用来needs获取这样的工件:
获取工件的下游管道块:
needs:
- project: workspace/build
job: build
ref: master
artifacts: true
Run Code Online (Sandbox Code Playgroud)
要触发的上游管道块:
build:
stage: build
artifacts:
paths:
- ./policies
expire_in: 2h
only:
- master
script:
- echo 'Test'
allow_failure: false
triggerUpstream:
stage: deploy
only:
- master
trigger:
project: workspace/deploy
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
This job depends on other jobs with expired/erased artifacts:
Run Code Online (Sandbox Code Playgroud)
我不确定出了什么问题。
我正在尝试运行一个管道,其中最后阶段取决于前一个阶段,其中的作业是有条件的和手动的。
我制作了这个示例 .gitlab-ci.yml 来演示这一点。我正在分三个阶段进行工作:
stages:
- test
- publish
- create tag
Run Code Online (Sandbox Code Playgroud)
测试阶段有一项工作
# Tests Stage
run tests:
stage: test
script:
- run the tests
Run Code Online (Sandbox Code Playgroud)
发布阶段的三个作业,都是手动的,仅在某些文件发生更改时存在
.publish:
stage: publish
script:
- publish x
rules:
- changes:
- $DIR/**/*
when: manual
# Publish Stage
publish package a:
variables:
DIR: a
extends:
- .publish
publish package b:
variables:
DIR: b
extends:
- .publish
publish package c:
variables:
DIR: c
extends:
- .publish
Run Code Online (Sandbox Code Playgroud)
最后是“创建标签”阶段,我只想在其中一项发布作业完成时运行该阶段。
# Create Tag Stage
create tag …Run Code Online (Sandbox Code Playgroud) 我们有一个要求,如果先前的管道具有处于运行状态的相同部署作业,则管道中的部署作业应该等待。因此,我们面临并发问题。例子:
我们希望等待新的管道特定作业,直到具有相同作业名称的前一个管道未完成。
GitLab 对此有什么解决方案吗?
我有一个解决方法来处理使用带有管道 API 的 before_script 。我正在执行的处理步骤:
任何不通过脚本处理的通用解决方案将受到高度赞赏。
我现在使用覆盖包已经有一段时间了,它运行良好,直到昨天,它只是在生成我认为的报告的水平上失败了。功能上没有任何变化,但更奇怪的是。
我有以下coveragerc文件:
[run]
source = .
branch = True
concurrency = multiprocessing
omit =
manage.py
config/asgi.py
config/wsgi.py
config/settings.py
*/migrations/*
*test*
[report]
show_missing = True
skip_covered = True
Run Code Online (Sandbox Code Playgroud)
Django的manage.py文件如下:
import os
import sys
COVERAGE_ACCCEPTANCE = 85
def main():
argv = sys.argv
try:
command = argv[1]
except IndexError:
command = "help"
default_settings = "config.settings"
running_tests = (command == "test")
if running_tests:
default_settings = "config.settings_test"
from coverage import Coverage
cov = Coverage()
cov.erase()
cov.start()
os.environ.setdefault("DJANGO_SETTINGS_MODULE", default_settings)
try:
from django.core.management import execute_from_command_line …Run Code Online (Sandbox Code Playgroud)