【问题标题】:How can I hard link a file in a jenkinsfile如何在 jenkinsfile 中硬链接文件
【发布时间】:2018-07-13 12:26:00
【问题描述】:

我的总体目标是,从 S3 同步一个文件,然后硬链接它以避免“许多副本”并在构建 docker 容器时节省空间。这是我目前所拥有的

withAWS(region: 'us-east-1') {
    s3Download(
        bucket: 'artifacts.mydomain.tld',
        file: "${env.ORACLE_RPM}",
        path: "${env.HOME}/${env.ORACLE_RPM}",
    )
    script {
        linkBlocking("etc/docker/${env.PROJECT}/${env.ORACLE_RPM}", "${env.HOME}/${env.ORACLE_RPM}")
    }
}

s3Download 有效,但我不确定如果有新版本可用,它是否会更新文件。

但是,当我尝试使用 FileSystem 类时,我实际上无法找出正确的调用约定,至少构造函数似乎没有充分记录。

【问题讨论】:

  • linkBlocking() 是什么?
  • @StephenKing 我在原帖中链接了 FileSystem 类,它在那个类中
  • 啊,我明白了..这是那个类的一个函数。

标签: groovy jenkins-pipeline jenkins-declarative-pipeline


【解决方案1】:

还没有弄清楚如何在 groovy 中执行此操作,当我尝试使用 Java 的 nio Files 时遇到沙盒错误,但使用 shell 步骤可以正常工作

           withAWS(region: 'us-east-1') {
                script {
                    try {
                        s3Download(
                            bucket: 'artifacts.mydomain.tld',
                            file: "${env.HOME}/${env.ORACLE_RPM}",
                            path: "${env.ORACLE_RPM}",
                        )
                    }
                    catch (Exception e ) {// don't update the file if it exists
                    }
                    finally {
                        sh "ln -f ${env.HOME}/${env.ORACLE_RPM} etc/docker/${env.PROJECT}/${env.ORACLE_RPM}"
                    }
                }

            }

【讨论】:

    猜你喜欢
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    相关资源
    最近更新 更多