标签: gitlab-ci-runner

构建之后的测试将在gitlab-ci上的新环境中运行

我有以下配置为.gitlab-ci.yml,但我在成功传递构建阶段后发现(这将创建一个名为venv的virtualenv),似乎在测试阶段你会得到一个全新的环境(没有venv目录在所有).所以我想我应该将setup脚本放在before_script中,因为它会在每个阶段运行(build/test/deploy).这是一种正确的方法吗?

before_script:
  - uname -r 

types:
  - build
  - test
  - deploy

job_install:
  type: build
  script:
    - apt-get update
    - apt-get install -y libncurses5-dev
    - apt-get install -y libxml2-dev libxslt1-dev
    - apt-get install -y python-dev libffi-dev libssl-dev 
    - apt-get install -y python-virtualenv
    - apt-get install -y python-pip
    - virtualenv --no-site-packages venv
    - source venv/bin/activate
    - pip install -q -r requirements.txt
    - ls -al
  only:
    - master

job_test:
  type: test
  script:
    - ls -al
    - source venv/bin/activate
    - cp crawler/settings.sample.py crawler/settings.py …
Run Code Online (Sandbox Code Playgroud)

gitlab gitlab-ci gitlab-ci-runner

12
推荐指数
1
解决办法
2134
查看次数

gitlab如何决定将哪个跑步者用于工作

如果项目有多个可用的跑步者,gitlab ci如何决定使用哪个跑步者?

我有一个omnibus gitlab 8.6.6-ee安装,配置了2个跑步者.跑者是相同的(docker图像,配置等),除了它们在不同的计算机上运行.

如果他们都是空闲的,那么他们中的任何一个都可以运行,哪个会运行?

gitlab gitlab-ci gitlab-ci-runner gitlab-omnibus

12
推荐指数
1
解决办法
1827
查看次数

Gitlab CI无法从私有docker注册表中提取图像

我想创建一个基于Docker的Gitlab CI运行器,它从私有Docker Registry(v2)中提取构建的docker镜像.我不能让Gitlab Runner从本地注册表中提取图像,它试图从/v1API中获取内容.我收到以下错误消息:

错误:构建失败:拉图像时出错:获取http:// registry:5000/v1/repositories/maven/images:在127.0.1.1:53上拨tcp:lookup注册表:没有这样的主机

这是一个最小的例子,使用docker-compose和Web浏览器.

我有以下docker-compose.yml文件:

version: "2"

services:
  gitlab:
    image: gitlab/gitlab-ce
    ports:
      - "22:22"
      - "8080:80"
    links:
      - registry:registry

  gitlab_runner:
    image: gitlab/gitlab-runner
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    links:
      - registry:registry
      - gitlab:gitlab

  registry:
    image: registry:2
Run Code Online (Sandbox Code Playgroud)

在第一次Gitlab登录后,我将跑步者注册到Gitlab实例中:

root@130d08732613:/# gitlab-runner register
Running in system-mode.                            

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/ci):
http://192.168.61.237:8080/ci         
Please enter the gitlab-ci token for this runner:
tE_1RKnwkfj2HfHCcrZW
Please enter the gitlab-ci description for this runner:
[130d08732613]: docker
Please enter the …
Run Code Online (Sandbox Code Playgroud)

gitlab gitlab-ci gitlab-ci-runner

12
推荐指数
1
解决办法
4430
查看次数

无法访问在docker中创建的docker-compose容器

我有一个docker-compose.yml文件在端口上启动简单的HTTP回显服务8800.

version: '2'

services:
    echo-server:
        image: luisbebop/echo-server
        container_name: echo-server
        ports:
        - "8800:8800"
Run Code Online (Sandbox Code Playgroud)

超级简单的东西.如果我docker-compose up在本地计算机上运行并运行:

echo "Hello World" | nc 127.0.0.1 8800
Run Code Online (Sandbox Code Playgroud)

然后我看到回声.但是:如果我在docker容器中运行同一个compose场景,通过GitLab运行器,它会失败.

我试图在GitLab上引起关注这个问题,但结果有限:https://gitlab.com/gitlab-org/gitlab-ce/issues/26566

我的.gitlab-ci.yml文件看起来像:

---

stages:
  - docker_test

services:
  - docker:dind

docker_test:
  stage: docker_test
  image: docker:latest
  script:
  - docker version
  - apk update
  - apk add py-pip
  - pip install docker-compose
  - docker-compose up -d
  - sleep 10
  - netstat -tulpn
  - docker-compose port echo-server 8800
  - …
Run Code Online (Sandbox Code Playgroud)

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

12
推荐指数
1
解决办法
1156
查看次数

如何在 gitlab-runner 容器内运行的 docker 中的 docker 中运行 docker-compose?

我在 docker 容器中有一个 gitlab runner,如果我运行像 nginx 这样的图像,运行良好。但是现在我尝试在 gitlab runner 中的 docker (dind) 中运行 docker,我想在 dind 中运行 docker-compose。Docker 信息运行良好,但如果我尝试运行 docker-compose,我会收到一个权限被拒绝的错误。

我将 /usr/local/bin/docker-compose 文件链接到 gitlab runner 容器,并将其输入到 runner config.toml 文件的卷参数中。

如果我尝试运行 sudo,它会以未知的命令错误结束,因此这不是解决方案。

我是否必须更多地链接一些文件,还是链接到许多嵌套容器?

docker gitlab-ci-runner docker-compose

12
推荐指数
2
解决办法
9340
查看次数

使用GitLab CI Pipeline构建.NET解决方案

我有一个包含几个.NET项目的解决方案.我使用GitLab而不是自托管来进行版本控制,并且也想开始使用他们的CI工具.我已将以下.gitlab-ci.yml文件添加到我的root:

stages:
  - build
  - test

build_job:
  stage: build
  script:
  - 'echo building...'
  - 'msbuild.exe Bizio.sln'
  except:
  - tags

test_job:
  stage: test
  script:
  - 'echo: testing...'
  - 'msbuild.exe Bizio.sln'
  - 'dir /s /b *.Tests.dll | findstr /r Tests\\bin\\ > tests_list.txt'
  - 'for /f %%f in (tests_list.txt) do mstest.exe /testcontainer: "%%f"'
  except:
  - tags
Run Code Online (Sandbox Code Playgroud)

build阶段总是失败,因为它不知道什么msbuild是.确切的错误是:

/ bin/bash:第61行:msbuild.exe:找不到命令

经过一番调查,我发现我正在使用共享的跑步者.以下是作业运行的整个输出:

Running with gitlab-runner 10.6.0-rc1 (0a9d5de9)
  on docker-auto-scale 72989761
Using Docker executor with image ruby:2.5 ...
Pulling docker …
Run Code Online (Sandbox Code Playgroud)

.net msbuild continuous-integration gitlab gitlab-ci-runner

12
推荐指数
2
解决办法
9012
查看次数

Gitlab DOCKER_AUTH_CONFIG 不工作

以下是我的 .gitlab-ci.yml

stages:
  - build

variables:
  DOCKER_HOST: tcp://docker:2375/
  DOCKER_DRIVER: overlay2

services:
  - docker:dind

build-image:
  image: docker:stable
  stage: build
  script:
    - docker build --no-cache -t repo/myimage:$CI_JOB_ID .
    - docker push repo/myimage:$CI_JOB_ID
Run Code Online (Sandbox Code Playgroud)

我已经在 Gitlab 中设置了 DOCKER_AUTH_CONFIG,如下所示(包含所有匹配的可能性)

{
    "auths": {
        "https://index.docker.io": {
            "auth": "...."
        },
        "https://index.docker.io/v1/": {
            "auth": "..."
        },
        "https://index.docker.io/v2/": {
            "auth": "..."
        },
        "index.docker.io/v1/": {
            "auth": "..."
        },
        "index.docker.io/v2/": {
            "auth": "..."
        },
        "docker.io/repo/myimage": {
            "auth": "..."
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

但是,每当尝试推送图像时,就会出现以下错误

$ docker push repo/myimage:$CI_JOB_ID
The push refers to repository [docker.io/repo/myimage] …
Run Code Online (Sandbox Code Playgroud)

gitlab docker gitlab-ci gitlab-ci-runner

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

docker login in custom gitlab-runner: No such host (http://docker:2375/v1.39/auth: dial tcp: lookup docker on 172.31.0.2:53: no such host)

我在 gitlab.com 上有一个私人仓库。我已经使用 gitlab 共享运行程序设置了 CI/CD 管道。在代码推送上,构建了一个 docker 镜像,登录到 gitlab 私有 docker 注册表并推送镜像。它适用于共享的跑步者。现在我正在尝试为管道创建自定义运行器。

我在 DigitalOcean 上创建了一个 Droplet(Ubuntu 18.04 上的 Docker 18.09.2~3 - 8 GB / 4 CPU / 160 GB SSD)

ssh 进入液滴

创建一个跑步者(来自https://docs.gitlab.com/runner/install/docker.html#docker-image-installation-and-configuration

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

并注册它(来自https://docs.gitlab.com/runner/register/index.html#one-line-registration-command

docker run --rm -t -i -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register \
  --non-interactive \
  --executor "docker" \
  --docker-image alpine:3 \
  --url "https://gitlab.com/" \
  --registration-token "MY_TOKEN" \
  --description "docker-runner" …
Run Code Online (Sandbox Code Playgroud)

gitlab docker gitlab-ci-runner

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

[karma-server]:TypeError:无法读取未定义的属性“范围” - CI 环境中的 Angular 单元测试

我们的 CI/CD 管道停止处理“ng test”作业并失败并显示以下错误消息:

[karma-server]: TypeError: Cannot read property 'range' of undefined
    at handleRangeHeaders (/builds/......../node_modules/webpack-dev-middleware/lib/util.js:131:21)
    at processRequest (/builds/......../node_modules/webpack-dev-middleware/lib/middleware.js:98:19)
    at ready (/builds/......./node_modules/webpack-dev-middleware/lib/util.js:53:12)
    at handleRequest (/builds/........../node_modules/webpack-dev-middleware/lib/util.js:182:5)
    at /builds/............/node_modules/webpack-dev-middleware/lib/middleware.js:64:7
    at new Promise (<anonymous>)
    at middleware (/builds/........../node_modules/webpack-dev-middleware/lib/middleware.js:63:12)
Run Code Online (Sandbox Code Playgroud)

添加句点以列出一些特定的回购名称

我们以前从未遇到过此错误,并且以前运行良好。同样奇怪的是,当我在本地运行它时,它工作得很好。但是当 GitLab 运行程序执行它时,它失败了。任何帮助,将不胜感激。谢谢!

typeerror karma-jasmine gitlab-ci-runner angular

12
推荐指数
5
解决办法
7482
查看次数

为什么我在 Gitlab 合并请求中收到“管道因用户未经验证而失败”和“分离的合并请求管道”?

当非所有者开发人员将分支推送到我们的 Gitlab 存储库时,它会返回一条“管道失败”消息,其中包含详细信息“管道由于未验证用户而失败”。在开发人员的帐户上,他收到添加信用卡以验证他是否有资格获得免费管道分钟的提示。

但是我没有设置任何管道 - 我的 repo 中没有 gitlab-ci.yml 文件,新分支也没有。Gitlab 上项目的 CI/CD 选项卡下没有作业或计划。那么为什么有一个标记说分支在管道中失败了呢?

pipeline gitlab gitlab-ci gitlab-ci-runner gitlab-pipelines

12
推荐指数
4
解决办法
3444
查看次数