Ary*_*pta 2 jenkins jenkins-plugins docker kubernetes
我已经创建了一个Dockerfile(用于可以与Jenkins的Kubernetes插件一起使用的Node JNLP从站)。我从官方形象延伸jenkinsci/jnlp-slave
FROM jenkinsci/jnlp-slave
USER root
MAINTAINER Aryak Sengupta <aryak.sengupta@hyland.com>
LABEL Description="Image for NodeJS slave"
COPY cert.crt /usr/local/share/ca-certificates
RUN update-ca-certificates
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash \
&& apt-get install -y nodejs
ENTRYPOINT ["jenkins-slave"]
Run Code Online (Sandbox Code Playgroud)
我将此图像保存在我的Pod模板中(在K8s插件配置中)。现在,当我尝试在此从属服务器上运行构建时,我发现在Pod内生成了两个容器(屏幕快照证明相同)。
我的Pod模板如下所示:
现在,如果我做一个简单的工作docker ps,我发现有两个启动的容器(为什么?):
现在,在Jenkins的Jenkins Job配置内部,无论我在构建步骤中添加什么,这些步骤都将在第一个容器中执行。
即使我Node在自己的容器中使用了官方容器PodTemplate,结果仍然相同:
我尝试在我的Jenkins Job中打印Node版本,并且输出为“ Node not found”。另外,为了验证我的腰臀,我在docker exec第二个容器中做了一个步骤,然后尝试打印Node版本。在这种情况下,它绝对可以正常工作。
这是我的构建步骤如下所示:
因此,归根结底,我有两个主要问题:
Node使用此配置实现构建项目的预期行为?我想念什么?
PS-请让我知道问题是否在某些地方不清楚。
编辑:我知道可以使用PipelineJenkins插件来完成,我可以在其中明确提及该container名称,但是我需要从Jenkins UI进行操作。有什么办法可以指定容器名称以及我已经在做的从属名称:
Jenkins kubernetes插件将始终在为执行构建而创建的pod内创建一个JNLP从属容器。在podTemplate中,您可以定义执行构建所需的其他容器。
在这种情况下,您似乎想将Node容器添加到podTemplate中。然后,在您的构建中,将使构建发生在命名的Node容器内。
您不必在意Pod在哪里运行。您需要做的就是确保添加具有所需资源的容器(在本例中为Node)。您可以向PodTemplate添加任意数量的容器。我有一些带有10个或更多容器的容器,用于执行PMD,Maven,curl等步骤。
我将Jenkinsfile与管道一起使用。
podTemplate(cloud: 'k8s-houston', label: 'api-hire-build',
containers: [
containerTemplate(name: 'maven', image: 'maven:3-jdk-8-alpine', ttyEnabled: true, command: 'cat'),
containerTemplate(name: 'pmd', image: 'stash.company.com:8443/pmd:pmd-bin-5.5.4', alwaysPullImage: false, ttyEnabled: true, command: 'cat')
],
volumes: [
persistentVolumeClaim(claimName: 'jenkins-pv-claim', mountPath: '/mvn/.m2nrepo')
]
)
{
node('api-hire-build') {
stage('Maven compile') {
container('maven') {
sh "mvn -Dmaven.repo.local=/mvn/.m2nrepo/repository clean compile"
}
}
stage('PMD SCA (docker)') {
container('pmd') {
sh 'run.sh pmd -d "$PWD"/src -f xml -reportfile "$PWD"/target/pmd.xml -failOnViolation false -rulesets java-basic,java-design,java-unusedcode -language java'
sh 'run.sh pmd -d "$PWD"/src -f html -reportfile "$PWD"/target/pmdreport.html -failOnViolation false -rulesets java-basic,java-design,java-unusedcode -language java'
sh 'run.sh cpd --files "$PWD"/src --minimum-tokens 100 --failOnViolation false --language java --format xml > "$PWD"/target/duplicate-code.xml'
}
archive 'target/duplicate-code.xml'
step([$class: 'PmdPublisher', pattern: 'target/pmd.xml'])
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2260 次 |
| 最近记录: |