【发布时间】:2021-01-11 06:07:55
【问题描述】:
我正在开发一个声明式 jenkins 管道,我正在尝试登录到远程主机并执行 shell 脚本。下面是示例 sn-p。我想知道如何将参数传递给我的 script.sh 脚本。
#!/bin/bash
echo "argument $1"
下面是流水线脚本
hosts = [“x.x.x”, “x.x.x”]
pipeline {
agent { node { label 'docker' } }
parameters {
choice(name: 'stageparam', choices: ['build', 'deploy'], description: ‘xyz’)
string(name: 'Username', defaultValue: ‘abc’, description: 'enter username')
}
stages {
stage('Setup') {
steps {
script {
pom = getPom(effective: false)
}
}
}
stage('Deploy') {
steps {
script {
def targetServers = null
if (stageparam == "deploy") {
targetServers = hosts
}
targetServers.each { server ->
echo "Server : ${server}"
def remote = [:]
remote.name = ‘server’
remote.host = server
remote.user = Username
def pass = passwordParameter description: "Enter password for user ${remote.user} "
remote.password = pass
remote.allowAnyHosts = true
stage('Remote SSH') {
sshPut remote: remote, from: ‘./script.sh', into: '.'
sshScript remote: remote, script: "doc.sh ${Username}"
}
}
}
}
}
}
}
执行脚本时出现以下错误
/home/jenkins/workspace/script.sh Username does not exist.
【问题讨论】:
标签: bash jenkins ssh jenkins-pipeline remote-server