【原】Gradle调用shell脚本和python脚本并传参
2015-11-27 17:26
1846 查看
最近由于项目自动化构建的需要,研究了下gradle调用脚本并传参的用法,在此作个总结。
shelldemo.sh脚本中
pythondemo.py脚本
http://stackoverflow.com/questions/14900883/trying-to-undersand-how-i-can-pass-arguments-from-gradle-to-my-shell-script
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 tasktask 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 tasktask 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"
相关文章推荐
- shell 和 环境变量
- shell两行合并成一行
- 用shell脚本写一个for循环
- shell用到的命令
- 在mysql中执行shell命令
- Shell case正则匹配法
- shell函数
- linux shell “(())” 双括号运算符使用
- CentOS 设置快捷键启动Shell终端
- Hbase常用Shell命令
- crontab定时器(包括执行shell)
- linux在shell中获取时间
- shell 脚本查看网段ip使用情况
- 编写一个简单的SHELL脚本
- shell条件与循环
- Bash 会清空从父进程继承来的 OLDPWD
- shell基础
- shell脚本里获取字符串的最后一个字符
- shell字符串和数组
- shell date 获取日期