美文网首页
jenkins 应用file parameter

jenkins 应用file parameter

作者: jaymz明 | 来源:发表于2020-04-03 10:09 被阅读0次

研究jenkins parameters发现其提供了file 类型的参数。但是发现官方文档和我们大大小小的job,都没有推荐或使用这个参数。那么这个参数有用吗?还有为啥官网都没有示例,但是参数类型却在呢?
带着疑问,搜了下jenkins issues。发现这个参数其实很早就提出来了,但是一直还处于开发阶段,涉及到file,影响的点很多。我们能想到包含这些:IO,文件大小,文件类型,文件样式,文件解析,文件存储,异常处理等等。
但是有没有办法解决呢?有的。我去爬楼发现了这个方法:
在share library里配置以下信息(share library的配置可以看早期写的文章:https://www.jianshu.com/p/35b4fe64cebf
):
放在vars目录下面

import hudson.FilePath
import hudson.model.ParametersAction
import hudson.model.FileParameterValue
import hudson.model.Executor

def call(String name, String fname = null) {
    def paramsAction = currentBuild.rawBuild.getAction(ParametersAction.class);
    if (paramsAction != null) {
        for (param in paramsAction.getParameters()) {
            if (param.getName().equals(name)) {
                if (! (param instanceof FileParameterValue)) {
                    error "unstashParam: not a file parameter: ${name}"
                }
                if (env['NODE_NAME'] == null) {
                    error "unstashParam: no node in current context"
                }
                if (env['WORKSPACE'] == null) {
                    error "unstashParam: no workspace in current context"
                }

       if (env['NODE_NAME'].equals("master")) {
           workspace = new FilePath(null, env['WORKSPACE'])
       }else{
                        workspace = new FilePath(Jenkins.getInstance().getComputer(env['NODE_NAME']).getChannel(), env['WORKSPACE'])
       }

                filename = fname == null ? param.getOriginalFileName() : fname
                file = workspace.child(filename)

                destFolder = file.getParent()
                destFolder.mkdirs()

                file.copyFrom(param.getFile())
                return filename;
            }
        }
    }
    error "unstashParam: No file parameter named '${name}'"
}

使用的时候如下:

       file(description: 'please upload the file', name: 'file')
       uploadFile = unstashParam "file"

这样就可以读出上传文件的内容了。


相关文章

网友评论

      本文标题:jenkins 应用file parameter

      本文链接:https://www.haomeiwen.com/subject/amicphtx.html