【原】Gradle調用shell腳本和python腳本並傳參


最近由於項目自動化構建的需要,研究了下gradle調用腳本並傳參的用法,在此作個總結。

Pre

build.gradle中定義了$jenkinsJobName $jenkinsBuild兩個Jenkins變量,意圖將gradle中的這兩個值傳到shell/python腳本中去用

def jenkinsBuild = System.getenv("BUILD_NUMBER") ?: "0"
println "jenkinsBuild is set to $jenkinsBuild" def jenkinsJobName = System.getenv("JOB_NAME") ?: "defaultJobName" println "jenkinsJobName is set to $jenkinsJobName"

Gradle調用shell腳本帶參數

gradle task

task upload(type: Exec) {
    executable 'sh'
    args "-c","../shelldemo.sh $jenkinsJobName $jenkinsBuild"
}

shelldemo.sh腳本中

#!/usr/bin/env bash

#從build.gradle中傳入的兩個參數
jenkinsJobName=$1
jenkinsBuild=$2
echo "jenkinsJobName=$jenkinsJobName"
echo "jenkinsBuild=$jenkinsBuild"
...

Gradle調用python腳本帶參數

gradle task

task uploadpython(type: Exec) {
    workingDir './'
    commandLine "python","pythondemo.py", "$jenkinsJobName", "$jenkinsBuild"
}

pythondemo.py腳本

#encoding:utf8
import sys

jenkinsJobName=sys.argv[1]
jenkinsBuild=sys.argv[2]
print jenkinsJobName
print jenkinsBuild
...

Gradle Exec官方文檔的說明

注意雙引號

Groovy中只為雙引號的字符進行插值,所以如果寫了單引號,是不work的。

http://stackoverflow.com/questions/14900883/trying-to-undersand-how-i-can-pass-arguments-from-gradle-to-my-shell-script

Groovy only performs String interpolation for double-quoted Strings. (That's one of the reasons why I use double quotes by default.) Try:

...
args "-c", "source dosomething.sh $arg"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM