我如何硬 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}"
}
}
}
我的总体 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}"
}
}
}