【问题标题】:Jenkins Pipeline Utility Steps - zip zipFileJenkins 管道实用程序步骤 - zip zipFile
【发布时间】:2018-06-29 08:44:27
【问题描述】:

我正在尝试使用管道脚本压缩作为我的 jenkins 管道作业的输出创建的文件夹。通过谷歌搜索,我认识了 Jenkins

管道实用程序步骤 - zip zipFile

https://jenkins.io/doc/pipeline/steps/pipeline-utility-steps/#code-zip-code-create-zip-file 压缩文件夹/文件,但无法获得精确的压缩管道语法。

在我的工作工作区中,我有一个名为“Test”的文件夹,其中有 2 个子文件夹分别为“Test1”和“Test2”。每个子文件夹都有 .dll 文件。所以,我想用所有子文件夹压缩整个“测试”文件夹。

node(Jenkinks_1)
{
    echo "ZIP"
    zip zipFile: 'Test.zip', dir:'C:\\workspace\\Build_Sample\\Test'
    echo "END - ZIP"
}

以下是 Jenkins 的控制台输出:

Started by user XXXXX
[Pipeline] node
Running on Jenkinks_1 in C:\workspace\Build_Sample
[Pipeline] {
[Pipeline] echo
ZIP
[Pipeline] echo
END - ZIP
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

寻找一些使用管道语法压缩文件夹的指导。感谢您的投入。

我想压缩一些文件作为我的 jenkins 管道作业的输出

【问题讨论】:

    标签: jenkins jenkins-pipeline


    【解决方案1】:

    首先,分阶段和步骤尝试相同的操作,as in here

    pipeline {
        agent any
        stages {
            stage ('push artifact') {
                steps {
                    sh 'mkdir archive'
                    sh 'echo test > archive/test.txt'
                    zip zipFile: 'test.zip', archive: false, dir: 'archive'
                    archiveArtifacts artifacts: 'test.zip', fingerprint: true
                }
            }
            ...
        }
    

    它使用archiveArtifacts记录结果。

    如果现在可以使用绝对路径,请尝试使用相对路径 ('..')

    正如OP Sri 所见,zip zipFileJENKINS Pipeline Utility Steps Plugin 的一部分,并且需要JENKINS Pipeline Utility Steps Plugin
    见“Implemented Steps”。


    关于用于多标准文件选择的语法,NicolasW 指出 in the comments documentation is vague: "use glob ant-style syntax"...
    不过,他使用基本的逗号分隔语法让它工作。
    例如

    zip zipFile: 'test.zip', archive: false, glob: 'config-/**/,scripts/**/*.*
    

    但是,正如the comments 中的Tanvir 所述,issue 44078 意味着您需要将zip 替换为:

                     script{ zip zipFile: 'test.zip', archive: false, dir: 'archive' }
    

    意味着您需要使用script 块。

    【讨论】:

    • 感谢您的回复。我希望使用 Pipeline Utility Steps - zip zipFile 使用 Pipeline Script 而不是声明性语法。我确实尝试使用上述脚本.. 但构建失败并显示以下错误消息:
    • org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败:WorkflowScript:8:无效参数“zipFile”,您的意思是“标签”吗? @ line 8, column 21. zip zipFile: 'test.zip', archive: false, dir: 'archive' ^ WorkflowScript: 8: Invalid parameter "archive",你的意思是“url”吗? @ line 8, column 42. zip zipFile: 'test.zip', archive: f ^ WorkflowScript: 8: Invalid parameter "dir", 你的意思是 "url" 吗? @ 第 8 行,第 58 列。:'test.zip',存档:false,目录:'arch
    • 你为什么使用archiveArtifacts?在 zip 步骤中使用 archive: true 时,您可以直接将创建的 zipfile 归档。
    • @IVleafclover 我相信(2年后,有点模糊),这是为了让工件可供下载,如issues.jenkins-ci.org/browse/JENKINS-50130所述。 zipFile 只是一个 zip,archiveArtifacts 是 Jenkins 对存储“工件”的内置支持,这对于通过管道使它们可用很重要。
    • @VonC 感谢您的回答。 zip zipFile: 'test.zip', archive: true, dir: 'archive' 将压缩并存档 Jenkins 工件中的 zip 文件。这样就不需要使用archiveArtifacts 命令。没关系,您的原始答案运行良好,并且在您原始答案两年后,我的评论往往无关紧要。
    【解决方案2】:

    安装Pipeline Utility Steps 插件后可以压缩。

    【讨论】:

    • 很有趣,只是因为没有安装插件而无法正常工作?
    • 是的,安装 Pipeline Utility Steps 插件后 Zip 命令正常工作。
    • 好的,我已经完成了相应的回答,并附有一些链接。
    【解决方案3】:

    你可以只使用sh(jenkins服务器需要安装zip);

     sh '''
                zip -r  algo.zip algo
     '''
    

    这样的管道脚本

    node {
        stage('Clean'){
            cleanWs()
        }
        stage('Checkout') {
           git branch: 'develop', url: 'ssh://user@ip:29418/prj.git'
        }
        stage('Zip') {
            dir('algo-python') {
                sh '''
                zip -r  algo.zip algo
                '''
           }
        }
        stage('Upload zip'){
            dir('algo-python') {
                sh '''
                    source /etc/profile
                    export HADOOP_USER_NAME=dev
                    hdfs dfs -put -f algo.zip /user/dev/zipfile/
                '''
            }
        }
    }
    

    【讨论】:

      【解决方案4】:

      我遇到了这个问题,因为 zip 没有安装在主机上。
      提醒自己:如果需要zip,请先安装。

      sudo yum install zip

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-14
        • 1970-01-01
        • 2017-11-25
        • 2019-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多