标签: concourse

测试容器完成时终止docker compose

我目前正在运行一个docker-compose堆栈,用于基本集成测试,包括量角器测试运行器,服务于网页的nodejs服务器和服务于java后端的wildfly服务器.

堆栈是从我的构建服务器(concourse ci)中的dind(docker in docker)容器中运行的.

但似乎容器在完成量角器测试时不会终止.

因此,由于wildfly和nodejs的容器仍在运行,因此构建任务永远不会完成......

如何在测试结束时使作曲成功或失败?

# Test runner
test-runner:
  image: "${RUNNER_IMG}"
  privileged: true
  links:
    - client
    - server
  volumes:
  - /Users/me/frontend_test/client-devops:/protractor/project
  - /dev/shm:/dev/shm
  entrypoint:
    - /entrypoint.sh
    - --baseUrl=http://client:9000/dist/
    - /protractor/conf-dev.js
    - --suite=remember
# Client deployment
client:
  image: "${CLIENT_IMG}"
  links:
    - server
# Server deployment
server:
  image: "${SERVER_IMG}"
Run Code Online (Sandbox Code Playgroud)

docker docker-compose concourse

27
推荐指数
3
解决办法
8564
查看次数

Concourse CI:利用docker图像缓存

我完全理解Concourse是无国籍的,但是有没有办法重新使用已经拉过的docker图像?在我的例子中,我构建了~10个具有相同基本图像的docker图像,但每次构建都被触发Concourse将基本图像拉10次.

是否可以使用标准docker资源将该图像拉一次并在以后重新使用它(至少在同一版本的范围内)?

是的,应该可以使用自定义图像并在sh脚本中编写它,但我不喜欢邀请自行车.

如果标准docker资源不允许,是否可以以某种方式扩展它以启用此类行为?

--cache-from 没有用,因为CI花费大部分时间来拉动图像,而不是构建新图层.

docker concourse

21
推荐指数
1
解决办法
5163
查看次数

大厅:如何将作业的输出传递给不同的作业

文档中我不清楚是否有可能将一个作业的输出传递给另一个作业(不是从任务到任务,而是从一个工作到另一个工作).

我不知道从概念上讲我是做正确的事情,也许它应该在Concourse中以不同的方式建模,但我想要实现的是将Java项目的管道分成几个细粒度的工作,这些工作可以并行执行,如果我需要重新运行一些工作,并独立触发.

我怎么看管道:

  1. 第一份工作:
    • 从github repo中提取代码
    • 用maven构建项目
    • 将工件部署到maven存储库(mvn deploy)
    • 更新SNAPSHOTMaven项目子模块的版本
    • 将工件(jar文件)复制到输出目录(outputtask)
  2. 第二份工作:
    • 捡起jar来的output
    • 为所有这些(并行)构建docker容器
  3. 管道继续

我无法将output作业1从作业2 传递到作业2.此外,我很好奇,如果我对原始git repo资源所引入的任何更改将出现在下一个作业中(从作业1到作业2).

所以问题是:

  1. 将构建状态从作业传递给作业的正确方法是什么(我知道,作业可能会安排在不同的节点上,并且肯定在不同的容器中)?
  2. 是否有必要将状态存储在资源中(例如,S3/git)?
  3. Concourse是否因设计无国籍(在此背景下)?
  4. 哪里是获取更多信息的最佳地点?我已经尝试了手册,它不是​​那么详细.

到目前为止我发现了什么:

  1. outputs不是从一个工作岗位传递给工作的
  2. 资源的任何更改(put到github repo)都会在下一个作业中获取,但工作副本中的更改不会

最小的例子(如果注释行没有注释错误,则会失败:) missing inputs: gist-upd, gist-out:

---
resources:
  - name: gist
    type: git
    source:
      uri: "git@bitbucket.org:snippets/foo/bar.git"
      branch: master
      private_key: {{private_git_key}}

jobs:
  - name: update
    plan:
      - get: gist
        trigger: true

      - task: update-gist
        config:
          platform: …
Run Code Online (Sandbox Code Playgroud)

concourse

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

会话未创建:Chrome版本必须介于71到75之间-在Concourse中运行angular e2e时

在控制台中执行e2e测试时,出现以下错误,好像chromedriver没有更新。在讨论有关chrome版本落后的类似问题时,在我看来,chrome稳定版本正在按预期方式下载(76.0.3809.100)。但是被量角器的webmanager驱动程序拉出的chromedriver版本停留在2.46中。

我尝试将chromedriver从2.46手动更新为76.0.3809.12,但在执行过程中仍回落至2.46。

#!/bin/bash

set -e -u -x

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -

sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'

apt-get update && apt-get install -y google-chrome-stable

cd git-platformUI/ui

npm install

npm set progress=false && npm config set depth 0 && npm cache clean --force

$(npm bin)/ng e2e --configuration=$CONFIG
Run Code Online (Sandbox Code Playgroud)

[07:33:13] E /启动器-未创建会话:Chrome版本必须介于71和75之间(驱动程序信息:chromedriver = 2.46.628388(4a34a70827ac54148e092aafb70504c4ea7ae926),平台= Linux 4.15.0-36-通用x86_64)[07 :33:13] E / launcher-SessionNotCreatedError:未创建会话:Chrome版本必须介于71和75之间(驱动程序信息:chromedriver = 2.46.628388(4a34a70827ac54148e092aafb70504c4ea7ae926),platform = Linux 4.15.0-36-generic x86_64)在parseHttpResponse(/ tmp / build / 357f536d / git-platformUI / …

protractor concourse angular angular-e2e

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

为什么Concourse在"put"之后"获得"资源?

当我配置以下管道时:

resources:
- name: my-image-src
  type: git
  source:
    uri: https://github.com/concourse/static-golang
- name: my-image
  type: docker-image
  source:
    repository: concourse/static-golang
    username: {{username}}
    password: {{password}}

jobs:
- name: "my-job"
  plan:
  - get: my-image-src
  - put: my-image
Run Code Online (Sandbox Code Playgroud)

构建并将图像推送到Docker注册表后,它随后会提取图像.这可能需要一些时间,最终并没有真​​正为构建添加任何内容.有没有办法禁用它?

concourse

10
推荐指数
1
解决办法
1434
查看次数

是否可以在不推动它的情况下构建泊坞窗图像?

我想在我的管道中构建一个docker镜像,然后在其中运行一个作业,而不是推动或拉动图像.

这可能吗?

concourse

10
推荐指数
1
解决办法
2087
查看次数

与Windows容器的大厅

我尝试设置一个支持尽可能多的语言/平台的大厅构建服务器(http://concourse-ci.org/).

我已经读过,从Windows Server 2016开始,可以将Windows作为容器.当concourse在其网站上写道支持多个平台(包括Windows)时,我想知道这是否意味着可以使用Windows容器?

如果无法运行Windows容器,我是否可以以某种方式使虚拟机而不是容器?

windows containers build-server windows-server-2016 concourse

9
推荐指数
2
解决办法
3013
查看次数

Dockerhub的访问令牌

我创建了一个存储库hub.docker.com,现在想要使用我的凭据将我的图像推送到Dockerhub.我想知道是否必须使用我的用户名和密码,或者我是否可以创建某种访问令牌来推送docker镜像.

我想要做的是使用docker-imageConcourse 的资源将图像推送到Dockerhub.因此,我必须配置如下凭据:

type: docker-image
source:
  email: {{docker-hub-email}}
  username: {{docker-hub-username}}
  password: {{docker-hub-password}}
  repository: {{docker-hub-image-dummy-resource}}
Run Code Online (Sandbox Code Playgroud)

我不想使用我的Dockerhub密码.

authentication docker docker-registry concourse

9
推荐指数
2
解决办法
4776
查看次数

如何通过 Concourse CI 管道发送电子邮件?

如何设置在 Concourse 中的工作完成或失败时发送的电子邮件?

email continuous-integration concourse

7
推荐指数
1
解决办法
2189
查看次数

如何在构建之间缓存maven存储库?

我的目标是能够使用councourse构建管道构建,打包和测试使用maven构建的java项目.

这样的设置就绪,一切运行正常,但由于我们的连接的maven下载速度不佳,构建时间太长.

我的构建作业yml文件使用以下资源作为maven构建的基础:

# ...
image_resource:
  type: docker-image
  source:
    repository: maven
    tag: '3.3-jdk-8'
# ...
Run Code Online (Sandbox Code Playgroud)

我知道每个建筑物都有一块"空白石板",这是因为设计上有很多东西.

现在我的问题是:什么是缓存本地maven存储库的好方法(比如说,至少有一些基本内容,如Spring和它的依赖项)?

以下选项出现在我的脑海中:

  1. 使用已内置依赖项的docker镜像
  2. 创建一个为我提供所需依赖项的资源

据我所知,选项1)不会使构建的下载大小变小,因为大厅似乎没有缓存用作构建作业基础的docker镜像(或者我错在这里?)

在我继续之前,我想确保以下选项2)给我带来任何好处 - 使用concourse缓存docker图像作为资源吗?

我可能会错过一些东西,因为我对国会比较陌生.如果我强迫你在这里说明显而易见的话,请原谅我.:)

concourse

7
推荐指数
1
解决办法
2736
查看次数