标签: gitlab-ci-runner

bin // sonar-scanner:103:exec ::权限被拒绝

使用Gitlab-CI + Sonarqube运行测试版本时,它无法执行命令bin/sonar-scanner.我收到了错误103: exec:: Permission denied.

它在shell上正常执行,但不通过使用CI的构建自动化执行.

java gitlab docker sonarqube gitlab-ci-runner

6
推荐指数
1
解决办法
4256
查看次数

成功构建后,GitLab Pages部署步骤失败

我试图通过gitlab页面主持reveal.js演示文稿.可以在此处找到存储库:https://gitlab.com/JanGregor/demo-slides

.gitlab-ci.yml很简单:

image: node:4.2.2

pages:
  cache:
    paths:
    - node_modules/
  script:
  - npm install
  - node_modules/.bin/gulp
  artifacts:
    paths:
    - build
  only:
  - master
Run Code Online (Sandbox Code Playgroud)

在承诺掌握之后,出了点问题.页面任务本身被执行并运行得很好.它甚至在日志中显示我的构建目录已被扫描并且已找到人工制品.

奇怪的是,后续pages:deploy任务失败了.它只说:

页面无法提取

任何帮助将不胜感激,因为我不知道接下来要去哪里.在尝试使用npm实现部署流时,文档本身并没有什么用处.

在此先感谢大家!

gitlab gitlab-ci gitlab-ci-runner

6
推荐指数
2
解决办法
1029
查看次数

反转.gitlab-ci.yml中的测试

我想防止使用gitlab CI测试规则来检查TODO注释(或其他有问题的字符串)。我在这里添加了最后一行:

.job_template: &template_test
  image: python:3.6-stretch
  tags:
    - python
  # ...

stages:
  - test

test:
  <<: *template_test
  stage: test
  script:
    - flake8 *.py
    - ! grep TODO *.py
Run Code Online (Sandbox Code Playgroud)

但是,当我查看运行器的输出时,它失败了:

$ flake8 *.py
$ grep TODO *.py
ERROR: Job failed: exit code 1
Run Code Online (Sandbox Code Playgroud)

Gitlab似乎吞下了感叹号!,该感叹号在外壳中用于抵消grep的返回值

gitlab-ci-runner

6
推荐指数
2
解决办法
211
查看次数

gitlab-ci缓存如何在dockerRunner上工作?什么是/ cache目录?什么是cache_dir?

  1. gitlab-ci缓存如何在dockerRunner上工作?

  2. 什么是/ cache目录?

  3. 什么是cache_dir?

  4. 匹配“ cache” gitlab-ci.yml“路径”的文件存储在哪里以及如何存储?

gitlab-ci gitlab-ci-runner

6
推荐指数
2
解决办法
5505
查看次数

当 MR 打开时仅运行一次 Gitlab CI 作业

我在 Gitlab 中有一个场景,当第一次在 Gitlab 中打开 MR 时,我想 ping 特定的 Slack 通道。我尝试rules在源为时触发merge_request_event,但不幸的是,当新提交推送到打开的 MR 时,这也会触发我的工作。

是否可以在 MR 最初打开时运行一次Gitlab CI 作业,并且在此之后不再运行,即使将新提交添加到 MR 中也是如此?

ping:
  stage: .pre
  rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
  script:
    - 'curl to slack url'
Run Code Online (Sandbox Code Playgroud)

continuous-integration continuous-delivery gitlab gitlab-ci gitlab-ci-runner

6
推荐指数
1
解决办法
2518
查看次数

CI 作业在 GitLab-runner 上间歇性失败,并出现错误“致命:浅文件自我们读取以来已更改”

我的自托管 GitLab 部署上的作业最近有时开始失败,出现以下 git 错误:

完整作业日志的示例如下:

Running with gitlab-runner 13.12.0 (v13.12.0)
  on ....50ab V...
Preparing the "shell" executor
00:00
Using Shell executor...
Preparing environment
00:00
Running on saxtons...
Getting source from Git repository
00:03
$ /nix/store/s0frm5z2k43qm66q39ifl2vz96hmyxg4-pre-clone
Fetching changes with git depth set to 50...
Reinitialized existing Git repository in /var/lib/private/gitlab-runner/builds/V.../2/privatestorage/PrivateStorageio/.git/
fatal: shallow file has changed since we read it
Cleaning up file based variables
00:00
ERROR: Job failed: exit status 1
Run Code Online (Sandbox Code Playgroud)

预克隆脚本包含此内容,用于修复不可写目录的权限,这些目录会导致运行程序尝试清理 git checkout 失败:

chmod --recursive u+rwX …
Run Code Online (Sandbox Code Playgroud)

git gitlab nixos gitlab-ci gitlab-ci-runner

6
推荐指数
1
解决办法
4911
查看次数

如何确定 Docker 容器内受限 CPU 的数量?与 make -j 一起使用

Docker 支持一个--cpus选项,限制容器使用一定比例的主机计算资源。例如,--cpus 2.5将分配相当于主机CPU能力大约两倍半的计算资源。这种分配似乎有点“逻辑”而不是物理,因为容器运行八个进程,但往往--cpus 1.0在单独的 CPU 上运行每个进程,但限制在大约 12.5%。我想这很好。

问题是我无法找到一种方法让受限容器内的进程确定它有多少个可用的等效 CPU。例如,这对于构建过程特别有用,make -j <n>但是什么是n?无论选项值如何,常用​​的nproc输出都是主机上的 CPU 数量--cpus,这使得它不适合,因为它太大了。的值/proc/cpuinfo也是主机的视图(与 相同nproc)。

有没有办法让包含的进程确定可用的 CPU 数量?

举个例子,在我的 16 核主机上,我想仅使用docker run ... --cpus 4.0 ...make -j <something>运行4 个进程,而不是 16 个进程。

FWIW,我将 Docker Executor 与 GitLab-CI 和 一起使用gitlab-runner,这就是为什么--cpuset-cpus=没有真正帮助的原因。执行器应该能够为每个作业在所有主机的 CPU 上分配一定数量的 CPU,而不是特定的子集。虽然我可以为每个显式的四个 CPU 集创建单独的执行程序,但我不知道有什么明显的方法可以将gitlab-runner这些执行程序以平衡的方式分配给传入的作业,而且我想避免将责任推到作业本身上,也许使用标签来选择执行器,因为这需要每个作业对运行器了解太多。

我确实考虑过像NUM_CPUS=4中那样设置相应的环境变量,以便构建作业可以找出要使用的环境变量,但是只能为所有跑步者设置变量,而不是单个跑步者:gitlab-runnerconfig.tomlmake …

environment limit docker gitlab-ci-runner

6
推荐指数
0
解决办法
489
查看次数

Gitlab CI/CD 合并请求 - CI_MERGE_REQUEST_SOURCE_BRANCH_NAME 和目标分支名称为空

我希望仅当有合并请求时才启动 Gitlab 管道。不在对任何分支的提交上。

only:
 refs:
  - merge_requests
changes:
  - "**/*.json"   except:
  - $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == "master"
  - $CI_COMMIT_REF_NAME == "master"
Run Code Online (Sandbox Code Playgroud)

但是当我创建合并请求时,会启动两个管道请求。一个为

  • 分离的合并请求管道:这是在创建合并请求(尚未批准)时启动的。我希望这条管道运行被阻止。但这次运行已填充所有 MR 变量。

仅供参考,我有一些设置变量值的规则,并阅读这导致了此问题。我尝试了下面提到的方法:( https://gitlab.com/gitlab-org/gitlab/-/issues/201845 ) 来阻止分离管道并且它有效。但现在我无法访问 MR 变量。

workflow:
  rules:
    - if: $CI_MERGE_REQUEST_IID
    - if: $CI_OPEN_MERGE_REQUESTS
      when: never
Run Code Online (Sandbox Code Playgroud)
  • 合并分支管道:这是在合并完成/批准后启动的。我只想启动这条管道。但在此分支上,所有合并请求变量 - CI_MERGE_REQUEST_SOURCE_BRANCH_NAME 和 CI_MERGE_REQUEST_TARGET_BRANCH_NAME 均为空。

如何实现以下目标:

阻止分离分支请求的管道运行并获取合并分支管道运行的 MR 变量?

更新 1:我在设置上启用了合并结果管道并删除了 MERGE_REQUEST_IID 规则。现在合并结果管道正在运行而不是分离,但合并结果管道在合并被批准之前正在执行?抱歉,这很令人困惑。是否有办法仅在合并获得批准后启动管道并访问该管道运行中的 MR 变量?

gitlab-ci gitlab-ci-runner

6
推荐指数
1
解决办法
6524
查看次数

Gitlab Pipeline 失败“远程:HTTP Basic:访问被拒绝”

我是 Gitlab Pipelines 的新手,想为我的一个 Python 项目设置一个。我将 docker GitLab-runner 容器与此配置文件一起使用:

version: '3'
services:
  runner:
    container_name: runner
    image: gitlab/gitlab-runner:latest
    restart: unless-stopped
    environment:
      - TZ=Europe/Berlin
    volumes:
      - ./data:/etc/gitlab-runner/
      - /var/run/docker.sock:/var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)

每当执行管道时,我都会收到以下错误消息:

Running with GitLab-runner 14.10.1 (f761588f)
  on docker xxxxxxx
Preparing the "docker" executor
Using Docker executor with image python:latest ...
Pulling docker image python:latest ...
Using docker image sha256:8dec8e39f2eca1ee1f1b668619023da929039a39983de4433d42d25a7b79267c for python:latest with digest python@sha256:567018293e51a89db96ce4c9679fdefc89b3d17a9fe9e94c0091b04ac5bb4e89 ...
Preparing environment
Running on runner-xxxxxxxxx-project-38-concurrent-0 via xxxxxxxx...
Getting source from Git repository
Fetching changes with git depth set …
Run Code Online (Sandbox Code Playgroud)

pipeline gitlab gitlab-ci gitlab-ci-runner gitlab-runner

6
推荐指数
1
解决办法
6761
查看次数

如何设置gitlab作业同阶段的显示顺序?

我有几个作业在同一阶段按顺序运行。然而,在 GitLab UI 中,显示顺序是根据作业名称(升序)。

Job_C:
 stage: dev

Job_B:
 stage: dev
 needs: ["Job_C"]

Job_A:
 stage: dev
 needs: ["Job_B"]
Run Code Online (Sandbox Code Playgroud)

因此该作业按预期顺序运行。Job_C然后Job_B然后Job_A。然而,UI 中的作业顺序是 Job_AJob_B并且Job_C

在不更改作业名称的情况下是否可以设置显示顺序?

gitlab gitlab-ci gitlab-ci-runner

6
推荐指数
0
解决办法
516
查看次数