问题标签 [jenkins-shared-libraries]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - 使用 Kaniko 从 Kubernetes CloudBees Jenkins 共享库构建容器的问题
我正在尝试使用调用 Kaniko 的 Jenkins 共享库构建容器。Jenkins 是运行在 Kubernetes 集群上的 CloudBees 核心。
我更喜欢尝试使用 pod 模板来构建容器,但如果必须,我可以回退到专用 VM(但我的客户不会高兴)。
问题:从简单的Jenkinsfile
管道运行 Kaniko 工作正常,但尝试从shared-library
.
我的共享库的片段:
我得到的错误(剪断):
有没有其他人能够让 Kaniko 在 Kubernetes 上的 Jenkins 共享库中运行?
jenkins-pipeline - 共享库“vars”文件夹结构 - 我可以添加子文件夹吗?
从使用共享库扩展 - 目录结构我创建了一个共享库,其中我有多个 *.groovy 文件在 vars 文件夹中实现全局变量。
我可以将子文件夹添加到 vars 以更好地组织我的文件吗?我试过了,在使用全局变量时没有运气。我需要使用特定语法来引用子文件夹中的文件吗?还是不支持子文件夹?
jenkins - 如何将变量名而不是其值作为参数传递给 /var 函数?
我正在尝试划分管道。大多数参数都成功传递,但那些包含变量的参数在我需要之前就被解析了。
詹金斯版 2.164.1
}
在这里,我希望该版本将从重新定义的 VERSION 变量中获取,但 POSTBUILDACTION 作为字符串传递给函数。结果它被原样调用(“make.exe \some\path\file_temprorary-value”)。事实上我想得到的命令是(一些文件只包含一个数字,例如“5”)
但现在我有
或者,如果我试图通过 \${VERSION} 像:
- 按原样传输:
我试图在预构建阶段查看一个 POSTBUILDACTION 类 - 它等于“class org.codehaus.groovy.runtime.GStringImpl”,并且在传递 throw 后在构建阶段也相同 - 它变成了一个字符串:“class java.lang.String”
那么如何将包含变量的函数参数传递给函数,而不是它的值?或者将“呼吸生命”变成一根干燥的绳子,比如
所以变量可以解决吗?
jenkins - Jenkins 共享库中未调用构造函数
我正在尝试开发共享库并具有以下目录结构
- src/com/mycomapny
- MyTest.groovy
- 变量
- test.groovy
- 詹金斯文件
我的Jenkinsfile仅调用 test.groovy 中可用的方法并提供所需的输入。它导入 MyTest 并创建对象并调用构造函数,然后是执行MyTest.groovy文件中可用功能的实际方法
这里从未从全局 vars/test.groovy 调用构造函数类
我尝试从 groovy 调用类和方法,它工作正常,但是当我从 jenkinsfile 调用它时它不工作。我不知道为什么我不能调用构造函数以及我缺少什么。
我已将@NonCPS放在上面的 test.groovy 方法上,但它仍然无法正常工作。
在这里,我只想从 jenkins 文件中调用构造函数并在我的 vars/test.groovy 中打印输入值的值。
EDIT1:当我在方法“def nofity”上方使用@NonCPS 时,我的构建正在成功,但除了通知方法的第一行中的打印语句外,我什么也没得到。
如果我不使用@NonCPS,我会得到以下异常
jenkins - 尝试使用共享库并行触发所有作业
我想从另一个工作中触发詹金斯文件夹中的所有工作,为此我尝试编写詹金斯共享库并使用它。但是它会触发构建,然后失败并出现异常
我的共享库 runAllJobsInFolder.groovy:
========================================
在 Jenkins 工作中,我使用 runAllJobsInFolder "testfolder" 调用它
我想将触发作业的结果传播到主要作业
在工作日志中
在此处输入代码 在此处输入代码
jenkins - 如何避免 Jenkins 要求在受信任的共享管道中进行调用的进程内批准
TLDR;
如何以jenkins
非交互方式进行配置,以便人们可以使用我的共享库,而无需我点击进程内脚本的批准按钮。
很长的故事...
我在 Jenkins 中创建了一个共享库,看起来像这样(简化版):
这样用户就可以像这样调用我的库:
该库也在jenkins/configure下配置。
麻烦的是詹金斯总是要求签名的过程中脚本批准:
签名:staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods invokeMethod java.lang.Object java.lang.String java.lang.Object
但是在文档中它说共享库应该是可信的:https ://jenkins.io/doc/book/pipeline/shared-libraries/#global-shared-libraries ...
这是我尝试过的:
1. 完全禁用进程内脚本审批
这似乎是不可能的:请参阅如何禁用 Jenkins 管道构建的安全检查并打开jenkins
票证:https ://issues.jenkins-ci.org/browse/JENKINS-28178
2.使用Configuration As Code预先配置jenkins,允许这种特定方式
这目前还不可能......工作似乎已经基本准备就绪,但截至今天仍需要合并到 master 中:https ://github.com/jenkinsci/script-security-plugin/pull/250
3. 在 jenkins/scriptApproval 上 GET 和 POST
我使用浏览器调试器查看进行了哪些调用。页面上的 GET 为我提供了正确的 ID,然后一个 POST 就足够了,但是由于两个请求是分开发出的,ID 之间发生了变化,我收到了 404 错误...
会给:
4. 隐式加载库
我隐式加载库,并删除了
来自詹金斯文件。仍然需要批准。
没有想法
我完全没有想法。通常应该信任共享管道,所以我真的不明白为什么他仍然要求批准这些外部调用......或者我在我的共享库的实现中做错了什么?
jenkins - 在管道中包括多个步骤作为外部文件
我正在尝试将我的管道拆分为多个文件,因此一个阶段内部有多个阶段,我想将其移动到vars
我正在导入的 jenkins-shared-library 目录中的另一个文件中。
在里面utils-library
我有一个名为的文件vars/externalNightlyStages.groovy
及其内容:
所以理论上,在管道中调用这个库应该只是导入阶段并运行,就好像它们都在一个文件上一样。但是,这不起作用。
我尝试从不同的地方调用库,用script
块环绕,用块环绕steps
。什么都没有用。
有什么建议么?
jenkins - Jenkins 将触发块传递给共享库管道
我有一个共享库,其中包含一个声明性管道,许多作业都在使用它来构建。但是,我希望能够将触发器块从 Jenkinsfile 传递到共享库,因为我想通过 Cron 触发一些作业,其他一些我想通过 SNS 触发,以及其他具有上游作业触发器的作业。
有没有办法我可以做到这一点?我尝试过的一切都失败了
我努力了
失败了
还尝试将 cron 计划传递到共享库中,例如
但这给出了错误
已经尝试过各种其他的东西,但似乎声明式风格需要一个触发器块,里面只有触发器。
有谁知道实现我想要做的事情的方法?
python - Jenkins 共享库:如何从包中包含的 python 模块运行代码?
我想运行一个 python 脚本作为从 github repo 触发的 jenkins 管道的一部分。如果我将脚本直接存储在存储库本身中,我就可以sh 'python path/to/my_package/script.py'
完美地完成工作。但是,由于我想从多个 repos 的多个管道中使用它,所以我想把它放在 jenkins 共享库中。
我发现这个问题建议将python文件存储在resources
目录中并在使用前将其复制到临时文件中。仅当脚本是一个独立文件时才有效。不幸的是,我的是一个包含多个 python 文件并在它们之间导入的包,所以这是不行的。我还尝试从this question的答案中复制包含python包的整个文件夹,这表明使用
但它给了我以下错误:
似乎需要一些额外的权限,我认为我无法获得(它是一台共享机器)。
所以?有谁知道我如何从 jenkins 共享库运行 python 包?目前我能想到的唯一解决方案是手动重新创建python包的目录结构,这显然非常混乱且不通用。
PS:没有特别的理由使用 python 脚本而不是在 groovy 中编写相同的脚本。只是python脚本经过了很好的测试、很好的理解和很好的支持。现在用 groovy 重写整个事情是不可行的。
jenkins - Jenkins 共享库:具有单个必需字符串参数的函数
我有一个用于项目特定 Jenkins 设置的共享库。
我的其中一个文件vars/gradle.groovy
如下所示:
当我尝试从我的实际项目代码(声明性 Jenkinsfile)中调用它时,如下所示:
我收到以下错误:
任何想法我做错了什么?其他函数使用命名参数,它们开箱即用。
但在这种情况下,我更喜欢一个简单的String
参数,以使方法的接口尽可能方便。
谢谢!