如何使用 Jenkinsfile 设置 Jenkins 项,从 git 签出到 USS,构建、测试和部署?



我正在寻找一个使用 Jenkinsfile 从 git 签出、在 z/OS 上构建和部署的示例?

我让 Jenkins 运行在 Linux 服务器上,带有 z/OS 插件。

寻找有关为 z/OS 设置 Jenkinsfile 的一些最佳实践。

Jenkinsfile 管道脚本是时髦的代码。 Groovy本质上是解释Java,Java依赖于与OS无关的JVM。

管道语法是一种时髦的域特定语言 (DSL(

如果您安装了插件的管道集,您应该能够按照此处和此处的文档来实现您需要的任何内容。

下面是一个示例管道脚本,您可以使用它在 z/OS 上使用 Jenkins 从属从 Git 中签出代码 -

def scmvars = checkout([$class: 'GitSCM', branches: [[name: 'master']], doGenerateSubmoduleConfigurations: false, extensions: [],gitTool: 'GitDBB', submoduleCfg: [], userRemoteConfigs: [[credentialsId: ‘<cred>’ url: ‘<repo>’]]])

您还可以使用 scmvar 引用 var,如 git_commit 等。GIT_COMMIT等等。这将签出到 USS 目录中,然后您可以调用您的 java 构建脚本。

这里的 gitTool 是指在 Jenkins 全局工具配置下定义的 ASCII 和 EBCDIC.It 之间转换的脚本。它包含用于转换 git 命令的 iconv 脚本。我附上了一个名为 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

请确保以转换为EBCDIC的方式通过FTP方式键入上述脚本。 或者在USS中将其标记为ASCII。有关如何在配置 Jenkins 远程代理时使用 shell 脚本的说明,请访问 https://www.ibm.com/support/knowledgecenter/SS6T76_1.0.2/jenkinsintegration.html 请注意以下事项: - 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)
}

希望这些示例对您有所帮助!

最新更新