我如何硬 link jenkinsfile 中的文件

How can I hard link a file in a jenkinsfile

我的总体 objective 是,从 S3 同步一个文件,然后硬 link 它以避免 "many copies" 并在构建 [=24= 时节省 space ] 容器。这是我目前所拥有的

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 class 时,我实际上无法找出正确的调用约定,至少构造函数似乎没有足够的文档。

在 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}"
                    }
                }

            }