Tag: jenkins

使用预先configuration的作业创buildJenkins Docker图像

我已经创build了一些本地部署pipe道作业,这些作业像删除现有容器,在本地构build服务,构buildDocker镜像,运行容器等等。这些不是CI / CD作业,只是用于部署的小pipe道本地在开发。 我现在要做的就是让所有的开发人员都能使用它,这样他们就可以简单地创build一个已经包含作业的jenkins本地实例。 我的docker文件是相当直截了当的… FROM jenkins:latest USER root RUN apt-get update RUN apt-get install -y sudo RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers # Docker RUN apt-get update RUN apt-get dist-upgrade -y RUN apt-get install apt-transport-https ca-certificates -y RUN sh -c "echo deb https://apt.dockerproject.org/repo debian-jessie main > /etc/apt/sources.list.d/docker.list" RUN apt-key adv –keyserver hkp://p80.pool.sks-keyservers.net:80 –recv-keys […]

如果我们可以直接暴露于80端口,反向代理的好处是什么?

用Docker安装Jenkins告诉我们EXPOSE到端口49001然后使用反向代理暴露到端口80.使用反向代理的好处是什么为什么不直接暴露给端口80?

Jenkins或其他开源的CI是否有分布式系统?

我有一套组成分布式系统的全状态服务。 每个人都有一个Docker文件,可以构build它并运行其unit testing。 我需要检查他们如何以分布式方式互相交互。 要运行testing,我需要: 能够在不同节点上同时运行多个Docker文件,这将被视为单个testing运行。 能够在每个Docker文件的命令执行顺序中设置障碍。 换句话说,假设所有的Docker文件同时运行,我需要确保所有的文件在Y阶段开始之前已经完成了阶段X 能够停止任何节点的故障。 有没有Jenkins插件/扩展这样的操作,还是有任何其他系统或方法可以解决这个问题?

Jenkins和Docker插件java.lang.NullPointerException:没有指定uri

我正在试图与Jenkins一起使用Docker插件。 但Jenkins无法访问REST API。 在jenkinsconfiguration我把Docker的REST的URL: http://127.0.0.1:4243 : http://127.0.0.1:4243 : http://127.0.0.1:4243 ,当点击testing连接,它给了我Something went wrong, cannot connect to http://127.0.0.1:4243, cause: null Jul 21, 2016 8:57:52 AM WARNING org.jenkinsci.plugins.dockerbuildstep.DockerBuilder$DescriptorImpl doTestConnection uri was not specified java.lang.NullPointerException: uri was not specified at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:204) at com.github.dockerjava.core.DockerClientConfig$DockerClientConfigBuilder.withUri(DockerClientConfig.java:406) at org.jenkinsci.plugins.dockerbuildstep.DockerBuilder$DescriptorImpl.createDockerClient(DockerBuilder.java:120) at org.jenkinsci.plugins.dockerbuildstep.DockerBuilder$DescriptorImpl.getDockerClient(DockerBuilder.java:204) at org.jenkinsci.plugins.dockerbuildstep.DockerBuilder$DescriptorImpl.doTestConnection(DockerBuilder.java:138) at sun.reflect.GeneratedMethodAccessor235.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) 但是,当我login到用户jenkins苏su jenkins并做一个curl 127.0.0.1:4243/info一切正常。 […]

如何使用Jenkins Pipeline插件启用SCM轮询

这是一个关于如何使用Jenkins Workflow插件进行SCM轮询的问题。 该线程回答了如何启用SCM轮询后在pipe道脚本中使用SCM轮询,但不包括如何启用 SCM轮询。 例如,如果您想使用mulit-branch pipeline插件使用Jenkinsfile自动创build作业,则我不知道在作业中启用了“Poll SCM”选项。 这使得很难设置按需环境,例如创build一个从一开始就设置了作业的Docker容器。 因为您必须login到Jenkins并转到configuration,并在容器启动后select“Poll SCM”选项。 Cloudbees提供了一个模板插件来帮助解决这个问题。 但是,这不是jenkins使用免费版本。 在免费版本的Jenkins上,用户是否有任何解决方法或解决scheme?

Docker映像版本用于持续集成/持续部署

我们正在实施持续集成和持续交付stream程,并使用两个众所周知的概念:Linux二进制包和Docker镜像。 大部分的工作已经完成了:我们从GitLab Aptly获取代码,编译它并把它放到Aptly存储的deb包中,然后我们为每个服务创buildDocker镜像,并将镜像推送到私有Docker Registry服务器。 之后,这些图像将滚动到testing环境。 最后我们启动服务并进行验收testing。 这是一个连续的过程,每次有人向提交origin/master推送提交时都会启动。 还有什么不清楚的是如何区分存储在Docker Registry中的稳定图像 ? 我们必须跟踪每个图像的状态,因为我们需要执行稳定服务器的定期更新。 很明显,某些版本(即图像版本)不能通过验收testing,必须标记为不可用,并在每次连续发送的迭代中将其过滤掉。 似乎没有这个function的默认实现: 默认的图像repo/tag是一个普通的普通string,不能同时拥有版本号,build立date和质量保证标志。 Labels ( 1.6中介绍)可能是解决scheme的一个很好的起点,但我们无法find重新标记现有图像的机会(请注意,我们需要考虑QA的结果更新图像“元数据”) 。 没有可用的标签值查询图像的方法,但我们可能会包装Docker API。 那么将版本分配给Docker镜像的正确方法是什么? QA相关信息如何存储? 我们如何“突出”稳定的形象构build? Jenkins CI特点可以用来达到这些目的吗? 请分享你的经验。 UPD:过了一段时间,我不得不在Docker问题跟踪器中开始讨论 。 也许有人会觉得它有用。

企业私人Dockerregistry最佳实践

当我们正在准备与我们自己的私人登记处一起展开时,这个问题最近出现在我的脑海里。 什么是企业最佳实践,为什么? Q1: 使用1个S3存储后端运行多个registry? 每个registry都有设置,可以将它推送到同一个S3存储桶中的dev,qa或prod(顶级)文件夹。 运行1registry与1个S3存储后端为所有dev / qa / prod环境? 由于Docker的整个目的是让图像在任何地方运行,所以我们只提供不同的docker运行参数,因为docker镜像本身在env中是完全相同的,只是你传递的运行参数是不同的。 每个环境运行1个registry和1个S3存储后端 Q2: 从开发者一路推广的形象,最好的做法是什么? 涉及到哪些工具组合。 例如,我们有一个用于Dockerfiles的中心gitlab,当我们检查新的Dockerfile时,会有一个钩子触发Jenkins从Dockerfile构build镜像并在registry中检查它。 什么是轻松推广的好方法(除非你之前select了第二种选项),图像到了下一个级别 – qa,并最终产生? Q3: 如果您更新了其中一个基本映像,那么确保将更改传播到registry中的其他映像上的方法是什么? 例如,你用新的东西来更新你自定义的基础Ubuntu Dockerfile,并且你希望使用这个基础镜像的其他Docker文件被重build并推送到registry中,这样更改将被自动传播。 Q4: 如果您拥有不同的AWS账户,那么它是否在以上所有方面发挥作用:DEV为1,QA为1,PROD为1等。

使用Jenkins CloudBees Docker自定义生成环境插件时无法使用Dockerfile

我尝试使用“在Docker容器内部构build”选项“从Dockerfile构build”,按照以下指南进行操作CloudBees Docker自定义构build环境插件 我已经把Dockerfile放在工作空间的根目录下(/ var / lib / jenkins / jobs / lumi / workspace)。 然后当一个构build触发,我得到下面的错误。 我认为它能够findDockerfile,但由于某种原因无法构build图像。 Build Docker image from ./Dockerfile … $ docker build –tag b916af9f0b3e48425cb54c323d1a3adb749a72a1 –file Dockerfile /var/lib/jenkins/jobs/lumi/workspace The Dockerfile (Dockerfile) must be within the build context (/var/lib/jenkins/jobs/lumi/workspace) FATAL: Failed to build docker image from project Dockerfile java.lang.RuntimeException: Failed to build docker image […]

如何释放与Jenkinspipe道的docker图像

我有一个项目来build立一个docker图像,在我的情况下,它是一个包含(容器内)数据的mongo图像的扩展。 我使用这个mongo docker镜像进行集成testing。 目前,Maven并不习惯构build这个项目。 当我想发布这个图像的一个版本,我在我的电脑上这是不理想的。 我想保留一个文件,其中包含我的泊坞窗图像的当前版本(如pom.xml)。 我应该做些什么,在我的项目中添加一个pom.xml,用于versionning和maven-release-plugin,添加一个简单的version.txt,在我的发布过程中进行更新? 还是有一个像“docker.version”文件,我不知道这样做? 我在GitHub上发布我的项目的一个例子: https : //github.com/Ameausoone/mongodb-docker-with-data

在子Dockerfile中使用ARG命令

我正在创build基于Jenkins Docker镜像的Dockerfile在镜像中添加一些预先安装的软件包(build-essential等)。 在Jenkins Dockerfile他们使用ARG命令来创buildjenkins用户和组:请参阅这些行 。 这是我的Dockerfile : FROM jenkins USER root RUN apt-get update && apt-get install -y build-essential USER jenkins 但是,当我build立它适合我的jenkins主机用户通过使用这一行: docker build –tag my-jenkins \ –build-arg user=jenkins \ –build-arg group=jenkins \ –build-arg uid=$(id -u jenkins) \ –build-arg gid=$(id -g jenkins) \ . 我有这个错误: One or more build-args [gid group uid user] were not […]