使用Gitlab-CI + Sonarqube运行测试版本时,它无法执行命令bin/sonar-scanner.我收到了错误103: exec:: Permission denied.
它在shell上正常执行,但不通过使用CI的构建自动化执行.
我试图通过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 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缓存如何在dockerRunner上工作?
什么是/ cache目录?
什么是cache_dir?
匹配“ cache” gitlab-ci.yml中“路径”的文件存储在哪里以及如何存储?
我在 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
我的自托管 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) 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 …
我希望仅当有合并请求时才启动 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)
但是当我创建合并请求时,会启动两个管道请求。一个为
仅供参考,我有一些设置变量值的规则,并阅读这导致了此问题。我尝试了下面提到的方法:( 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)
如何实现以下目标:
阻止分离分支请求的管道运行并获取合并分支管道运行的 MR 变量?
更新 1:我在设置上启用了合并结果管道并删除了 MERGE_REQUEST_IID 规则。现在合并结果管道正在运行而不是分离,但合并结果管道在合并被批准之前正在执行?抱歉,这很令人困惑。是否有办法仅在合并获得批准后启动管道并访问该管道运行中的 MR 变量?
我是 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) 我有几个作业在同一阶段按顺序运行。然而,在 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_A,Job_B并且Job_C
在不更改作业名称的情况下是否可以设置显示顺序?