簡體   English   中英

如何使用Jenkinsfile設置Jenkins項目,以從git檢出到USS,構建,測試和部署?

[英]How to set up a Jenkins item using Jenkinsfile, to checkout from git to USS, build, test and deploy?

我正在尋找一個使用Jenkinsfile從git簽出,在z / OS上構建和部署的示例?

我的Zenkins使用z / OS插件在Linux服務器上運行。

尋找有關為z / OS設置Jenkinsfile的最佳實踐。

Jenkinsfile管道腳本是常規代碼。 Groovy本質上是用Java解釋的,而Java依賴於與操作系統無關的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>’]]])

您也可以使用scmvars.GIT_COMMIT等引用git_commit等var。 這將簽出到USS目錄中,然后您可以調用Java構建腳本。

gitTool是指在ASCII和EBCDIC之間進行轉換的腳本,它是在Jenkins Global Tool配置下定義的。 它包含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)
 }

希望這些樣本對您有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM