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

时间:2018-10-16 22:21:51

标签: git jenkins jenkins-pipeline mainframe

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

我有运行z / OS插件的Linux服务器上的Jenkins。

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

2 个答案:

答案 0 :(得分:2)

Jenkinsfile管道脚本是常规代码。 Groovy本质上是用Java解释的,而Java依赖于与操作系统无关的JVM。

Pipeline语法是一种时髦的领域特定语言(DSL)

如果您已安装了一系列管道插件,则应该能够按照文档herehere来实现所需的一切。

答案 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)
 }

希望这些示例有所帮助!