标签: gitlab-ci-runner

如何在windows上使用gitlab-ci-multi-runner访问gitlab-ci.yml中的变量

我无法找到如何在gitlab-ci.yml-file 提供的构建脚本中访问变量.

我试图以两种方式声明变量:

  1. GitLab CI Web界面中的私有变量
  2. 变量覆盖/ apennding in config.toml

我尝试在我的gitlab-ci.yml-files命令中访问它们:

msbuild ci.msbuild [...] /p:Configuration=Release;NuGetOutputDir="$PACKAGE_SOURCE"
Run Code Online (Sandbox Code Playgroud)

在哪里$PACKAGE_SOURCE是所需的变量(PACKAGE_SOURCE)但它不起作用(它似乎没有被替换).手动执行相同的命令就像预期的那样(用其内容替换变量名)

是否还需要一些我不知道的其他语法?

我试过了:

$PACKAGE_SOURCE
$(PACKAGE_SOURCE)
${PACKAGE_SOURCE}
Run Code Online (Sandbox Code Playgroud)

PS:如果重要的话,验证跑步者不会引起任何问题.

gitlab gitlab-ci gitlab-ci-runner

16
推荐指数
1
解决办法
9170
查看次数

Gitlab CI gradle依赖缓存

我在Gitlab CI上构建android并且每次下载依赖项都很烦人.我试过缓存:

$HOME/.gradle/
$HOME/.gradle/caches/
$GRADLE_HOME/caches/
$HOME/.m2/
.gradle/
build/
app/build/
Run Code Online (Sandbox Code Playgroud)

我的.gitlab-ci.yml的第26594次迭代就在这里.我已经在我的构建环境中安装了gradle,因为没有缓存gradlew每次下载它,这需要更多的时间.我用于建筑的图像就在这里.我的CI服务器启动脚本可以在这里找到.我假设,如果缓存有效,我将看不到每个构建下载的依赖项列表.

构建日志:

gitlab-ci-multi-runner 0.7.2(998cf5d)使用Docker执行器和图像android ...拉码头图像gitlab/gitlab-runner:build ...拉码头图像android:最新...警告:不能拉最新版本的图像android:最新:错误:图像库/ android:最新未找到警告:将使用本地找到的图像.

Running on runner-76acd9d3-project-74192-concurrent-0 via ff9200d4be41...
Fetching changes...
Removing .gradle/
Removing artifacts.upload.log
Removing rxfirebaseandroid/build/
HEAD is now at 7f151df djgfj
Checking out 7f151df2 as ci-gitlab...
HEAD is now at 7f151df... djgfj
Restoring cache...

$ gradle testDebug
Download https://jcenter.bintray.com/com/android/tools/build/gradle/1.3.0/gradle-1.3.0.pom
Download https://jcenter.bintray.com/com/android/tools/build/gradle-core/1.3.0/gradle-core-1.3.0.pom
Download https://jcenter.bintray.com/com/android/tools/build/builder/1.3.0/builder-1.3.0.pom
Download https://jcenter.bintray.com/com/android/tools/lint/lint/24.3.0/lint-24.3.0.pom
Download https://jcenter.bintray.com/net/sf/proguard/proguard-gradle/5.2.1/proguard-gradle-5.2.1.pom
Download https://jcenter.bintray.com/net/sf/proguard/proguard-parent/5.2.1/proguard-parent-5.2.1.pom
Download https://jcenter.bintray.com/com/android/tools/build/builder-model/1.3.0/builder-model-1.3.0.pom
Download https://jcenter.bintray.com/com/android/tools/build/builder-test-api/1.3.0/builder-test-api-1.3.0.pom
Download https://jcenter.bintray.com/com/android/tools/sdklib/24.3.0/sdklib-24.3.0.pom
Download https://jcenter.bintray.com/com/android/tools/sdk-common/24.3.0/sdk-common-24.3.0.pom
Download https://jcenter.bintray.com/com/android/tools/common/24.3.0/common-24.3.0.pom
Download …
Run Code Online (Sandbox Code Playgroud)

android gradle gitlab-ci gitlab-ci-runner

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

GitLab CI构建仍处于待定状态

我们最近开始在gitlab.com免费服务上使用GitLab-CI .起初一切都很好,但现在,似乎我们不能再建立我们的项目了.构建显示为pending并且不执行任何操作.

这是我们的构建列表中的内容:

建立

如果我们检查构建的详细信息:

细节

您可能会注意到,在列表中,每个构建都分配给一个运行者ID,但在详细信息页面中,runner部分为空.

起初,我们认为这只是由基础gitlab.com设施引起的延迟,但它真的只是停留在那里......

编辑

这是超过1年前,但我一直有关于这个问题的通知.如果我没记错的话,问题是由于GitLab本身.遵循GitLab文档并确保您的设置有效,并希望最好!

gitlab gitlab-ci gitlab-ci-runner

16
推荐指数
4
解决办法
9935
查看次数

GitLab CI手动启动作业(部署)

是否可以将gitlab ci作业标记为手动启动?

我需要它来部署应用程序,但我想决定它是否将被部署

continuous-deployment continuous-delivery gitlab gitlab-ci gitlab-ci-runner

15
推荐指数
2
解决办法
8977
查看次数

使用GitLabCI构建脚本中的GitLab API

我有一个像这样的GitLab CI构建脚本:

create release:
  stage: deploy
  tags:
    - basic
  only:
    - tags
  script:
    - GITLOG=$(echo "# Changes Log"; git log `git tag | tail -2 | head -1`..${CI_BUILD_TAG} --pretty=format:" - %s")
    - curl -X POST -d "private_token=$CI_BUILD_TOKEN&description=$GITLOG" "http://git.example.com/api/v3/projects/${CI_PROJECT_ID}/repository/tags/${CI_BUILD_TAG}/release"
Run Code Online (Sandbox Code Playgroud)

此步骤的目的是在GitLab发行版部分中自动从Git添加更改日志.

如果我在命令行上手动运行它并输入变量,那么这是有效的...

问题是CI_BUILD_TOKEN构建运行器中的值不是有效的GitLab专用令牌 - 它只是连接到Docker注册表的令牌 - 根据文档.

有没有办法获得一个有效的GitLab API令牌,构建运行器可以使用它来访问它正在运行构建的项目的API?似乎这应该是可能的.

GitLab Runner:

gitlab-runner -v
Version:      1.2.0
Git revision: 3a4fcd4
Git branch:   HEAD
GO version:   go1.6.2
Built:        Sun, 22 May 2016 20:05:30 +0000
OS/Arch:      linux/amd64
Run Code Online (Sandbox Code Playgroud)

gitlab gitlab-ci gitlab-ci-runner

15
推荐指数
2
解决办法
4522
查看次数

您能否设置 Gitlab CI 阶段,以便其他阶段不等待它完成?

假设我在中定义了这些阶段.gitlab-ci.yml

stages:
    - build
    - analysis
    - tests
    - deploy
    - post-deploy
Run Code Online (Sandbox Code Playgroud)

由于analysis需要花费很多时间并且我并不真正关心结果(我也已经allow_failure: true设置) - 是否可以以某种方式定义开始analysis然后立即启动下一阶段tests

我在官方文档上没有找到任何类似主题的参考。

编辑:

主要思想是所有其他阶段都可以运行,就好像它们analysis根本不存在一样。如果我将 和 置于analysis同一阶段tests,那么 和analysis都会tests同时运行,但是deploy直到它们都完成后才会启动。这可不行。我想tests完成然后启动deploydeploy完成后我想启动post-deploy。我真的不关心analysis结果,我只是想触发它并继续部署。

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

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

准备失败:无法连接到 unix:///var/run/docker.sock 上的 Docker 守护进程

我启动了一个docker容器gitlab-ci-runner,然后使用docker作为执行器注册了一个runner,使用node:latest作为docker镜像。但是当我向 gitlab 推送提交时?我收到了这个错误:

Running with gitlab-runner 11.3.1 (0aa5179e)
  on docker-ci 0f9fe2c4
Using Docker executor with image node:latest ...
ERROR: Preparation failed: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? (executor_docker.go:1150:0s)
Run Code Online (Sandbox Code Playgroud)

这是我的 gitlab config.toml:

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "docker-ci"
  url = "http://gitlab.xxxxxx.com/"
  token = "0......fc5"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "node:latest"
    privileged = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0 …
Run Code Online (Sandbox Code Playgroud)

node.js docker gitlab-ci-runner

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

/bin/sh: eval: 第 98 行: bash: 未找到

我懂了

/bin/sh: eval: line 98: bash: not found 
Run Code Online (Sandbox Code Playgroud)

通过执行 gitlabb .yml 文件来发送消息。

我在前面的脚本部分添加了这一行

- apk update && apk add openssh
Run Code Online (Sandbox Code Playgroud)

这没有帮助。

before_script:
  - apk update && apk add openssh
  - bash docker_install.sh > /dev/null

stages:
  - build
  - deploy
  - loadtest-local

build:
  stage: build
  script:
    - echo "building my application in ubuntu container..."

deploy:
  stage: deploy
  image: php:7.4
  script: 
    - phpunit Unittest.php
    

loadtest-local:
  image: 
    name: loadimpact/k6:latest
    entrypoint: [""]
  stage: loadtest-local
  script:
    - k6 run ./loadtests/performance-test.js
    - k6 run ./loadtests/inttest.js
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

gitlab gitlab-ci gitlab-ci-runner

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

什么是gitlab跑步者

我想我从根本上错过了一些东西.我是CI/CD的新手,并试图用gitlab设置我的第一个管道.

该项目是一个预先存在的PHP项目.

我还不想清理它,此刻我已经将整个东西推入了一个docker容器中,它正好与google cloud的mysql数据库等交谈,因为它应该在本地以及远程google云测试VM .我们的梦想是能够推动开发分支,然后将dev banch合并到测试分支中,然后TRIGGERS自动化测试(简单部分),并且还导致远程测试VM(托管在谷歌云上),推出最新更改,从最新的docker文件重建图像(或从gitlab图像寄存器中提取最新图像)...然后使用最新图像重建容器.

我正在玩gitlab的跑步者,但我不了解它的实际情况,尽管几乎查看了所有的在线内容.我只是将它安装在谷歌云虚拟机中,然后当我从我的开发机器推送到gitlab时...回购将"发出信号"跑步者(在VM上运行,执行一堆脚本(可能包括git拉最新的变化?).

因为我已经将我的应用程序预先打包到本地容器中(并将图像推送到图像注册表)我是否需要使用docker作为我在跑步者身上的执行者?或者我可以使用shell和shell命令吗?

我错过了什么?

TLDR和额外:

问题:

  1. 什么是跑步者实际上,它意味着安装在哪里?
    是否关心它运行在哪个目录中?
    如果它不关心它运行的目录,它在哪里执行它的脚本命令?在根?

  2. 如果我在本地构建自己的图像并将其上传到gitlab的注册表,

我需要将执行者设置为docker吗?我不应该只是将它设置为shell,拉动图像,并构建它?(假设跑步者在远程VM上运行).

gitlab gitlab-ci-runner devops

14
推荐指数
1
解决办法
7055
查看次数

gitlab runner 在末尾抛出“清理基于文件的变量 00:01 错误:作业失败:退出代码 1”

即使我的所有步骤都成功通过,Gitlab CI 显示了这一点 - “清理基于文件的变量 00:01 错误:作业失败:退出代码 1”

并最终失败了。同样有趣的是,这只发生在我的主分支上。它在其他分支上成功运行。有没有人遇到过这个问题并找到了解决方案?

    - >
     for dir in $(git log -m -1 --name-only -r --pretty="format:" "$CI_COMMIT_SHA"); do 
     if [[ -f "$dir" ]]; then 
     SERVICE=$(echo "$dir")
     # helm install the service
     fi
     done
    - echo "deployed" 

Run Code Online (Sandbox Code Playgroud)

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

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