Tag: 持续集成

在集合中添加绑定挂载到容器以运行任务

我想访问我的工作者在执行任务时运行的主机上的docker套接字。 运行“常规”docker集装箱时,我可以将套接字装入容器。 我能不能在汇合中指定一个任务的时候做同样的事情?

在亚马逊ecs上的集装箱交货

我正在使用Amazon ECS在uat / production上自动部署容器。 什么是最好的方法来做到这一点? 我有几个前端客户端的REST API 我应该使用nginx将我的api容器打包在同一个容器中吗? 并与其他前端客户端做同样的事情。 或者我必须写一个大的任务定义,以汇集所有我的容器(db,nginx,php,api,clients):(但是这意味着我应该在每次push uat / prod时重新部署所有的基础设施 我很困惑。

Javadocker文件。 build立和testing或只是运行jar文件?

我正在考虑在CIpipe道中,我应该先build立和testing我的应用程序,结果应该是一个docker形象。 我想知道是否使用构build环境构build构build服务器,然后运行testing更常见。 也许使用这个构build脚本。 最后,将jar文件添加到使用COPY生成的Docker容器中,然后使用Entrypoint java -jar .jar。 所以保持Dockerfile非常小,并且在容器外testing和构build。 有点像这样: FROM openjdk:8-jre-alpine CMD java ${JAVA_OPTS} -jar *.jar COPY build/libs/*.jar . 或者,如果我应该将所有的源代码添加到容器,build立它,然后在容器中运行testing,然后让入口点(像以前一样)运行生成的jar文件? 所以保持在Dockerfile中的一切? 也许做一些清理也删除源代码 这并不一定是Java我猜,同样的问题适用于所有语言

在容器中build立和testing是否更好?

我正在为一个新项目创buildCI&CDpipe道。 由于我们使用的是Docker,下面是我的问题:在Docker容器中构build和testing是否更好,所以步骤如下: 构buildDocker镜像 在其中运行应用程序构build 在其中运行应用testing 推入Docker镜像 或在Docker容器之外,并且在CI通过后,构build映像: 直接在CI服务器(外部容器)上构build项目 在CI服务器(外部容器)上直接testing 构buildDocker镜像和推送

Docker撰写不启动mongo服务甚至主要服务取决于它

我正在尝试构buildcistream程,使用Docker-Compose和bash脚本构build,testing和发布我的.NET Core应用程序。 我有一个文件夹中的UnitTests,IntegrationTests和XApi项目,并创build了DockerFile和docker-compose.yml如下所示。 IntegrationTests依赖于mongointegration ,所以我添加了links和depends_on属性来testandpublish和depends_on testandpublish docker-compose.yml服务。 当我尝试docker-compose up testandpublish docker-compose up或者docker-compose up testandpublish ,它不能连接mongo。 (DockerFile – 第10步),mongo服务尚未启动(不明白为什么) 在步骤10中,如果我将RUN更改为CMD ,则可以连接到mongo,docker-compose正常工作。 但这次我无法检测到testing失败或在我的sh脚本中成功,因为现在它不会破坏docker-compose up命令。 我的问题是:为什么docker撰写不启动服务mongointegration ? 如果不可能,我怎么能理解服务testandpublish失败? 谢谢。 结构体: XProject -src -Tests -UnitTests -IntegrationTests -Dockerfile -docker-compose.yml -XApi 我的Dockerfile内容是(我已经添加行号来解释问题在这里): 1.FROM microsoft/dotnet:1.1.0-sdk-projectjson 2.COPY . /app 3.WORKDIR /app/src/Tests/UnitTests 4.RUN ["dotnet", "restore"] 5.RUN ["dotnet", "build"] 6.RUN ["dotnet", "test"] 7.WORKDIR /app/src/Tests/IntegrationTests 8.RUN […]

在镜像,但独立的生产环境中发生故障

我在“开发环境应尽可能接近生产环境”方面遇到一些问题。 (生产机器的操作系统是Linux。) 我对开发步骤的理解(粗略): 代码,编译,testing/运行,重复 “通常情况下,”我会在自己的机器上浏览这些代码,然后将代码推送到CI进行testing,并可能进行部署。 CI将负责在与生产相匹配的环境中运行testing,这样,如果testing通过,则认为代码在生产中也可以正常工作。 环境较大的问题 ☑某种数据库。 ☑作业处理池 – 用于一些长时间运行的后台任务。 ☑用户帐户pipe理 – 也被其他系统使用。 ☑集中logging – 理智。 ☑转发代理 – 在同一url但不同path下绑定各个http可访问的服务。 ☐可能的其他服务或服务集合。 解决scheme? 所有在我自己的机器上? 在地狱里没有办法。 所有在虚拟机上? 也许,但是安全方面,如果这个设置应该反映prod.env。和prod.env。 就是这样,好吧..如果违反,这可能不是一个好主意。 除以责任,并在多个虚拟机上设置它们? 谁来pipe理所有这些机器? 我认为可以做得比这更好。 使用像Docker这样的容器,或者自己一起打巴掌? 听起来不错:(可能:)非常快的迭代周期,关注点分离,一些分离的安全性,以及容易的重现性。 为了简单起见,假设我们select的集装箱化工具是Docker,而且我们不打算使用libvirt / lxc工具/直接内核调用来构build自己的工具。 所以Docker可能是CoreOS或者Project Atomic。 所以现在有一个应用程序(或多个应用程序)的容器已经与系统的其他部分分离,并且可以在任何地方几乎相同。 解决scheme1:生产环境漂亮,优雅。 问题1:这不是开发环境。 开发环境 不pipe怎样select不把生产环境洒到我自己的机器上,问题依旧: 即使生产环境设置正确,我也必须在某处进行编译和testing,然后才能部署(通过CI或其他方式进行另一轮testing)。 我如何解决这个问题? 实际上,解决这个问题的正确方法是通过在自己的机器上编写代码,使其在虚拟镜像生产环境中同步/直接可见,从而自动运行testing? 当我不想运行所有的testing时,会发生什么情况,但是现在只有我正在编写的部分呢? 每次都要编辑自动编译过程吗? 怎么样远程debugging,因为多个系统必须编排以正确的方式运行,debugging必须附加到其中一个程序之间。 更不要说“ 代码,testing ”周期的速度,这将是非常缓慢的。 这听起来像CI这样的helluvalot,但是多个开发人员不能全部使用相同的CI并修改它,所以他们可能必须在自己的机器上进行此设置。 我也在想,开发者可以使用一个完全虚拟化的操作系统,它包含了所有的开发工具,并且在生产环境中是镜像的,但是这会迫使老用户采用虚拟开发环境的工具,听起来这个好主意。

如何设置持续集成 – 部署:bitbucket,drone.io,docker hub,swarm?

我正在考虑如何使用bitbucket,drone.io,hub.docker.com和swarm(aws ec2)集群来设置持续集成和部署? 我将代码提交给bitbucket bitbucket的web钩子触发drone.io,它构build并运行testing 在每个“绿色”提交中,docker映像被推送到hub.docker.com,并使用“latest”标签部署到集成环境(swarm集群)。 我不知道如何设置步骤3 …

我如何运行Docker Swarm的集成testing?

我已经按照https://github.com/docker/swarm/blob/master/CONTRIBUTING.md中的说明来运行Swarm的集成testing,但是它们不起作用。 命令./test/integration/run.sh提供了不寻常的错误消息。 (有关完整输出,请参见http://pastebin.com/hynTXkNb )。 关于swappiness的消息是看起来错误的第一件事。 我的内核支持它 – 我testing了它。 / proc / sys / vm / swappiness是可读写的,可以通过sysctl.confconfiguration。 看起来错误的下一行是chmod。 它尝试访问/ usr / local / bin中的文件 – 这是错误的,因为Docker安装到/ usr / bin,并且因为该文件不会被任何人以root身份写入。 我知道守护进程正在运行,并正常工作。 例如: user@box:~$ docker run debian /bin/echo 'hello world asdf' WARNING: Your kernel does not support memory swappiness capabilities, memory swappiness discarded. hello world asdf 有谁知道如何解决这个问题,并获得集成testing运行? 如果没有,至less有人知道在哪里挖掘到Docker中的代码来找出失败的原因?

Jenkinspipe道推送Docker图像

我的Jenkins工作是在Dockers中运行的Pipeline: node('docker') { //Git checkout git url: 'ssh://blah.blah:29411/test.git' //Build sh 'make' //Verify/Run sh './runme' } 我正在使用内核,我的源代码花了很多时间从GIT(大约2GB)中获取。 我正在寻找如何将docker镜像用于下一个构build,以便它已经包含大部分源代码。 我可能需要做的是: docker push blahdockergit.blah/myjenkinsslaveimage 但它应该在容器外运行。

为什么我的自动构build在Docker容器内运行得如此缓慢?

目前,我正在为Rowley Associates CrossStudio开发的各种embedded式固件项目开发自动化构build/ CI系统。 这些项目可以使用CrossBuild在命令行构build。 现在,到Docker部分: 我们需要一种保证一致的构build环境的方法。 构build必须在任何工程师工作站或构build服务器上以相同的方式运行。 由于所有构build步骤(包括运行CrossBuild)都可以在命令行Linux环境中执行,所以我select使用Docker容器来保证环境的一致性。 我的意图是以如下方式使用Docker容器作为一次性的“构build机器人”。 当一个构build开始时(无论是由工程师手动还是通过自动构build过程),都会从相应的映像创build一个容器,stream程运行完成,输出复制到永久性存储,然后容器被丢弃。 目前,我正在手动完成构build步骤,以certificate一切正常。 它不! 我有一个Docker容器与适当的工具安装,并可以手动调用CrossBuild,并成功地build立我的项目。 不幸的是,构build需要大约30分钟才能完成。 相比之下,如果我在Windows工作站上直接使用相同的工具,build立时间约为1.5分钟。 我有一个Windows 7(x64)工作站,所以要运行Docker容器,我在VirtualBox上使用Boot2Docker。 如果我观察Docker容器的CPU和内存使用情况(通过在Boot2Docker虚拟机内运行ps -aux或在Windows任务pipe理器中观察Boot2Docker虚拟机的资源使用情况),几乎不使用任何资源(CPU使用率<5% ,几十兆字节的RAM)。 如果我直接在Windows上使用CrossBuild构build项目,则CPU使用率会波动,但会达到25%的峰值(即最大化我的4个线程中的一个)。 我已经certificate,原则上,Docker容器中的进程可以通过在Python中编写一个简单的无限循环,运行它并观察主机上的任务pipe理器中的CPU使用情况来占用所有可用的CPU资源。 正如所料,一个核心被充分利用。 更多信息 在幕后,CrossBuild正在推动GCC-ARM 为了使数据进出Docker容器,我使用了VirtualBox共享文件夹,然后使用每个共享的-v参数创build容器。 目前的调查线 我只是有一点灵感,开始怀疑是否可能有读取/写入的带宽限制,因为我得到的数据进出容器的方式(即CPU从来没有被充分利用的大部分时间花在等待读取和写入)。 我会调查这种可能性。