我正在寻找一个使用Jenkinsfile从git签出,在z / OS上构建和部署的示例?
我有运行z / OS插件的Linux服务器上的Jenkins。
寻找有关为z / OS设置Jenkinsfile的最佳实践。
答案 0 :(得分:2)
Jenkinsfile管道脚本是常规代码。 Groovy本质上是用Java解释的,而Java依赖于与操作系统无关的JVM。
Pipeline语法是一种时髦的领域特定语言(DSL)
答案 1 :(得分:1)
这是一个示例管道脚本,您可以使用z / OS上的Jenkins从服务器从Git检出代码-
def scmvars = checkout([$class: 'GitSCM', branches: [[name: 'master']], doGenerateSubmoduleConfigurations: false, extensions: [],gitTool: 'GitDBB', submoduleCfg: [], userRemoteConfigs: [[credentialsId: ‘<cred>’ url: ‘<repo>’]]])
您也可以使用scmvars.GIT_COMMIT等引用git_commit等var。这将签出到USS目录中,然后您可以调用Java构建脚本。
这里的gitTool是指在Jenkins全局工具配置下定义的,在ASCII和EBCDIC之间进行转换的脚本。它包含iconv脚本以转换git命令。我附上了一个名为git-jenkins.sh的示例-
#! /bin/sh
if test -n "$GIT_SSH" ; then
dbbtmp=~/${JOB_NAME}@dbb
if ! test -d "$dbbtmp" ; then
mkdir $dbbtmp
createdDbbTmp=true
fi
cat $GIT_SSH | iconv -f utf-8 -T -t IBM-1047 > $dbbtmp/git.ssh.sh
export GIT_KEY=$(cat $dbbtmp/git.ssh.sh | grep ssh | sed "s/key.*/key/" | sed "s/.* .//")
cat $GIT_KEY | iconv -f utf-8 -T -t IBM-1047 > $dbbtmp/git.ssh.key
rm -f $GIT_SSH
cp $dbbtmp/git.ssh.sh $GIT_SSH
chmod 700 $GIT_SSH
rm -f $GIT_KEY
cp $dbbtmp/git.ssh.key $GIT_KEY
chmod 600 $GIT_KEY
if test "$createdDbbTmp" = true ; then
rm -rf $dbbtmp
fi
fi
git "$@" | iconv -f ibm-1047 -t ibm-1047
请确保您将上述脚本通过FTP转换为EBCDIC。或在USS中将其标记为ASCII。可以在https://www.ibm.com/support/knowledgecenter/SS6T76_1.0.2/jenkinsintegration.html上找到有关在配置Jenkins远程代理时如何使用Shell脚本的说明,请注意以下几点: -Shell脚本要求代理的Java选项包括“ -Dfile.encoding = utf-8” -按照“节点属性:检查”工具位置”部分中概述的步骤进行操作,以使代理使用脚本。
对于构建-我使用以下命令运行构建groovy脚本来构建文件(在我的情况下为Cobol)-
println RemotingDiagnostics.executeGroovy("""
def command = '$groovyt' + '$classp' + '$scriptname' + '$parm'
println command
def p = command.execute()
p.waitFor()
println p.in.text
""", Jenkins.instance.slaves.find { it.name == node }.channel)
}
希望这些示例有所帮助!