标签: gitlab-ci-runner

`test:first job:script应该是一个字符串或一个字符串数组

我想创建一个简单的"hello,world"Gitlab CI脚本.我已经让Docker转轮工作,我正在尝试这样的事情:

image: debian:sid

test:first:
  script:
  - true
Run Code Online (Sandbox Code Playgroud)

不幸的是,构建失败并出现错误: test:first job: script should be a string or an array of a strings

我究竟做错了什么?

gitlab gitlab-ci gitlab-ci-runner

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

有可能在gitlab-ci中建立另一个分支到另一个目录吗?

我想用一个gitlab-runner来制作两个相似但不完全相同的版本。

git存储库中,我有几个分支:prod,test,dev。是否可以仅使用一个跑步者来构建不同的路径?

例如:

  • /home/gitlab-runner/builds/860ee11a/0/projectname -产品
  • /home/gitlab-runner/builds/860ee11a/1/projectname -测试
  • /home/gitlab-runner/builds/860ee11a/2/projectname -开发

如果是这样,您该怎么做?

git gitlab gitlab-ci gitlab-ci-runner

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

GitLab CI:无法设置JAVA_HOME

我正在使用Ubuntu 14运行git-lab服务器我试图在git-lab Ci上编译一个版本但是由于某些原因我一遍又一遍地得到同样的错误:

ERROR: JAVA_HOME is set to an invalid directory: /usr/lib/jvm/java-7-openjdk-amd64/jre Please set the JAVA_HOME variable in your environment to match the location of your Java installation.
Run Code Online (Sandbox Code Playgroud)

无论我如何改变JAVA_HOME的路径,它总是相同的结果.我在JVM文件夹中有4个文件夹:

java-8-oracle
java-7-openjdk-amd64
java-1.7.0-openjdk-amd64
default-java
Run Code Online (Sandbox Code Playgroud)

但是无论我设置哪个目录,它的路径总是相同的结果.

这是我的.gitlab-ci.yml档案:

 before_script:
- export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/jre
- export ANDROID_HOME="/opt/android-sdk"
- chmod +x gradlew

dev:  
  script:
  - ./gradlew assembleDebug
Run Code Online (Sandbox Code Playgroud)

可能是导致此错误的原因是什么?

gitlab-ci ubuntu-14.04 gitlab-ci-runner

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

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
查看次数

GitlabCi 部署在多台服务器上

我使用 Gitlab runner 并且在单个服务器上运行良好。gitlab-ci.yml 很简单:

stages:
  - test
  - deploy

test:
  stage: test
  image: php
  tags:
      - docker
  script:
      - echo "Run tests..."
deploy:
    stage: deploy
    tags:
      - shell
    script:
      - sh deploy.sh
Run Code Online (Sandbox Code Playgroud)

正如我所说,这适用于单个服务器,但要在另一台服务器上部署相同的应用程序?我尝试使用相同的 gitlab-runner 配置(相同的 conf.toml),但它只是随机更新其中一个。

是否有超过 1 个跑步者触发 gitlab Ci 并根据 gitlab-ci.yml 部署所有这些?

gitlab gitlab-ci gitlab-ci-runner

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

使用具有写入权限的 Gitlab 部署密钥

我目前正在运行 CE 版本 8.17.4,并且正在尝试设置具有写访问权限的部署密钥(从 8.16 开始),以便我的运行器实例可以将构建工件提交回存储库。我采取了以下步骤来设置它:

  • 在 runner 实例上,我使用以下命令生成了 ssh 密钥对: 

    sudo ssh-keygen -t rsa -C "label" -b 4096

  • 生成的密钥对已保存到/home/gitlab-runner/.ssh/id_rsa并受密码保护。

  • 在 Gitlab 中,我从管理控制台创建了一个公共部署密钥,并将id_rsa.pub的内容粘贴到适当的字段中,并验证密钥指纹是否匹配。我选中了“允许写访问”框。 
  • 在我希望从运行程序启用存储库访问的私有项目中,我启用了新创建的公共部署密钥。
  • 这是一个 LaTeX 文档库,因此在.gitlab-ci.yml文件中,我在构建 pdf 后发出以下脚本:

    after_script:   - "git commit -am 'autobuild PDF'"   - "git push origin master"

提交更改后,构建在 runner 上成功运行,直到git push origin master命令,并抛出此错误:

fatal: Authentication failed for 'http://gitlab-ci-token:xxxxxxxxxxxxxxxx@host/project.git/'

好的。几个问题:

  1. 如果部署密钥只是一个 SSH 密钥,它不应该连接到安全端口还是有关系?我没有找到太多关于使用这个新的写权限部署关键特性的文档,所以我在上面采取的步骤中遗漏了什么吗?
  2. 我是否需要在提交消息中包含[ci skip]以避免循环 CI 构建?我在此功能的原始发行票中看到了这个问题,但没有看到是否需要执行此步骤。 

谢谢你的帮助!

ssh gitlab gitlab-ci gitlab-ci-runner

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

GitLab Ci与docker runner - 多个阶段

我设置了我的第一个GitLab Ci Pipeline,包括docker来运行我的项目.我想把我的管道分成几个阶段,所以我创建了"build","test"和"clean-build".

在这种情况下一切正常:

stages:
  - build
  - test
  - clean

image: docker:latest

services:
  - docker:dind

before_script:
  - export RELEASE=${CI_BUILD_REF_NAME}
  - docker version

build:
  stage: build
  tags:
    - sendis-dind
  script:
  - echo "Hallo in Build Stage"

test:
  stage: test
  tags:
    - sendis-dind
  script:
    - echo "Hallo in TEST Stage"

clean-build:
  stage: clean
  tags:
    - sendis-dind
  script:
    - echo "Hallo beim Clean Up"
  when: always
Run Code Online (Sandbox Code Playgroud)

所有3个阶段都成功运行

但这失败了:

stages:
  - build
  - test
  - clean

image: docker:latest

services:
  - docker:dind

before_script:
  - …
Run Code Online (Sandbox Code Playgroud)

docker gitlab-ci gitlab-ci-runner docker-compose

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

GitLab Runner没有运行特权

我有一个附加服务的GitLab Runner的问题.每当作业运行时,一旦等待服务完成,它就会给我一个警告:

ContainerStart:来自守护进程的错误响应:无法链接到非运行容器:/ runner-b565e58e-project-4-concurrent-0-mysql-0 AS/runner-b565e58e-project-4-concurrent-0-mysql-0-wait - 用于业务/服务

gitlab-ci.yml

stages:
  - test

test:
  stage: test
  image: primus852/gitlab:latest
  services:
    - name: mysql:latest
      command: ["cp tests/Files/db.sql /docker-entrypoint-initdb.d/"]
...
Run Code Online (Sandbox Code Playgroud)

config.toml

[runners.docker]
    tls_verify = false
    image = "php:fpm-alpine"
    privileged = true
    disable_cache = false
    volumes = ["/var/run/docker.sock:/var/run/docker.sock","/cache"]
    shm_size = 0
...
Run Code Online (Sandbox Code Playgroud)

gitlab-runner开始与此:

sudo docker run -d --name gitlab-runner --privileged --restart always   -v /var/run/docker.sock:/var/run/docker.sock   -v /srv/gitlab-runner/config:/etc/gitlab-runner   gitlab/gitlab-runner:latest
Run Code Online (Sandbox Code Playgroud)

所以我猜这些东西有问题privileged,但是有人看到了那可能是什么吗?

gitlab gitlab-ci gitlab-ci-runner

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

反转.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运行器上配置缓存

我没有配置缓存目录,但是以某种方式无法正常工作。我什至不确定它是否需要config.toml文件。

我的config.toml:

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  cache_dir = /tmp/gitlab-runner-cache
Run Code Online (Sandbox Code Playgroud)

...在/etc/gitlab-runner/config.toml和〜/ .gitlab-runner / config.toml中

我的.gitlab-ci.yml:

image: docker:latest
services:
  - docker:dind

cache:
  key: "myCache"
  paths:
    - ${CI_PROJECT_DIR]/.m2/

variables:
  DOCKER_DRIVER: overlay
  MAVEN_OPTS: -Dmaven.repo.local=${CI_PROJECT_DIR}/.m2

stages:
  - build
  - acceptance

maven-build:
  image: maven:3.3-jdk-8
  stage: build
  script: "mvn clean package"
  artifacts:
    paths:
      - target/*.jar

maven-acceptance:
  dependencies:
    - maven-build
  image: maven:3.3-jdk-8
  stage: acceptance
  script: "mvn verify"
Run Code Online (Sandbox Code Playgroud)

当我尝试时:gitlab-runner exec shell maven-build

我收到错误:

ERROR: Could not create cache adapter               error=cache factory not …
Run Code Online (Sandbox Code Playgroud)

gitlab-ci-runner

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