2017-04-11 81 views

回答

0

此后我对从git.repo在参数化流水线作业实现这一目标, 使用管道脚本SCM的Quicksheet

可能是什么你的兴趣:

  • 装载mecanism:stash/unstash
  • “来自SCM”的
  • 位置:src = "../${env.JOB_NAME}@script/"

个詹金斯

Pipeline 
    Definition:  "Pipeline script from SCM" 
    SCM:    Git 
    Repository URL  git.repo 
    Branches to build */master 
    Script Path  jobs/build.groovy 
This project is parameterized: 
    String Parameter PARAM0 
    String Parameter PARAM1 

git.repo

├── jobs 
│ ├── helpers 
│ │ └── utils.groovy 
│ └── build.groovy 
└── scripts 
    ├── build 
    │ └── do_build.sh 
    └── inc.sh 

内容:utils.groovy

├── jobs 
│ ├── helpers 
│ │ └── utils.groovy 
def log(msg) { 
    println("========== " + msg) 
} 
return this 

内容:build.groovy

├── jobs 
│ └── build.groovy 
stage ('Init') { 
    /* Loads */ 
    def src     = "../${env.JOB_NAME}@script/" 
    def helpers_dir   = 'jobs/helpers' 
    def scripts_dir   = 'scripts' 
    /* Stages Scripts */ 
    def do_build   = 'build/do_build.sh' 
    utils     = load src + helpers_dir + "/utils.groovy" 
    dir(src) { 
     stash name: scripts_dir, includes: "${scripts_dir}/" 
    } 
} 
stage ('Build') { 
    node() { 
     unstash scripts_dir 
     build_return = sh (returnStdout: true, script: """ 
      ./${scripts_dir}/${do_build} \ 
      "${PARAM0}" \ 
      "${PARAM1}" 
     """).readLines() 
     builded = build_return.get(build_return.size()-1).tokenize(',') 
     utils.log("PARAM0: " + builded[0]) 
     utils.log("PARAM1: " + builded[1]) 
    } 
} 

项内容:inc.sh

└── scripts 
    └── inc.sh 
#!/bin/sh 
## scripts common includes 
common=included 

内容:do_build.sh

└── scripts 
    ├── build 
    │ └── do_build.sh 
#!/bin/sh 
## includes 
. $(dirname $(dirname ${0}))/inc.sh 
echo ${common} 
## ${0} : PARAM0 
## ${1} : PARAM1 
echo "${0},${1}"