标签: gitlab-ci-runner

git runner 无法访问

我正在尝试设置一个 gitlab 运行程序来使用 gitlab-ci 而不是我的 Jenkins。我设置了一个带有链接 docker.sock 的 docker 容器

   docker run -d --name gitlab-runner --restart always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /config/file/on/host:/etc/gitlab-runner \
  gitlab/gitlab-runner:latest
Run Code Online (Sandbox Code Playgroud)

容器运行后,我向 gitlab 服务器注册了一个新的运行程序,其配置如下

concurrent = 1
check_interval = 0

[[runners]]
  name = "lianli"
  url = "<https://gitlab_server.de"
  token = "<secret>"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "debian:latest"
    privileged = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
  [runners.cache]
Run Code Online (Sandbox Code Playgroud)

现在一切都已连接。但是当管道运行时,它会以访问错误结束:

remote: Git access over HTTP is not allowed
fatal: unable to access …
Run Code Online (Sandbox Code Playgroud)

gitlab docker gitlab-ci gitlab-ci-runner

5
推荐指数
1
解决办法
4417
查看次数

致命:无法安装 gitlab-runner:访问被拒绝

请帮忙。无论我做什么,即使当我使用必需的“-p”开关时,它仍然告诉我访问被拒绝。是的,我对 exe 和文件夹拥有完全权限。是的 cmd 正在以管理员身份运行

C:\Users\username\Desktop\gitlab>gitlab-ci-multi-runner-windows-amd64.exe --version
Version:      9.2.0
Git revision: adfc387
Git branch:   9-2-stable
GO version:   go1.7.5
Built:        Mon, 22 May 2017 16:01:18 +0000
OS/Arch:      windows/amd64
Run Code Online (Sandbox Code Playgroud)

gitlab-ci gitlab-ci-runner

5
推荐指数
0
解决办法
4096
查看次数

在 gitlab runner 中设置节点环境变量

我尝试使用 gitlab runner 来测试和构建我的节点服务器,但在尝试自动化测试时遇到了一个小问题。在我的 package.json 中我有脚本

"scripts": {
    "start": "node app.js",
    "test-init": "node ./node_modules/jasmine/bin/jasmine.js init",
    "test": "set NODE_ENV=Dev&& node ./node_modules/jasmine/bin/jasmine.js"
},
Run Code Online (Sandbox Code Playgroud)

所以NODE_ENV=Dev会加载不同的设置文件。一个使用 mongodb url 的服务器"mongodb://mongo/DBName",当我在本地主机上运行时,npm test服务器崩溃(正如它应该的那样),因为它无法使用开发设置文件连接到 mongo。但是,当我在运行器上运行 GitLab 中的项目时,它不会连接到数据库,因为它使用具有 url 的非开发设置文件。GitLab-ci 中是否有任何原因导致未设置 NODE_ENV?下面是我的 GitLab-ci.yml

image: node:latest

stages:
  - build
  - test

cache:
  paths:
    - node_modules/

services:
  - mongo

install_dependencies:
  stage: build
  script:
    - npm install
  artifacts:
    paths:
      - node_modules/

test_with_lab:
  stage: test
  script: 
    - npm run test-init
    - npm test
Run Code Online (Sandbox Code Playgroud)

mongodb node.js gitlab-ci gitlab-ci-runner

5
推荐指数
1
解决办法
9764
查看次数

仅按名称列出 Gitlab 运行者

我正在尝试获取仅包含 gitlab 运行者姓名的列表。

所以输出gitlab-runner list 2>&1是:

Listing configured runners                          ConfigFile=/etc/gitlab-runner/config.toml
default_runner                                      Executor=shell Token=251cda361f983e612b27381e2f73ad URL=http://10.6.20.230
test runner                                         Executor=shell Token=86ab70918fc87c8a8d3a57c21457fb URL=http://10.6.20.230
Run Code Online (Sandbox Code Playgroud)

请注意,跑步者的姓名中可以包含空格。

所以我尝试了以下方法:

gitlab-runner list 2>&1 | awk -F'Executor' '{if(NR>1)print $1}'这给了我几乎我想要的东西(除了我需要删除的尾随空格)。

default_runner
test runner
Run Code Online (Sandbox Code Playgroud)

但是,如果我将字段分隔符更改为Executor=希望使其更加明确,则它不再起作用。它返回整行。

$ gitlab-runner list 2>&1 | awk -F'Executor=' '{if(NR>1)print $1}'
default_runner                                      Executor=shell Token=251cda361f983e612b27381e2f73ad URL=http://10.6.20.230
test runner                                         Executor=shell Token=86ab70918fc87c8a8d3a57c21457fb URL=http://10.6.20.230
Run Code Online (Sandbox Code Playgroud)

我尝试过逃避它,但Executor\=没有成功。如何在分割中包含等号?

编辑:

如果我取其中一行并将其回显到 awk 中,它就会起作用

$ echo "test runner                                         Executor=shell Token=86ab70918fc87c8a8d3a57c21457fb URL=http://10.6.20.230" | awk -F'Executor=' '{print $1}'
test runner
Run Code Online (Sandbox Code Playgroud)

另一件需要注意的事情是,无论出于何种原因,gitlab-runner list …

bash awk gitlab-ci-runner

5
推荐指数
1
解决办法
7376
查看次数

gitlab-runner:本地执行时添加ssh密钥

我正在尝试ci通过docker执行器在本地运行管道以进行调试:

gitlab-runner exec docker <job_name>
Run Code Online (Sandbox Code Playgroud)

在某个时间点,它需要克隆一个私有git存储库。

我正在使用gitlab 建议的典型配方。

variables:
    MY_PRIVATE_KEY: <my_private_key>

before_script:
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
  - eval $(ssh-agent -s)
  - ssh-add <(echo "$MY_PRIVATE_KEY")
  - mkdir -p ~/.ssh
  - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
Run Code Online (Sandbox Code Playgroud)

但是,当尝试将密钥添加到代理时:

$ ssh-add <(echo "$MY_PRIVATE_KEY")
Enter passphrase for /dev/fd/63: Running after script...
ERROR: Job failed: exit code 1
FATAL: exit code 1 …
Run Code Online (Sandbox Code Playgroud)

git gitlab-ci gitlab-ci-runner

5
推荐指数
1
解决办法
1万
查看次数

GitLab 缓存无法可靠地找到匹配的文件

我的gitlab CI如下:

stages:
  - test

cache:
  key: ${CI_COMMIT_SHA}
  paths:
    - mymark

test:
  stage: test
  script:
    - ls -l
    - echo "hi" > mymark
    - ls -l
  tags:
    - myrunner
  only:
    - dev
Run Code Online (Sandbox Code Playgroud)

该文件mymark由构建脚本创建:

$ ls -l
total 76
-rw-r--r--  1 root root    3 Mar 15 10:48 mymark
Run Code Online (Sandbox Code Playgroud)

但 GitLab 没有看到它:

Creating cache 122f151d6b0a9d37cfa2172941d642e5c48287fc...
WARNING: mymark: no matching files                 
Created cache
Job succeeded
Run Code Online (Sandbox Code Playgroud)

这似乎是随机发生的:有时找到文件,有时找不到:

Creating cache 63d295dad175370aa61d13c4d2f3149e050df5e0...
mymark: found 1 matching files               
Created cache
Job succeeded
Run Code Online (Sandbox Code Playgroud)

gitlab gitlab-ci gitlab-ci-runner

5
推荐指数
1
解决办法
2070
查看次数

GitLab 私有注册表 - 登录错误

登录到我的 GitLab 注册表后,我收到以下输出:

$ docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://gitlab.MYDOMAIN:4501/v2/: denied: access forbidden
Run Code Online (Sandbox Code Playgroud)

在我的 Linux 机器上,使用带有我的私人帐户详细信息的 docker 登录会导致相同的错误。

设置

  • 泊坞窗Docker version 18.03.1-ce, build 9ee9f40

  • 我的 GitLab docker 容器的 traefik

  • 为 GitLab 注册表打开端口 4501 并传递 docker 变量GITLAB_OMNIBUS_CONFIG: | registry_external_url 'https://${GITLAB_DOMAIN}:${GITLAB_REGISTRY_PORT}'

    • 注册表 url 可从外部访问(可以使用默认响应从我的浏览器调用它UNAUTHORIZED - authentication required

.gitlab-ci.yml

image: docker

services:
  - name: docker:dind
    command: ["--insecure-registry=gitlab.MYDOMAIN:4501"]

before_script:
  - docker login -u $CI_REGISTRY_USER …
Run Code Online (Sandbox Code Playgroud)

gitlab docker gitlab-ci-runner

5
推荐指数
1
解决办法
4538
查看次数

我应该为多个项目使用单个还是多个 GitLab CI Runner?

我在一些项目上启用了 GitLab CI,有时,当存在并发时,作业看起来像是在排队。

我正在为 10 个或更多项目使用一个特定的运行程序。

在多个项目中使用 GitLab CI 运行程序时是否有最佳实践?我应该为多个项目使用一个或多个跑步者吗?

gitlab gitlab-ci gitlab-ci-runner

5
推荐指数
1
解决办法
2517
查看次数

使用 gitlab runner 在服务内运行配置命令

我需要为 elasticsearch 服务启用脚本来运行我的 rspec 测试

# config/elasticsearch.yml
script.inline: on
script.indexed: on
Run Code Online (Sandbox Code Playgroud)

我尝试在 docker 容器内按以下方式更改 elasticsearch 配置.gitlab-ci.yml

rspec:
  stage: test
  services:
    - mysql:5.6.42
    - name: elasticsearch:1.6.1
      command: ["echo 'script.inline: on' >> /etc/elasticsearch/elasticsearch.yml", "echo 'script.indexed: on' >> /etc/elasticsearch/elasticsearch.yml", "systemctl restart elasticsearch"]
  ...
Run Code Online (Sandbox Code Playgroud)

但服务容器启动失败

*** WARNING: Service runner-6JNFXPMk-project-9870108-concurrent-0-elasticsearch-1 probably didn't start properly.

Health check error:
ContainerStart: Error response from daemon: Cannot link to a non running container: /runner-6LBTXPMk-project-13870108-concurrent-0-elasticsearch-1 AS /runner-6LBTXPMk-project-13870108-concurrent-0-elasticsearch-1-wait-for-service/service (executor_docker.go:1318:0s)

Service container logs:
2018-12-26T11:07:47.604151437Z /docker-entrypoint.sh: line 20: /echo 'script.inline: on' …
Run Code Online (Sandbox Code Playgroud)

elasticsearch gitlab-ci gitlab-ci-runner

5
推荐指数
1
解决办法
2309
查看次数

GitlabCI 使用通配符在特定分支上运行管道

我想在每次当前里程碑分支发生变化时触发一个管道,它可以与硬编码的 milistone 编号一起正常工作,问题是我们每两周增加一次里程碑编号,并且 gitlab runner 不会解析.gitlab-ci.yml通配符,因此类似的事情不起作用

job:
  only:
    - milestone-*
Run Code Online (Sandbox Code Playgroud)

我还按照 Makoto Emura 在评论中的建议尝试了正则表达式

java:
  only:
    - /^mileston-.*$/
Run Code Online (Sandbox Code Playgroud)

现在我以这种方式使用它并.gitlab-ci.yml在创建新的里程碑后 更新我的

job:
  only:
    - milestone-10
Run Code Online (Sandbox Code Playgroud)

我尝试寻找目标分支的环境变量但没有找到任何

有谁知道解决方案吗?

yaml pipeline gitlab gitlab-ci gitlab-ci-runner

5
推荐指数
1
解决办法
5973
查看次数