我想创建一个简单的"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-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 -开发如果是这样,您该怎么做?
我正在使用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 + Sonarqube运行测试版本时,它无法执行命令bin/sonar-scanner.我收到了错误103: exec:: Permission denied.
它在shell上正常执行,但不通过使用CI的构建自动化执行.
我使用 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 部署所有这些?
我目前正在运行 CE 版本 8.17.4,并且正在尝试设置具有写访问权限的部署密钥(从 8.16 开始),以便我的运行器实例可以将构建工件提交回存储库。我采取了以下步骤来设置它:
在 runner 实例上,我使用以下命令生成了 ssh 密钥对:
sudo ssh-keygen -t rsa -C "label" -b 4096
生成的密钥对已保存到/home/gitlab-runner/.ssh/id_rsa并受密码保护。
这是一个 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/'
好的。几个问题:
谢谢你的帮助!
我设置了我的第一个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) 我有一个附加服务的GitLab Runner的问题.每当作业运行时,一旦等待服务完成,它就会给我一个警告:
ContainerStart:来自守护进程的错误响应:无法链接到非运行容器:/ runner-b565e58e-project-4-concurrent-0-mysql-0 AS/runner-b565e58e-project-4-concurrent-0-mysql-0-wait - 用于业务/服务
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)
[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 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的返回值。
我没有配置缓存目录,但是以某种方式无法正常工作。我什至不确定它是否需要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 ×10
gitlab-ci ×7
gitlab ×6
docker ×2
git ×1
java ×1
sonarqube ×1
ssh ×1
ubuntu-14.04 ×1