请帮我做下面的事。我在一台共享服务器上安装了Jenkins。目前由多个团队使用,因此不允许在那里安装其他软件包/软件。每个团队都添加了专用的从节点,并根据需要进行配置。同样,我们有一个专用节点来运行我们的作业。(这也是我想运行我的工作的地方。)
我有 bitbucket 存储库,其中“Jenkinsfile”将包含部署步骤,而“Dockerfile”则希望从中创建容器并在其中运行部署步骤。
我想先用一些例子来测试一下。所以我有这样的“Dockerfile”。
#This image is Developed from ubuntu:18.04-Dockerhub
FROM ubuntu:18.04
#Updating System Packages and installing required packages
RUN apt-get update && \
apt-get install -y openssh-server wget git curl zip unzip && \
apt-get clean
#Installing rsync
RUN apt-get install -y rsync
我有下面这样的“詹金斯文件”。
pipeline {
agent { node { label 'slave_node' } }
stages {
stage('Test') {
agent {
dockerfile true
}
steps {
sh 'cat /etc/os-release'
sh 'curl --version'
sh 'echo Successfully compiled'
}
}
}
}
当我执行这个管道作业时,
问题是:为什么工作从Slave_node变成了master_node?请帮忙。谢谢。
如果我在我的个人笔记本电脑上运行这个,它的工作原理非常好。
找到了另一种方法来实现这一目标。我们可以使用 dockerfile 功能本身与任何代理节点结合使用。
示例如下
#!/usr/bin/env groovy
pipeline {
agent {
dockerfile {
filename 'Dockerfile'
label 'slave_node'
}
}
stages {
stage("example stage") {
steps {
script {
sh 'cat /etc/os-release'
sh 'curl --version'
sh 'echo Successfully compiled'
}
}
}
}
}
源代码可以在这里找到:语法和搜索关键字“dockerfile”来查找详细信息。
参考 https://www.jenkins.io/doc/book/pipeline/docker/ 我能够使用脚本化管道来实现我的需求。所以在这里发布作为答案。
但我仍然不知道声明性管道有什么问题。
node ('slave_node') {
checkout scm
def customImage = docker.build("custom-image-name")
customImage.inside {
sh 'Inside Container'
sh 'cat /etc/os-release'
}
}
谢谢
我会查看你在詹金斯的Docker设置。可能是您已经将主节点定义为默认的Jenkins代理,因此当您仅使用“dockerfile:true”运行时,它会尝试在主节点上运行构建。
您可以通过在本文档中搜索“指定Docker标签”来找到此特定选项的参考。
https://www.jenkins.io/doc/book/pipeline/docker/
我有一个多分支管道架构的以下Jenkinsfile 我试图在Ubuntu和Red Hat节点上并行运行“构建”阶段,而仅在Ubuntu节点上运行“测试”阶段。 任何人都可以帮助我指定如何选择在哪些节点上运行哪些阶段。我在网上找到的解决方案很少,但他们建议重写构建阶段两次:一次用于Red Hat节点,另一次用于Ubuntu节点。难道没有办法在没有代码重复的情况下做到这一点吗? 非常感谢
问题内容: 我有一大堆具有相同标签的节点。我希望能够在Jenkins中运行一个作业,该作业在具有相同标签的 所有 节点上执行并同时执行。 我看到了在詹金斯中使用矩阵配置选项的建议,但我只能想到一个轴(标签组)。当我尝试运行该作业时,似乎它只执行一次而不是300次(该标签组中的每个节点1次)。 我的另一条轴应该是什么?还是…有一些插件可以做到这一点?我曾经尝试过NodeLabel参数插件,然后选择“
并编写下面的查询,它是只在我的master上运行,还是将所有10个节点都用作worker? 如果不是,我必须做什么才能让我的Spark Sql使用完整的集群?
我对是否可以在从属节点中使用Groovy脚本运行Jenkins作业感到困惑。我提到了一个 StackOverflow 答案 [1],它说 System Groovy 脚本作业可以在主站而不是从站中运行,并且要在从站中运行作业,它必须是 Groovy 脚本而不是 System Groovy 脚本。有人可以澄清我是否可以使用系统时髦脚本运行从属作业吗?由于我正在尝试通过Groovy脚本,因此无法访问几
问题内容: 我正在尝试从Jenkins运行TestNG测试(在一个包含的Java项目中),但是没有运气。 似乎Jenkins的TestNG插件(https://wiki.jenkins-ci.org/display/JENKINS/testng- plugin )仅发布TestNG测试的结果,但实际上不运行测试类…或我错了吗? 无论如何,我如何在Jenkins的TestNG项目中实际运行TestN
我试图从Jenkins那里运行TestNG测试(在一个包含Java的项目中),但没有成功。 看起来好像是Jenkins的TestNG插件(https://wiki.jenkins-ci.org/display/JENKINS/testng-plugin)只发布TestNG测试的结果,但不实际运行测试类。。。还是我错了? 在任何情况下,我如何在与Jenkins的TestNG项目中实际运行TestNG