jenkins - Jenkins 管道:如何获取从站的主机名
问题描述
我有两个不同的 Linux 服务器(prod 和 dev)$HOSTNAME
,它们具有不同的证书,默认情况下以主机名命名。
现在我想在 Jenkins-Pipeline 中确定我在哪个主机上,从而使用正确的证书。
为此,我编写了以下测试脚本:
def labels = []
labels.add('jenkins_<slavehost>_x86')
def builders = [:]
for (x in labels) {
def label = x
builders[label] = {
ansiColor('xterm') {
node (label) {
stage('cleanup') {
deleteDir()
}
stage('test') {
sh """
echo $HOSTNAME
"""
}
}
}
}
}
parallel builders
由于$HOSTNAME
未定义,因此不起作用。
groovy.lang.MissingPropertyException: No such property: HOSTNAME for class: groovy.lang.Binding
如何sh
在管道中获取 jenkins-slave 的主机名?
由于您可以以任何您喜欢的方式命名节点,因此您不能只使用NODE_NAME
,它不必与从机上的 bash 上的$HOSTNAME
echo 获得的相同。$HOSTNAME
解决方案
def getJenkinsMaster() {
return env.BUILD_URL.split('/')[2].split(':')[0]
}
您可以从 url 获取主机名
推荐阅读
- c# - 将对象的 JSON 字符串反序列化为字符串
- ios - iOS Firebase 动态链接:安装后获取动态链接不是深度链接
- mpandroidchart - MPAndroidChart 带有自定义标签的水平条形图,如果 x 轴标签值非常大,左侧的图形会被裁剪
- java - 是否可以使用 Java 和 AppEngine 添加 Content-Security-Policy 标头?
- r - R - [DESeq2] - 从已经标准化计数的 csv 中制作 DESeq 数据集对象
- slurm - 如何创建一个批处理脚本,它提交多个作业并将每个作业分配到一个单独的节点上?
- curl - Spotify 授权流程:cURL 不起作用
- docker - 配置 bitbucket-pipeline.yml 以在运行管道时使用存储库中的 DockerFile 来构建映像
- vba - 是否可以在同一表单的文本框中引用列表框?
- typescript - AWS CDK - 现有的应用程序负载均衡器侦听器 - 如何插入规则