标签: gitlab-ci-runner

错误:准备失败:Getwd:getwd:没有这样的文件或目录

Gitlab 运行程序抛出错误:准备失败:Getwd:getwd:没有这样的文件或目录?

gitlab版本是:GitLab社区版8.6.4 gitlab-runner版本:1.11.5

我的 CIERROR: Preparation failed: Getwd: getwd经常抛出,但有时我们承诺工作正常。所以我们不知道导致这个问题的最终原因是什么。

我们只知道一件事,那就是在移动构建目录后会显示此错误。

gitlab-ci-runner

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

使用 PWD 在 .gitlab-ci.yml 中定义变量时出错

我刚刚注意到,当PWD在 下访问变量时script,它会按预期工作,例如:

test:
    script:
    - docker run --rm -v $PWD/wd image [options]
Run Code Online (Sandbox Code Playgroud)

但是当上面的内容被包含的变量替换时,这就失败了$PWD。事实上,像下面这样的指令会导致错误:

variables:
    DOCKER_RUN: "docker run --rm -v $PWD:/wd"

test:
    script:
    - $DOCKER_RUN image [options]
Run Code Online (Sandbox Code Playgroud)

这是因为该变量DOCKER_RUN在这里被解释为“docker run --rm -v :/wd”。也就是说,就像PWD是空的一样,我不明白为什么。

我也一直在探索 gitlab预定义变量,但找不到合适的替代品PWD,而不是通过组合它们,例如。使用"${CI_BUILDS_DIR}/${CI_PROJECT_NAMESPACE}",这也会导致错误。

gitlab gitlab-ci gitlab-ci-runner

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

Gitlab 运行程序无法访问子模块

我使用子模块创建一个新项目并想要运行 gitlab-ci.yml。但每次跑步者都告诉我他无法访问或找不到该项目。该运行器是 Windows 10 系统上的共享运行器(必需)。它适用于较旧的项目,但不适用于新项目。

你有什么想法我做错了什么吗?

我已经做了什么:

  • 在另一位跑步者身上进行测试
  • 对跑步者使用获取和克隆
  • 在运行器虚拟机上手动运行 git clone --recursive git@gitlab...
  • 在我当前的电脑上递归克隆 repo 并且它有效!
  • 一个答案

CI 脚本:

stages:
  - build

variables:
  ARTIFACTS_OUTPUT_PATH: "./builds"
  GIT_SUBMODULE_STRATEGY: recursive

test_123:
    stage: build
    only:
        - tags
        - triggers
        - schedules
        - web
    script: 
        - some commands

    artifacts:
        paths:
          - ./builds/*
    tags:
        - windows
Run Code Online (Sandbox Code Playgroud)

错误:

<!-- language: lang-sh -->
Cloning into 'C:/gitlab-runner/builds/765197b3/0/user/ttttttt'...
Submodule 'hfdg' (git@gitlab.XXXXXXXX:user/hfdg.git) registered for path 'hfdg'
Cloning into 'C:/gitlab-runner/builds/765197b3/0/user/ttttttt/hfdg'...
remote: 
remote: ========================================================================
remote: 
remote: The project you were looking …
Run Code Online (Sandbox Code Playgroud)

gitlab gitlab-ci-runner

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

Bash 脚本 GitLab 共享运行器

我正在尝试使用共享运行程序来运行处理部署所需的环境变量的脚本。我的 YAML 配置中失败的部分是:

release:
  stage: release
  image: docker:latest
  only:
    - master
  services:
    - docker:dind
  variables:
    DOCKER_DRIVER: overlay
  before_script:
    - docker version
    - docker info
    - docker login -u ${CI_REGISTRY_USER} -p ${CI_BUILD_TOKEN} ${CI_REGISTRY}
  script:
    - dckstart=$(cat dockerfile-start)
    - export > custom_vars
    - chmod +x scripts/format-variables.sh
    - bash scripts/format-variables.sh
    - dckenv=$(cat custom_vars)
    - dckfin=$(cat dockerfile-finish)
    - echo -e "$dckstart\n$dckenv\n$dckfin" >> Dockerfile
    - rm dockerfile-start dockerfile-finish custom_vars
    - docker build -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest --pull .
    - docker push ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest
  after_script:
    - docker logout ${CI_REGISTRY} …
Run Code Online (Sandbox Code Playgroud)

bash gitlab gitlab-ci gitlab-ci-runner

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

在本地使用 gitlab-runner 并传递上一步中的工件

我正在尝试调试 GitLab CI 管道中的一些问题。我有一个步骤 B,它使用了步骤 A 中的一些工件。

步骤 A 很长(并且在 CI 中工作),所以我不想在本地运行它:我只是从 GitLab 下载生成的工件。所以我有一个artifacts.zip,我提取它以获得一个output和一个logs目录。到现在为止还挺好。

我想在本地运行步骤 B,使用gitlab-runner. 请注意,我使用的是 9.5 版(https://docs.gitlab.com/runner/install/old.html)。

我正在使用这个命令:

gitlab-runner exec docker step-b
Run Code Online (Sandbox Code Playgroud)

正如我所解释的,step-b需要来自step-a. 这是我尝试过的:

gitlab-runner exec docker --docker-volumes ~/Downloads/output step-b 
Run Code Online (Sandbox Code Playgroud)

在步骤 B 中执行的脚本之一正在执行类似mv ../output /some/where/else. 但是,此脚本失败并出现以下错误:

mv: cannot stat '../output': No such file or directory
Run Code Online (Sandbox Code Playgroud)

出现此错误后,我有两个问题:

  • 这个脚本在哪里执行?它是这样调用的.gitlab-ci.yml

    ./scripts/my_script.sh.
    
    Run Code Online (Sandbox Code Playgroud)

    什么是.在这种情况下?

  • 如何确保使用--docker-volumes ~/Downloads/output将目录安装在正确的位置以便我的脚本可以找到它?

编辑

根据要求,这里是步骤 A 的描述。

script: …
Run Code Online (Sandbox Code Playgroud)

gitlab docker gitlab-ci gitlab-ci-runner

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

术语“CI=false”未被识别为 cmdlet、函数、脚本文件或可操作程序的名称

我正在尝试 gitlab 的 CI/CD 并正在制作一个构建项目的 yml 文件。问题是我得到以下信息:

$ npm run build
 > myreactapp@0.1.0 build C:\GitLab-Runner\builds\QLuLhspz\0\I416547\s4-software-fun-frontend
 > react-scripts build
 Creating an optimized production build...
 Treating warnings as errors because process.env.CI = true.
 Most CI servers set it automatically.
 Failed to compile.
 ./src/Components/Task/TaskList.js
   Line 120:15:  'currentTasks' is assigned a value but never used                                 no-unused-vars
   Line 175:25:  Headings must have content and the content must be accessible by a screen reader  jsx-a11y/heading-has-content
 ./src/Components/House/House.js
   Line 150:16:  'Address' is assigned a value but never used …
Run Code Online (Sandbox Code Playgroud)

node.js npm reactjs gitlab-ci gitlab-ci-runner

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

来自共享 Gitlab 运行程序的 SSH 停止工作

这以前确实有效!

我的管道中的部署步骤是通过 SSH 连接到 DO 框并从 Docker 注册表中提取代码。如前所述,这之前是有效的,这是我当时deploy的一步,从这里.gitlab-ci.yml得到了很好的灵感:Using SSH

deploy:
  stage: deploy
  image: docker:stable-dind
  only:
    - master
  services:
    # Specifying the DinD version here as the latest DinD version introduced a timeout bug
    # Highlighted here: https://forum.gitlab.com/t/gitlab-com-ci-stuck-on-docker-build/34401/2
    - docker:19.03.5-dind
  variables:
    DOCKER_DRIVER: overlay2
    DOCKER_TLS_CERTDIR: ""
  environment:
    name: production
  when: manual
  before_script:
    - mkdir -p ~/.ssh
    - echo "$DEPLOYMENT_SERVER_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa
    - chmod 600 ~/.ssh/id_rsa
    - eval "$(ssh-agent -S)"
    - …
Run Code Online (Sandbox Code Playgroud)

ssh openssh gitlab gitlab-ci gitlab-ci-runner

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

gitlab-runner exec with dind (docker in docker) 最小工作示例

这是我的.gitlab-ci.yml文件:

image: docker:18

varibales:
  DOCKER_DRIVER: "overlay2"
  DOCKER_HOST: tcp://docker:2375

test:
  services:
    - "docker:18-dind"
  script:
    - docker info
Run Code Online (Sandbox Code Playgroud)

我运行它:

gitlab-runner exec docker --docker-privileged --docker-pull-policy if-not-present --docker-tlsverify=false test
Run Code Online (Sandbox Code Playgroud)

它有效。


但我想使用当前的 docker 版本。所以我读了这个文档

gitlab-runner exec docker --docker-privileged --docker-pull-policy if-not-present --docker-tlsverify=false test
Run Code Online (Sandbox Code Playgroud)

我用与上面相同的方式运行它:

gitlab-runner exec docker --docker-privileged --docker-pull-policy if-not-present --docker-tlsverify=false test
Run Code Online (Sandbox Code Playgroud)

不幸的是,这以错误结束:

错误:无法连接到位于 tcp://docker:2375 的 Docker 守护进程。docker 守护进程是否正在运行?

我已经看到这个问题和许多其他问题。但我找不到一个可以gitlab-runner exec docker在每个 UNIX 系统上使用docker:19的最小工作示例docker:19-dind

编辑:
gitlab-runner --version(来自 Manajaro 仓库):

Version:      13.0.0
Git revision: HEAD
Git …
Run Code Online (Sandbox Code Playgroud)

docker gitlab-ci gitlab-ci-runner docker-in-docker

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

Gitlab 运行程序、私有存储库、docker 执行程序不使用主机的主机文件

我有一个私人 git 存储库。我的跑步者在一台单独的机器上,都是 ubuntu。当我尝试在 yml 文件中 ping $CI_REGISTRY 时,我在构建过程中看到 $CI_REGISTRY 域名未解析为正确的 IP 地址。我需要访问服务器的内部地址,而不是外部地址,因此我在运行 gitlab runner 的主机上设置了一个具有正确地址的主机文件,但执行器忽略了它。奇怪的是,它提供的地址是 cloudflare 网络上的内部地址,而不是我试图访问的主机的外部地址,就像我预期的那样,如果它正在进行 DNS 查找。

我怎样才能:

  • 强制docker执行器使用主机的hosts文件
  • 传入执行程序可以用来正确解析地址的环境变量(或其他变量)

docker gitlab-ci gitlab-ci-runner

5
推荐指数
2
解决办法
7420
查看次数

基于正则表达式的规则子句在 GitLab CI 中不起作用

我希望我的 Gitlab CI 作业在提交消息以特定字符串开头时不运行:[maven-scm]

因此,我的.gitlab-ci.yaml文件中有以下配置:

image: maven:3.6.3-jdk-11-slim

stages:
  - test

test:
  stage: test
  cache:
    key: all
    paths:
      - ./.m2/repository
  script:
    - mvn clean checkstyle:check test spotbugs:check
  rules:
    - if: '$CI_COMMIT_MESSAGE !~ /^\[maven-scm\] .*$/'
Run Code Online (Sandbox Code Playgroud)

我的提交消息是:[maven-scm] I hope the test job does not run

但测试工作仍然让我感到沮丧。我查看了 GitLab 文档中的规则,但找不到该作业仍然运行的原因。我不确定我是否遗漏了一些东西。

如果有人能指出我正确的方向,那就太好了。

更新:

我尝试了 only/ except 子句而不是规则。我将 yaml 文件修改为以下内容:

image: maven:3.6.3-jdk-11-slim

stages:
  - test

test:
  stage: test
  cache:
    key: all
    paths:
      - ./.m2/repository
  script:
    - mvn clean checkstyle:check test spotbugs:check …
Run Code Online (Sandbox Code Playgroud)

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

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