我为单个项目配置了一个 gitlab 运行程序。我看到的问题是,跑步者不会等到前一个作业完成,而是在与前一个作业相同的目录中进行签出,并踩踏所有内容。我已经运行了一项工作,然后另一项开发提交,从而开始了另一项工作。为什么我不能将管道配置为不运行,以免损坏已运行的工作区?
这是两个作业的日志(唯一的区别是时间戳)
[0K] Running with gitlab-runner 12.6.0 (ac8e767a)
[0K] on gitlab.xxxx.com rz8RmGp4
[0K] section_start:1578357551:prepare_executor
[0K] Using Docker executor with image my-image-build ...
[0K] Using locally found image version due to if-not-present pull policy
[0K] Using docker image sha256:xxxxxxxxxx for my-image-build ...
[0;msection_end:1578357553:prepare_executor
[0Ksection_start:1578357553:prepare_script
[0K] Running on runner-rz8RmGp4-project-23-concurrent-0 via gitlab.xxxx.com...
section_end:1578357554:prepare_script
[0K] section_start:1578357554:get_sources
[0K[32;1mFetching changes with git depth set to 50...[0;m
Initialized empty Git repository in /builds/my-project/.git/
<proceeds to checkout and stomp over the already running runner>
Run Code Online (Sandbox Code Playgroud)
我看到的主要问题是它们都签出到Initialized …
我有一台机器,我希望多个管道在该机器上并行运行。
我怎么做?
当我 git Push 时,我必须转到配置了 gitlab-runner 的服务器,并在终端中输入“sudo gitlab-runner run”或“gitlab-runner run”。然后管道就会启动。而且我必须始终处于运行时平台中。这违背了管道的要点。
它曾经工作过,所以当我 git Push 时,管道会自动启动,我根本不需要输入命令。那么有没有办法设置呢?
我已在命名空间下的 kubernetes 集群上安装了 GitLab 运行程序gitlab-runner。像这样
# cat <<EOF | kubectl create -f -
{
"apiVersion": "v1",
"kind": "Namespace",
"metadata": {
"name": "gitlab-runner",
"labels": {
"name": "gitlab-runner"
}
}
}
# helm repo add gitlab https://charts.gitlab.io
# cat <<EOF|helm install --namespace gitlab-runner gitlab-runner -f - gitlab/gitlab-runner
gitlabUrl: https://gitlab.mycompany.com
runnerRegistrationToken: "c................Z"
Run Code Online (Sandbox Code Playgroud)
GitLab 运行程序已正确注册到 GitLab 项目,但所有作业都会失败。
快速查看 GitLab 运行程序日志告诉我,GitLab 运行程序使用的服务帐户缺乏适当的权限:
# kubectl logs --namespace gitlabrunner gitlab-runner-gitlab-runner-xxxxxxxxx
ERROR: Job failed (system failure): pods is forbidden: User "system:serviceaccount:gitlabrunner:default" cannot create resource "pods" in …Run Code Online (Sandbox Code Playgroud) 我们刚刚从单一管道设置转向 Gitlab 的合并列车管道设置,这对于初学者来说非常令人困惑。
有人可以帮我理解 GitLab 中 Merge Train 和 Merge Result 之间的区别吗?
谢谢
我们已经在 Redhat 服务器上安装了 gitlab runner,但我们无法在 gitlab 实例中注册它,因为它受到保护(我们需要在显示 HTTPS 之前登录)。
当我们克隆项目存储库时:
git clone https://domain\.com/project.git
Run Code Online (Sandbox Code Playgroud)
它要求输入用户名和密码,以及我们是否将凭据存储在文件或缓存中,例如
git config --global credential.helper 'store --file ~/.my-credentials'
Run Code Online (Sandbox Code Playgroud)
仅当 cloning => my-credentials 将包含原始用户名/密码时,它才会第一次要求身份验证,但它解决了每次都要求身份验证的问题。
我们如何对跑步者做同样的事情,以便将其注册到我们的 gitlab :当我们跑步时
gitlab-runner register --url http://domain\.com/gitlab/ -r 1TqfdYFsJsdsdLNc-7J
Run Code Online (Sandbox Code Playgroud)
在没有询问我们用户名/密码的情况下,我们立即收到以下错误:
ERROR: Registering runner... failed runner=1TqfdYFs status=401 Unauthorized
PANIC: Failed to register the runner. You may be having network problems.
Run Code Online (Sandbox Code Playgroud)
我们知道,由于需要身份验证,运行程序无法访问我们的 gitlab,但我们不知道如何解决它,我们尝试了很多方法,例如将凭据保存在 git 缓存中,但似乎它们没有连接或使用相同的东西。
有什么想法吗?
我使用的是 Windows 10 并使用Gitlab 的 doc安装了 gitlab-runner 。
成功安装和注册后,我尝试离开用于安装的文件夹(C:\Gitlab-Runner在我的实例中)并尝试运行gitlab-runner。我得到回应:'gitlab-runner' is not recognized as an internal or external command, operable program or batch file.
我可以在C:\Gitlab-Runner文件夹中毫无问题地运行,但在其他地方都无法运行。
根据我查看的文档和教程,我不希望出现这种行为;我应该这样做吗?
我的 .gitlab-ci.yml 文件的工件部分是:
script:
- echo "creating artifact"
artifacts:
name: "<name of my project>"
paths:
- $CI_PROJECT_DIR
exclude:
- $CI_PROJECT_DIR/deploy/*
- $CI_PROJECT_DIR/git/*
Run Code Online (Sandbox Code Playgroud)
但是,我想要排除的文件仍然包括在内;当我从 git 下载工件时,部署文件夹和 .git 文件夹及其内容都存在。尽管 git 被排除在外,但在运行管道的工件阶段时,我也会收到此警告:WARNING: Part of .git directory is on the list of files to archive 。我尝试将其从 更改$CI_PROJECT_DIR/git/*为$CI_PROJECT_DIR/.git/*,但这会使工件变得更大(太大以至于管道失败并且我无法下载工件)。
我还尝试从文件路径中删除 /* 并将其更改为 /**/*,但都没有解决问题。一个非常奇怪的事情是,有时伪影随着第一条路径的结束而变小,有时当它被删除时它会更小。
我该如何解决这个问题,以便排除正确的文件并且工件不那么大?或者我还能做些什么来使工件变小吗?
我使用 gitlab.com 已经大约一年了。我没有做任何更改,但我开始收到这样的错误:
Error response from daemon: Get "https://registry-1.docker.io/v2/": unauthorized: incorrect username or password
Run Code Online (Sandbox Code Playgroud)
我使用的命令:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
Run Code Online (Sandbox Code Playgroud)
我该如何修复它?
我正在使用GitLab管道,并在.gitlab-ci.yml文件中定义了我的构建定义。
我正在用它来构建docker容器。
简单的问题。有没有一种方法可以用gitlab中的semver或时间戳标记我的docker容器。
内置变量似乎并没有给我太多帮助。
在Windows上,我以前可以GitVersion在Powershell中使用它来获取semver标签并将其放入一个变量中,以便在其余的构建过程中使用。
如果无法执行此操作,是否可以从操作系统获取时间戳并将其用于yml文件?
gitlab-ci-runner ×10
gitlab ×8
gitlab-ci ×8
artifact ×1
devops ×1
docker ×1
git ×1
https ×1
kubernetes ×1