Tag: jenkins

添加命令失败,同时在jenkins中使用docker-build-step插件构builddockerfile

以下是我的DockerFile FROM centos:centos6 MAINTAINER Priyanka ################## Helpful utils RUN yum -y install sudo RUN yum -y install curl RUN yum -y install unzip ################## JDK7 #Note that ADD uncompresses this tarball automatically ADD jdk-7u79-linux-x64.tar.gz /opt WORKDIR /opt/jdk1.7.0_79 RUN alternatives –install /usr/bin/java java /opt/jdk1.7.0_79/bin/java 1 RUN alternatives –install /usr/bin/jar jar /opt/jdk1.7.0_79/bin/jar 1 RUN alternatives –install /usr/bin/javac […]

如何在Jenkinsfile中停止正在运行的容器?

我有一个Jenkinsfile或一个Jenkinspipe道创build一个新的图像,并启动一个容器的图像。 它第一次运作良好。 但在后续运行中,我想要停止并移除先前的容器。 我的Jenkinsfile如下所示: node { def commit_id stage('Preparation') { checkout scm sh "git rev-parse –short HEAD > .git/commit-id" commit_id = readFile('.git/commit-id').trim() } stage('docker build/push') { docker.withRegistry('https://index.docker.io/v1/', 'dockerhub') { def app = docker.build("my-docker-id/my-api:${commit_id}", '.').push() } } stage('docker stop container') { def apiContainer = docker.container('api-server') apiContainer.stop() } stage('docker run container') { def apiContainer = docker.image("my-docker-id/my-api:${commit_id}").run("–name api-server […]

docker中的jenkinspipe道中npm安装失败

我正在关注一个关于Jenkinspipe道的教程,我可以在节点6.10的docker容器中获得一个“hello world”。 但是,当我将一个默认的EmberJS应用程序(使用ember init )添加到repo并尝试在pipe道中构build它时,运行npm install(由于目录访问问题)时失败。 Jenkinsfile可以在这里看到: https : //github.com/CloudTrap/pipeline-tutorial/blob/fix-build/Jenkinsfile 由构build打印的错误信息是(这是安装本地和运行使用java -jar jenkins.war在Macbook上,不相关,但包括以防万一)是: npm ERR! Linux 4.9.12-moby npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" npm ERR! node v6.10.0 npm ERR! npm v3.10.10 npm ERR! path /.npm npm ERR! code EACCES npm ERR! errno -13 npm ERR! syscall mkdir npm ERR! Error: EACCES: permission denied, mkdir '/.npm' […]

如何通过Web钩子从Docker Hub与Jenkins进行通信?

似乎有很多的例子来轮询GitHub,但我怎么能轮询docker集线器和触发一个基于它的构build? 我在Docker Hub中有一个webhook,用于自动构build,但是我不知道如何在Jenkins中进行轮询。 似乎有这个Jenkins插件: https : //wiki.jenkins-ci.org/display/JENKINS/DockerHub+Plugin 但是,据我了解,自从Docker Hub发生API更改以来,该插件已被破坏。 更新: 看起来答案是使用“构build触发器”下的“触发器构build远程”选项,但由于匿名不具有构build权限而失败。 然后我切换到使用这个插件: https : //wiki.jenkins-ci.org/display/JENKINS/Build+Token+Root+Plugin 所以这个URL变成这样: https : //jenkinsserver.com/buildByToken/build?job=test&token=test 如果我通过浏览器(甚至隐身)而不是cURL POST到该URL,这是有效的。 我得到: $ curl -X POST https://jenkinsserver.com/buildByToken/build?job=test&token=test <html><head><meta http-equiv='refresh' content='1;url=/securityRealm/commenceLogin?from=%2FbuildByToken%2Fbuild%3Fjob%3Dtest'/><script>window.location.replace('/securityRealm/commenceLogin?from=%2FbuildByToken%2Fbuild%3Fjob%3Dtest');</script></head><body style='background-color:white; color:white;'> Authentication required <!– You are authenticated as: anonymous Groups that you are in: Permission you need to have (but didn't): hudson.model.Hudson.Read … which […]

Docker:无法find用户root:在passwd文件中没有匹配的条目

我有多个Atlassian产品的容器; JIRA , Bitbucket和Confluence 。 当我试图访问我通常使用的正在运行的容器: docker exec -it -u root ${DOCKER_CONTAINER} bash 通过这个命令,我可以照常访问,但是在运行脚本来提取和压缩日志文件之后,我无法再访问这个容器。 摘自“清理脚本” 这是第一个失败点,脚本每周运行一次(Jenkins计划)。 docker cp ${CLEAN_UP_SCRIPT} ${DOCKER_CONTAINER}:/tmp/${CLEAN_UP_SCRIPT} if [ $? -eq 0 ]; then docker exec -it -u root ${DOCKER_CONTAINER} bash -c "cd ${LOG_DIR} && /tmp/compressOldLogs.sh ${ARCHIVE_FILE}" fi 当脚本执行这两行到Bitbucket容器的结果是: unable to find user root: no matching entries in passwd file 它在'docker cp'命令上失败,但是只对Bitbucket容器。 […]

使用Docker运行Jenkins master和slave

我想使用Docker在服务器A上设置Jenkins主服务器,在服务器B上设置从服务器。 两台服务器都是专门为Jenkinsdevise的虚拟机。 目前,我已经在主服务器A上启动Docker容器,基于官方的Jenkins docker镜像。 但是,我应该为jenkins奴隶使用什么docker图像?

如何使用Jenkins docker容器内的docker

我遇到了以下问题:我创build了一个Jenkins docker容器,并将主机上的docker套接字与容器链接起来。 喜欢这个: docker run -v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 -p 50000:50000 -d –name jenkins –restart unless-stopped jenkins 然后当我尝试在jenkins上创build一些工作时,我得到了通常的“权限被拒绝”的信息: 尝试连接到Unix上的Docker守护进程套接字时拒绝了权限:///var/run/docker.sock:获取http://%2Fvar%2Frun%2Fdocker.sock/v1.29/images/json :dial unix /var/run/docker.sock:连接:权限被拒绝 但是,如果我附加到容器并使用root用户运行命令,则不会发生此问题。 我怎样才能解决这个问题? 我不能通过运行sudo gpasswd -a jenkins docker (因为主机上没有jenkins用户,只在容器中)而将jenkins用户添加到主机上的docker组,并且我也不能在容器内运行此命令(因为容器不知道任何docker组)。 有关如何解决这个问题的任何提示?

Docker – 从一个链接容器发出命令到另一个

我正在尝试使用2个Docker容器来设置一个原始的CI / CDpipe道,我将它们称为jenkins和node-app 。 我的目标是让jenkins容器在提交到GitHub 仓库时运行一个工作(完成了)。 该工作应该在node-app容器上运行deploy.sh脚本。 因此,当一个开发人员向GitHub提交时, jenkins接受提交,然后开始工作,包括自动化testing(将来),然后在node-app上进行部署。 jenkins容器正在使用最新的图像( Dockerfile) 。 节点应用程序容器的Dockerfile是: FROM node:latest EXPOSE 80 WORKDIR /usr/src/final-exercise ADD . /usr/src/final-exercise RUN apt-get update -y RUN apt-get install -y nodejs npm RUN cd /src/final-exercise; npm install CMD ["node", "/usr/src/final-exercise/app.js"] jenkins和node-app使用Docker Compose链接,并且docker-compose.yml文件包含(更新,感谢@alkis): node-app: container_name: node-app build: . ports: – 80:80 links: – jenkins jenkins: container_name: […]

sh'alias'在Jenkinsfile中不会提供任何输出

我有一个运行jenkins的docker集装箱。 在Jenkinsfile里面,我尝试定义一个别名并打印这个别名。 我手动尝试,连接到jenkins容器,我能够做到: alias foo='bar' 然后,如果我执行alias我可以看到别名列表(我有7个预设别名,新的一个) 但是当我在Jenkinsfile中执行相同的事情时,我foo命令将不会响应… 这是我的pipe道代码: #!/bin/groovy pipeline { agent any stages { stage("Use alias command"){ steps { sh 'alias foo="bar"' sh 'foo' } } }} 任何想法为什么?