标签: gitlab-ci

docker-in-docker(dind)服务在gitlab ci中的作用

根据官方gitlab文档,docker buildci管道内启用的一种方法是使用dind服务(就gitlab-ci 服务而言).

但是,由于在docker执行程序上运行ci作业总是如此,因此docker:latest也需要图像.

有人能解释一下:

  • docker:dinddocker:latest图像有什么区别?
  • (最重要的):为什么这两个服务和所需要的泊坞窗图像(如所示在这个例子中,从GitHub的文档链接)来执行如docker buildwhithin一个CI的工作吗?不是docker:latest图像(作业将在其中执行!)包含docker守护程序(我认为docker-compose也是),它们是我们需要的命令所必需的工具(例如docker build,docker push等等)?

除非我错了,否则问题或多或少变成:

为什么docker客户端和docker守护程序不能驻留在同一个docker(启用)容器中

continuous-integration gitlab docker gitlab-ci

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

如何在 .gitlab-ci.yml 中转义冒号?

我有这样的一行:

sed -i 's/"host: TND_HOST"/"host: process.env.TND_HOST"/g' services/management/tnd.js
Run Code Online (Sandbox Code Playgroud)

上面的选项会导致 linting 错误:

This GitLab CI configuration is invalid: (<unknown>): mapping values are not allowed in this context at line [...]
Run Code Online (Sandbox Code Playgroud)

其他不起作用的选项是:

This GitLab CI configuration is invalid: (<unknown>): mapping values are not allowed in this context at line [...]
Run Code Online (Sandbox Code Playgroud)

有什么办法可以克服这个问题并将其保留为一句台词吗?

yaml gitlab-ci

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

如何在CI构建中访问多个存储库?

我们有一个由多个(非公共)存储库组成的项目.

要构建整个项目,构建系统需要拥有所有存储库(master分支)的文件.

有没有办法配置GitLab CI来提供我需要的存储库?

我想我可以git fetch在CI构建期间做一个或类似的,但是如何处理身份验证呢?

gitlab gitlab-ci

36
推荐指数
3
解决办法
3万
查看次数

我怎样才能让gitlab-ci-runner的DinD图像缓存中间图像?

我有一个Dockerfile,从安装texlive-full软件包开始,这是一个巨大的,需要很长时间.如果我docker build在本地,安装后创建的中间图像被缓存,后续构建很快.

但是,如果我推送到我自己的GitLab安装并启动GitLab-CI构建运行器,这似乎总是从头开始,重新下载FROM映像,再次执行apt-get安装.这对我来说似乎是一个巨大的浪费,所以我试图弄清楚如何让GitLab DinD图像在构建之间缓存中间图像,到目前为止没有运气.

我已经使用了尝试--cache-dir,并--docker-cache-dirgitlab-runner register命令,都无济于事.

这甚至是gitlab-runner DinD图像应该能够做到的吗?

我的.gitlab-ci.yml:

build_job:
    script:
    - docker build --tag=example/foo .
Run Code Online (Sandbox Code Playgroud)

我的Dockerfile:

FROM php:5.6-fpm
MAINTAINER Roel Harbers <roel.harbers@example.com>
RUN apt-get update && apt-get install -qq -y --fix-missing --no-install-recommends texlive-full
RUN echo Do other stuff that has to be done every build.
Run Code Online (Sandbox Code Playgroud)

我使用GitLab CE 8.4.0和gitlab/gitlab-runner:latest作为跑步者

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

gitlab docker gitlab-ci gitlab-ci-runner

36
推荐指数
1
解决办法
9633
查看次数

如何使用AWS CodeDeploy/CodePipeline/S3将Gitlab-Ci部署到EC2

我一直在使用Gradle开发基于Scala的SlackBot项目,并且一直在研究如何利用Gitlab-CI来部署到AWS EC2.

我可以使用Gitlab-CI完全构建和测试我的应用程序.

如何使用CodeDeploy和CodePipeline从Gitlab-CI到Amazon EC2执行部署?

回答以此作为指南.

amazon-s3 amazon-ec2 gradle gitlab-ci aws-code-deploy

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

更改Gitlab CI Runner用户

目前,当我在GitlabCI中开始构建时,它在gitlab-runner用户下运行.我想将其改为公司的内部用户.我没有找到/etc/gitlab-runner/config.toml的任何参数来解决这个问题.

我目前的配置:

concurrent = 1
[[runners]]
  name = "deploy"
  url = ""
  token = ""
  executor = "shell"
Run Code Online (Sandbox Code Playgroud)

gitlab gitlab-ci gitlab-ci-runner

31
推荐指数
3
解决办法
3万
查看次数

gitlab-ci SSH 密钥格式无效

我想使用 gitlab-ci 运行部署脚本,但步骤 ssh-add$SSH_PRIVATE_KEY返回错误:

echo "$SSH_PRIVATE_KEY" | ssh-add -
Error loading key "(stdin)": invalid format
Run Code Online (Sandbox Code Playgroud)

你可以看到我的.gitlab-ci.yml

deploy:
  image: node:9.11.1-alpine
  stage: deploy
  before_script:
    # Install ssh-agent if not already installed, it is required by Docker.
    # (change apt-get to yum if you use a CentOS-based image)
    - 'which ssh-agent || ( apk add --update openssh )'

    # Add bash
    - apk add --update bash

    # Add git
    - apk add --update git

    # Run ssh-agent (inside the …
Run Code Online (Sandbox Code Playgroud)

gitlab gitlab-ci

31
推荐指数
8
解决办法
2万
查看次数

.gitlab-ci.yml 中的规则条件是否有 AND 选项?

我想创建一些嵌套条件:当它是合并或合并请求并且以特定名称启动“功能”时,我需要此管道才能工作。那么,作业的“唯一”选项中是否有 AND 条件?

logic gitlab-ci gitlab-ci-runner

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

使用gitlab的nginx来提供另一个应用程序

您好我已经使用此https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md#installation安装了Gitlab

现在我想使用nginx来提供除gitlab应用程序以外的其他内容我该怎么做呢

  • 我需要修改的配置文件在哪里
  • 如何指向像/ var/www这样的目录,以便nginx知道这是另一个应用程序的根目录.

更新(忘了提到我在Red Hat 6.5,Debian/Ubuntu解决方案欢迎下运行它)

nginx gitlab gitlab-ci

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

使用gitlab-ci.yml文件的代码覆盖率报告

我需要在Gitlab中看到java maven项目的代码覆盖率报告.根据这个,这个和其他一些来源:

  1. 我添加jacoco到插件列表中pom.xml.
  2. 在我的.gitlab-ci.yml文件中添加了页面作业.
  3. 添加Total.*?([0-9]{1,3})%到项目设置中的代码覆盖解析.

但是没有任何报道报道,或者至少我看不到它.没有覆盖百分比或覆盖率报告页面.

.gitlab-ci.yml文件内容:

image: maven:latest

variables:
  MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
  MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"

cache:
  paths:
    - .m2/repository/

build:
  stage: build
  script:
    - mvn $MAVEN_CLI_OPTS compile

test:
  stage: test
  script:
    - mvn $MAVEN_CLI_OPTS test
  artifacts:
    paths:
      - target/site/jacoco/
pages:
  stage: deploy
  dependencies:
    - test
  script:
   - mkdir public
   - mv target/site/jacoco/index.html public
  artifacts:
    paths:
      - public

deploy:
  stage: deploy …
Run Code Online (Sandbox Code Playgroud)

code-coverage maven jacoco gitlab gitlab-ci

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