我在 Circle CI“机器”执行器上运行 Ubuntu 20.04。今天我看到:
sudo apt-get install -y pkg1 pkg2
Run Code Online (Sandbox Code Playgroud)
正在抛出此警告:
W: --force-yes is deprecated, use one of the options starting with --allow instead
Run Code Online (Sandbox Code Playgroud)
我没有使用“--force-yes”。这是从哪里来的?甚至
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)
抛出同样的警告。
我距离用一个 Jenkins 文件替换大量定制的 Jenkins 文件仅一步之遥。我需要获取的是包含正在执行的 Jenkinsfile 的目录。我正在使用声明性管道语法。
我查看了groovy代码中的几个想法,但找不到如何获得它。
对于那些需要查看特定内容的人,Jenkinsfile 的顶部如下所示:
#!/usr/bin/env groovy
pipeline {
agent any
environment {
tf='/var/lib/jenkins/tools/terraform0108/terraform'
dir='clients/xyz/us-east-1/dev'
}
Run Code Online (Sandbox Code Playgroud)
该变量dir被分配给该 Jenkinsfile 的位置。稍后在 groovy 代码中访问 dir。我希望能够省略该分配并仅从执行脚本的上下文中选取该目录。
我尝试了几种不同的方法,例如包含的步骤
script {
println __FILE__
}
Run Code Online (Sandbox Code Playgroud)
和
script {
scriptDir = new File(getClass().protectionDomain.codeSource.location.path).parent
println scriptDir
}
Run Code Online (Sandbox Code Playgroud)
两者都没有运行(在FILE情况下给出了不存在的变量,在第二种情况下给出了权限冲突)。我尝试了“${ FILE }”和其他变体。
我需要在步骤 -- sh 块中使用该目录,因此我相信它需要位于环境项中。
现在,Jenkins 作业配置提供了 Jenkins 文件的路径,但我不想重复该操作以在该级别创建另一个环境变量。
已经咨询过:
感谢帮助。