Tag: jenkins

使用Docker与Jenkins上的“vendor”目录构buildGo应用程序

我试图build立一个Jenkinspipe道来构build和部署我的第一个Go项目,使用Jenkinsfile和docker.image().inside 。 我无法弄清楚如何去获取vendor/目录中的依赖关系。 当我运行构build时,我得到了一堆错误: + goapptesting。/ … src / dao / demo_dao.go:8:2:无法在以下任何位置find软件包“github.com/dgrijalva/jwt-go”: /usr/lib/go_appengine/goroot/src/github.com/dgrijalva/jwt-go(from $ GOROOT) /usr/lib/go_appengine/gopath/src/github.com/dgrijalva/jwt-go(from $ GOPATH) /workspace/src/github.com/dgrijalva/jwt-go …为什么不拿起Vendor目录? 当我抛出一些日志logging时,似乎在运行sh "cd /workspace/src/bitbucket.org/nalbion/go-demo" ,下一个sh命令仍然在原来的${WORKSPACE}目录中。 我真的很喜欢jenkins文件的想法,但我找不到任何像样的文件。 (编辑 – 这里有不错的文档,但是dir("/workspace/src/bitbucket.org/nalbion/go-demo") {}在docker.image().inside) 我的Docker文件类似于: FROM golang:1.6.2 #Google的App Engine Go SDK 运行wget https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-1.9.40.zip -q -O go_appengine_sdk.zip && \ unzip -q go_appengine_sdk.zip -d / usr / lib / && \ rm […]

如何configurationdocker来限制旋转容器的端口范围

我们使用jenkins和docker做CI / CD。 我们的Jenkins被设置为主/从风格,其中奴隶分布在不同的数据中心。 当一个新的版本需要发生的时候,jenkins大师在一个DC中识别出一个奴隶,并旋转一个短暂的容器,并在完成后将其撕下。 由于防火墙的限制,我们在某些DC上只有大约10个端口可用于从站。 例如端口范围:8000 – 8010.一般docker使用linux端口范围32768到61000.问题是jenkins主无法与容器交谈,如果主机端口被限制在8000 – 8010.jenkinsdocker插件有限制你不能绑定多个端口(可能是我在这里错了)。 我想知道是否我们可以在docker端或Jenkins docker插件中configuration此方法。

jenkinsdocker推谷歌云失败,例外

我正在通过jenkins构build一个docker镜像,并且想要使用jenkins插件(docker-build-step,Google Container Registry Auth Plugin,Google OAuth Credentials插件)将它部署到Google云registry中,使用以下说明: https:// wiki.jenkins-ci.org/display/JENKINS/Google+Container+Registry+Auth+Plugin 我在GCE上有一个VM实例,我安装了jenkins和docker。 构build工作正常,但是当我试图将其推送到registry时失败: 成功构buildc2ddc81c66d1 [Docker] INFO:成功创build镜像eu.gcr.io/$project-id/base [Docker] INFO:推送图片eu.gcr.io/$project-id/base 错误:生成步骤失败,出现exception javax.ws.rs.ProcessingException:org.apache.http.NoHttpResponseException:127.0.0.1:2375无法响应 在org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:513) 在org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:246) 在org.glassfish.jersey.client.JerseyInvocation $ 1.call(JerseyInvocation.java:667) 在org.glassfish.jersey.client.JerseyInvocation $ 1.call(JerseyInvocation.java:664) 在org.glassfish.jersey.internal.Errors.process(Errors.java:315) 在org.glassfish.jersey.internal.Errors.process(Errors.java:297) – 但是当我尝试通过SSH推它,它的工作原理: bash-4.2 $ whoami jenkins bash-4.2 $ gcloud docker push eu.gcr.io/$project-id/base 推是指一个仓库[eu.gcr.io/$project-id/base] 41772e41ab05:图层已经存在 a03f60753e4e:推送[=========>] 9.223 MB / 47.44 MB 我相信,如果这是从谷歌VM的某种范围,我不应该能够通过SSH做到这一点。 难道是jenkins用户环境variables? 任何人都有一个类似的情况下工作configuration? 任何知道jenkins的人都知道什么样的configuration可能造成这种情况? 此外,在使用http://127.0.0.1:2375作为docker url之前,我有unix:///var/run/docker.sock,并且使用该configuration,而不是“127.0.0.1:2375 no […]

让jenkins没有sudo运行docker工人

我想在Jenkins上运行Docker shell命令,如: docker ps 使用任何插件可以做到吗? 由于jenkins不是一个user ,但一个服务帐户我怎么可以添加到docker group ?

如何正确build立jenkins的maven / docker?

我有一个spring boot maven项目,需要构build一个docker镜像: <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <configuration> <imageName>${docker.image.prefix}/${project.artifactId}</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> <executions> <execution> <id>build-image</id> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> <execution> <id>tag-image</id> <phase>package</phase> <goals> <goal>tag</goal> </goals> <configuration> <image>api</image> <newName>registry.example.com/api</newName> </configuration> </execution> </executions> </plugin> </plugins> <resources> <resource> <directory>${basedir}/src/main/docker</directory> […]

为.net集装箱化应用程序创build一个CIpipe道

我的目标 正如标题所说,我正在尝试为将要在Linux中的dockerized环境中运行的大量.NET服务组装一个CI(持续集成)pipe道。 我组织中的开发人员目前使用C#和VSO / TFS,所以我们试图迁移到Linux平台,同时保留我们当前团队的工具/技能。 我在各种论坛上看到很多post,但一直没有find解决我的具体需求的任何东西 – 所以如果这之前已经回答 – 我将非常感激链接! 到目前为止,我已经做了以下试图certificate我能做些什么: 用unit testing创​​build一个C#项目。 将项目检入源代码pipe理(TFS在线) 在Linux上运行Jenkins 设置Jenkins来倾听源代码控制。 当检测到新代码时,使用MSBuild插件在Jenkins节点(这是Windows机器)上启动构build 如果构build完成而没有错误,则使用MSTest插件运行与C#项目关联的所有unit testing。 所有上述似乎工作得很好 – 这是我正在努力的下一个位。 我想做的事 现在我已经完成了一个构build并在代码中进行了testing,我希望能够执行以下操作(高级别): 将源代码从Jenkins窗口节点移动到Jenkins Linux节点 在Linux节点上构buildDocker容器 将Docker容器推入存储库 我曾经尝试过 我正在Jenkins使用自由式项目来编排上述内容。 (不知道这是不是正确的select – 但似乎没有打破汗水拉/build立/testing。) 我想,为了从Windows节点到Linux节点的代码,我需要推入到一个GIT仓库。 我的要求是,这是一个本地GIT,但如果这是不可能的,我愿意在线使用私人GIT。 我尝试build立一个Gogs-GIT本地存储库,但Jenkins并没有使用同样的语言。 在任何情况下 – 我一直无法弄清楚如何使用任何Jenkins插件将代码作为从我的Windows节点发布到不同的源代码控制环境中的后构build事件,而不是从第一个地方。 我现在想,也许我需要执行某种自定义脚本(也许在Windows节点上的批处理脚本)来推入GIT,然后有一个单独的Jenkins作业,侦听推送到GIT存储库启动Linux处理。 我对Linux和Jenkins都很新,所以任何帮助或指针都会很感激。

如何在Docker容器中获得root权限?

这些是我的行动: docker cp /my/path/.git mycontainer:/my/path/.git 然后我发现错了,所以我想要rm文件夹 docker执行程序-t -i mycontainer / bin / bash rm -Rf /my/path/.git 我获得了权限被拒绝 额外: 我怎样才能将我的.git(初始化)手动复制到jenkins git库中。 从远程存储库获取速度过慢。

需要在端口2375上为Jenkins上的docker插件创build监听器

我正在尝试使用下面的docker命令来创build一个jenkins容器服务器,同时启用docker插件的docker api。 docker run –name myjenkins -p 8080:8080 -d -p 50000:50000 -v /var/jenkins_home -H tcp://127.0.0.1:2375 jenkins 不幸的是,我得到了下面的错误信息,它指出docker运行不允许-H标志 `unknown shorthand flag: 'H' in -H See 'docker run –help'.` 任何想法,以创build此侦听器该怎么做?

Docker链接工作在一个主机上,但不是另一个

我有两个docker主机,一个用于生产,一个用于分段。 就我所知,它们是完全一样的。 他们运行相同的操作系统(Ubuntu)和相同的Docker版本。 我通过使用Docker中的链接function的Jenkins运行作业。 在升级过程中,这一切都可以完美地工作,但是在生产中,如果失败,则使用完全相同的命令。 他们都使用相同的registry。 这些命令(隐私稍微修改) docker run –detach –name bymysql –env=MYSQL_ROOT_PASSWORD=password dockerdistro-staging:5000/mysql docker run –link=bymysql -v /home/jenkins/data:/data dockerdistro-staging:5000/custom-container /command/we/run 使用暂存版本,它一切正常,但与生产版本我得到以下错误,由我们自己的代码,这是寻找一个名为bymysql的标准端口上的MySQL服务器生成。 mysqladmin: connect to server at 'bymysql' failed error: 'Can't connect to MySQL server on 'bymysql' (111)' Check that mysqld is running on bymysql and that the port is 3306. 鉴于它在分段工作正常,我认为这些命令是好的,并在configuration与主机有一些差异。 但我不知道什么会阻止链接function的工作。 神秘地,如果我手动运行生产框上的相同步骤,而不是通过jenkins,它也适用于生产! docker版本的输出(两者相同) […]

如何使用docker.image提供托pipe文件到Jenkins版本?

我正在尝试使用Jenkinspipe道来构build一个Maven Java项目,并将其构件部署到Nexus中。 Nexus凭证由Jenkinspipe理,所以我需要Jenkins提供Maven settings.xml文件。 我的pipe道使用docker运行构build。 我的Jenkinsfile如下所示: node('docker') { git 'git@bitbucket.org:myorg/myproject.git' stage 'Build and Test' // This throws: java.lang.UnsupportedOperationException: Refusing to marshal org.codehaus.groovy.runtime.InvokerInvocationException for security reasons //configFileProvider([configFile(fileId: '7d6efcd2-ff3d-43dc-be40-898dab2bff64', variable: 'MYSETTINGS')]) { // sh 'cp ${MYSETTINGS} mysettings.xml' // } docker.image('maven:3.3.9').inside { // sh 'mvn -s mysettings.xml -U -e clean deploy' // This fails trying to access AWS […]