docker - 如何在共享 jenkins 库中引用 shell 脚本
问题描述
我有一个 Jenkinsfile,它使用共享的 Jenkins 库并在下面定义的 groovy 文件中调用方法。
shared-jenkins-lib
|
|-----------vars
| |-------pipeline_script.groovy
|
|-----------scripts
|-------test_script.groovy
这是库的结构,并且pipeline_script.groovy
有一个test
从 jenkinsfile 调用的方法。
def test(){
dockerArgs = "--entrypoint /bin/bash"
dockerCommand = "`../scripts/test_script.sh`"
dockerOut = sh (script: "docker run ${dockerArgs} ${image} ${dockerCommand}", returnStatus: true)
}
我参考test_script.sh
但似乎在该位置找不到文件。我在 docker 中运行 jenkins。引用脚本的正确方法是什么
解决方案
如共享库插件的文档中所述,库 repo 具有非常特定的结构。repo 的根目录可以有以下 3 个文件夹:
+- src # Groovy source files
| +- org
| +- foo
| +- Bar.groovy # for org.foo.Bar class
+- vars
| +- foo.groovy # for global 'foo' variable
| +- foo.txt # help for 'foo' variable
+- resources # resource files (external libraries only)
| +- org
| +- foo
| +- bar.json # static helper data for org.foo.Bar
如果你想从你的库方法中引用一个帮助代码/数据,你应该把它放在resources
目录中,然后你可以使用libraryResource
步骤检索它,也在文档中描述。
推荐阅读
- typescript - Firebase Firestore,当必须以编程方式解决子字段名称时,如何更新嵌套在子字段中的数组?
- php - 关联账户的条纹退款
- asp.net-core - 从 .net 核心中的像素值保存文件
- pyspark - Delta Lake 合并不更新模式(启用自动模式演变)
- verilog - 如何使用编译器指令 (`ifdef) 和不同的`define's 编译文件?
- r - 使用 Google 字体生成投影仪 PDF 的问题
- javascript - 在路由更改之前反应路由器检查条件
- python - 从 html 页面上的输入框中提取值以插入到 views.py 函数中
- r - R如何用数据表中的另一个值向量替换/ gsub一个值向量
- javascript - 保存本地存储是不稳定的 - 赛普拉斯