Tag: docker jenkins

Jenkins:在Docker容器中克隆私有存储库

我知道在这里已经有很多关于这个话题的问题了,我尝试了几乎所有的解决scheme,但是我现在处于无法工作的状态(我想要的方式是)。 问题 我有Jenkins中的docker容器,在这个docker容器中,我尝试克隆一个私有存储库。 为此,我需要将我的公共Jenkins密钥添加到我的Git存储库,并且我的泊坞窗容器需要知道这个SSH密钥。 我目前的工作解决scheme 我已经能够通过在我的Jenkinsfile执行以下操作来完成此Jenkinsfile : docker.image('php_jenkins_test').inside('–env COMPOSER_HOME=$WORKSPACE/.composer -v /etc/passwd:/etc/passwd:ro -v /home/jenkins/.ssh:/home/jenkins/.ssh:ro') { sshagent(['jenkins-ssh-publickey']) { sh "./test/run-tests.sh" } } 我挂载我的etc/passwd和/home/jenkins/.ssh作为只读卷,原因如下: Jenkins Docker插件作为Jenkins用户运行。 这个用户的UID和GID在我的Docker容器中是不知道的。 所以我不得不挂载/etc/passwd 。 当从Git仓库中取出时,我的known_hosts容器中需要知道我的known_hosts (和我的键?)。 由于/etc/passwd将jenkins用户映射到/home/jenkins ,所以我必须在我的客户机上安装Jenkins的SSH目录。 sshagent命令设置了SSH套接字,以便我的密钥可以在我的容器中访问(纠正我,如果我错了,我是相当新的jenkins和docker)。 就像我说的:这已经起作用了。 通过这个设置,我可以在Jenkins中的Docker容器中克隆私有的git仓库。 那么问题是什么呢? 我发现/ /home/jenkins/.ssh有点危险。 我把它挂载为只读,但我在一个拥有70多个开发者的组织中工作,如果其中一个以我的代码为例,并删除:ro ,他们很可能会搞垮Jenkins的.ssh -folder和this非常非常糟糕 所以我正在寻找一种方法克隆私人存储库,而无需挂载.ssh夹。 毕竟,这不是什么sshagent插件是什么? 我到目前为止所尝试过的 由于我的docker容器挂载了/etc/passwd它会在某个时间点查找/home/jenkins -folder。 由于sshagent会照顾我想要的key,所以我只需要关心known_hosts -file。 所以我在我的Dockerfile中尝试了以下内容: RUN mkdir -p /home/jenkins/.ssh RUN chmod 700 /home/jenkins/.ssh […]

纳金服务器与jenkins和巧克力的容器

我需要在Windows容器上安装Jenkins和Java ,并且正在研究是使用Windows Server Core还是Windows Nano Server 。 所以容器的组装很快,DEV到PRO的移动是灵活的。 我看到更好的Nano服务器,因为它占用了300MB,而不是占用大约5GB的服务器核心。 问题出现在我想在Nano Server安装某些东西的时候。 我尝试安装Chocolatey但它仅与服务器核心版本兼容,这使我认为使用Nano Server来执行此function是不可取的。 build议使用Nano Server来安装Jenkins和Java,还是打算用于其他用途?

在Jenkins中调用Git在Docker中构build脚本

我有一个Jekyll网站(GH页面)的构build脚本,需要从脚本内部调用需要Githubauthentication的git命令。 这是脚本: #!/usr/bin/env bash rm -rf _site/ git clone git@github.com:RIT-EVT/RIT-EVT.github.io.git –branch master –depth 1 _site LIVE_VERSION_BUILD=`cat _site/version` LIVE_VERSION=${LIVE_VERSION_BUILD%.*} LIVE_BUILD=${LIVE_VERSION_BUILD##*.} PACKAGE_VERSION=`sed -nE 's/^\s*"version": "(.*?)",$/\1/p' package.json` if [[ "$LIVE_VERSION" == "$PACKAGE_VERSION" ]]; then LIVE_BUILD=`expr $LIVE_BUILD + 1` else LIVE_VERSION=${PACKAGE_VERSION} LIVE_BUILD=0 fi rm -rf _site/* jekyll build echo "$LIVE_VERSION.$LIVE_BUILD" > _site/version cd _site/ git add -A git commit […]

如何在Jenkinspipe道中获取Maven版本

我正在与Jenkins一起创buildCIpipe道。 需要使用项目的Maven版本来标记Docker镜像,例如0.0.1-SNAPSHOT 。 虽然,基于这个Jenkins问题 ,maven版本被暴露为POM_VERSION ,但它似乎只适用于“Maven项目”。 我试图在Pipeline的Jenkins文件中使用这个variables作为${POM_VERSION}并且它不能识别这个属性。 获得版本号的最佳方法是什么? parsingpom.xml并用bash脚本grep版本并在Jenkinsfile调用它?

声明式Jenkinspipe道和Docker

刚开始看Jenkins声明式pipe道并在Docker容器中运行我的构build。 我有一个项目,通过git拉npm包,因此需要设置ssh密钥。 从我遇到过,我可以设置构build参数,如–build-arg ssh_pub_key="$(cat ~/.ssh/id_rsa.pub)" ,然后在我的Dockerfile ARG ssh_pub_key 我在Jenkins文件中采取了以下方法 pipeline { agent { dockerfile { args '''–build-arg ssh_prv_key="$(cat /var/lib/jenkins-git/.ssh/id_rsa)"''' } } stages { stage('Test') { steps { sh 'echo $ssh_prv_key' } } } } 在Jenkins中运行构build时,我在构build图像时得到了下面的输出(没有提到–build-arg 。 docker build -t 085eb412f6dd28c1a7843aa9f9ed84e7c4af3e1b -f Dockerfile . 并没有为variables 我没有正确设置它们吗? 有没有人以不同的方式处理密钥的复制? 谢谢 UPDATE 我的Jenkinsfile现在看起来像下面但不会运行得到 Required context class hudson.FilePath is missing […]

docker工人支持所有types的容器内的数据

我正在build设cordova项目,我build立和添加浏览器和Android平台。 在dockerfile我有 ADD . /var/www/html/ 哪里。 是我目前的jenkins工作空间。 当我使用容器中的Apache浏览器时,我看不到我的Android和浏览器版本。 jenkins@ip-172-31-22-20:~/workspace/qa_vast2net_pp_docker$ ls PatientPortal/platforms/ android/ browser/ platforms.json 注意:我运行在aws实例上的Ubuntu上 $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1d8a8eb3fb63 qa_vast2net_pp_docker "ls -l /" 8 minutes ago Exited (0) 8 minutes ago boring_wilson 52b5b9ef1bc8 XXXX.dkr.ecr.us-west-2.amazonaws.com/qa_global_pp_docker:latest "/bin/sh -c 'apachec…" 8 minutes ago Up 8 minutes 0.0.0.0:8086->80/tcp qa_vast2net_pp_docker 1e6546425dc0 […]

Windows中的Docker中的Jenkins目标中的错误

我想在我的Windows机器上的docker上安装jenkins。 一切都很顺利,直到我在jenkinsconfiguration了maven目标。 它看起来像maven是俯瞰启动docker时configuration的Jenkins_homepath。 我在启动过程中使用了以下命令 docker运行-p 8080:8080 -p 50000:50000 -v // D / jenkins:/ var / jenkins_home Jenkins 我也尝试了以下 docker运行-p 8080:8080 -p 50000:50000 -v jenkins_home:// D / jenkins_workspace jenkins 但我不断收到错误 [crazywebapp_dev] $ mvn干净安装 致命错误:命令执行失败java.io.IOException:错误= 2,在java.lang.UNIXProcess上的java.lang.UNIXProcess.forkAndExec(Native方法)上没有这样的文件或目录。(UNIXProcess.java:247)at java.lang .ProcessImpl.start(ProcessImpl.java:134)at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)导致:java.io.IOException:无法运行程序“mvn”(在目录“/ var / jenkins_home / workspace /疯狂webapp_dev“):错误= 2,没有这样的文件或目录在java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)在hudson.Proc $ LocalProc。(Proc.java:249) 我相信它已经做了一些maven的工作,因为jenkins工作区是在我的D:驱动器中创build的,代码从位桶中成功检出,工作区内容在Jenkins中显示。 我也注意到,即使工作空间是在我的D:驱动器中创build的,Jenkins_home在Jenkinsconfiguration页面仍然显示为/ var / Jenkins_home。 请帮我弄清楚这一点。

如何停止电源shell脚本的错误?

我有下面的脚本 $ErrorActionPreference = "Stop"; while($true) { try { Write-Host "Step 1"; Dir C:\arts #Error Write-Host "Step 2"; exit 0 break; } catch { "Error in " + $_.InvocationInfo.ScriptName + " at line: " + $_.InvocationInfo.ScriptLineNumber + ", offset: " + $_.InvocationInfo.OffsetInLine + "."; $Error exit 1 break; } } 它停在方向Dir C:\arts线,这对我很好。 据我了解,发生因为我有行$ErrorActionPreference = "Stop"; 在开始。 […]

/ bin / bash:在高山docker中找不到的命令

我试图在一个alpinedocker上运行这个Makefile 。 SHELL := /bin/bash build: GOOS=linux go build -o bin/server main.go 我已经确定, bash , make , go都是通过交互式进入容器并检查所有命令的。 但是这个命令神秘地失败了: + make build make: /bin/bash: Command not found GOOS=linux go build -o bin/server main.go make: /bin/bash: Command not found make: *** [Makefile:17: build] Error 127 script returned exit code 2 我真的很难debugging,因为它在docker,它是jenkins正在执行的一切。

将nodejs和npm添加到Jenkins泊坞窗图像

我试图做一个快速的实验或两个jenkins。 为此,我打算使用jenkins图像并将nodejs和npm添加到它。 这是我想要做的: FROM jenkins USER root RUN curl -sL https://deb.nodesource.com/setup_6.x | bash – \ && apt-get update \ && apt-get install -y \ nodejs RUN npm install -g npm RUN npm –version USER jenkins npm –version调用将失败,但是这个错误: Step 5/6 : RUN npm –version —> Running in 48a250a4fdb8 module.js:471 throw err; ^ Error: Cannot find module […]