最近由于项目自动化构建的需要,研究了下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=$
jenkinsBuild=$
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[]
jenkinsBuild=sys.argv[]
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"

【原】Gradle调用shell脚本和python脚本并传参的更多相关文章

  1. python 2 控制台传参,解包,编码问题初探

    python 2 控制台传参,需要从sys模块中导入argv,argv返回的第一个参数当前脚本(script)的文件名,后面是参数,参数个数必须和解包(unpack)时使用的参数个数一致 1.本例子演 ...

  2. Python菜鸟之传参

    Python菜鸟之传参 : 看上面enroll( )函数的调用传参 enroll("twiggy","M",city="上海", age=2 ...

  3. Python中的传参是传值还是传址?

    传值:在C++中,传值就是把一个参数的值给这个函数,其中的更改不会影响原来的值. 传址:即传引用,直接把这个参数的内存地址传递进去,直接去这个内存地址上进行修改. 但是这些在Python中都没有,Py ...

  4. vue:子组件通过调用父组件的方法的方式传参

    在本案例中,由于子组件通过调用父组件的方法的方式传参,从而实现修改父组件data中的对象,所以需要啊使用$forceUpdate()进行强制刷新 父组件: provide() { return { s ...

  5. shell脚本和python脚本实现批量ping IP测试

    先建一个存放ip列表的txt文件: [root@yysslopenvpn01 ~]# cat hostip.txt 192.168.130.1 192.168.130.2 192.168.130.3 ...

  6. Shell学习笔记之shell脚本和python脚本实现批量ping IP测试

    0x00 将IP列表放到txt文件内 先建一个存放ip列表的txt文件: [root@yysslopenvpn01 ~]# cat hostip.txt 192.168.130.1 192.168.1 ...

  7. Jinkins流水线脚本使用curl命令调用服务接口,并且使用url传参。

    curl http://xxx.xx.xx.xx:xxxx/jenkins/publish?fileName=${fileName}&tag_name=${tag_name} 如图调用不符合c ...

  8. python paramiko外部传参和内部调用命令的方法

    学习了很久的python,但在工作中使用的时候,却发现不知道怎么传参进入到python中执行,所以这两天就研究 了python args怎么将外部参数传入到python中执行 1.首先使用python ...

  9. python获取命令行传参的两种种常用方法argparse解析getopt 模块解析

    方法一:argparse解析 #!/usr/bin/env python3 # -*- coding:utf-8 -*- # @Time: 2020/5/20 10:38 # @Author:zhan ...

随机推荐

  1. 【BZOJ 1911】【APIO 2010】特别行动队

    http://www.lydsy.com/JudgeOnline/problem.php?id=1911 夏令营里斜率优化的例题,我调了一晚上,真是弱啊. 先推公式吧($sum_i$表示$x_1 \d ...

  2. 17B

    贪心,之前先bfs判断是否联通,然后,反向建图,找一个未选择的点,找与他距离最近的点连边,因为每个点都要被选择,所以一个点离他最近的另一个点肯定也被选择,可以贪心 #include<queue& ...

  3. HTML文本域属性设置

    1.设置文本域的字体 <TEXTAREA STYLE="font-size:9pt;font-family:verdana;color:#333333">输入内容< ...

  4. 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法

      建立好一个Maven项目后,如果Java Resources资源文件下没有src/main/java文件夹,并且在手动创建这个文件时提示“已存在文件”. 这说明,在这个项目配置中已经有了src/m ...

  5. 关于context你必须知道的一切

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40481055,本文出自:[张鸿洋的博客] 本文大多数内容翻译自:http://w ...

  6. 使用jquery.qrcode生成二维码支持logo,和中文

    /* utf.js - UTF-8 <=> UTF-16 convertion * * Copyright (C) 1999 Masanao Izumo <iz@onicos.co. ...

  7. bzoj 1503 splay

    因为是整体加减,所以直接记录在外面. #include<iostream> #include<cstdio> #include<cstring> #include& ...

  8. Bzoj2434 [Noi2011]阿狸的打字机

    Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 2536  Solved: 1415 Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到 ...

  9. CodeForces 125E MST Company

    E. MST Company time limit per test 8 seconds memory limit per test 256 megabytes input standard inpu ...

  10. crawler: 爬虫的基本结构

    目前我所知道的爬虫在获取页面信息上,分为静态爬虫和动态爬虫:静态爬虫主要用于获取静态页面,获取速度一般也比较快:但是现在很多网站的页面都是采用动态页面,当我们用爬虫去获取信息的时候,页面的信息可能还没 ...