我们正在将我们的源代码存储库迁移到Cloud Bucket,Jenkins使用的所有源代码都将像S3一样从Bucket读取/下载。
这也涉及到重写我们从SCM(git)读取的Jenkins管道。Jenkis管道项目配置不允许任何独立的脚本执行(比如weget或使用shell从bucket下载文件)
如果可能,我想执行以下操作:1)将jenkinsfile从S3存储桶下载到工作区2)在管道部分中为SCM选择无3)在脚本路径中为已下载的jenkinsfile提供给予路径
我的问题是,我如何才能使#1成为可能?.图像附件. x1c 0d1x
2条答案
按热度按时间7ivaypg91#
我们有一个类似的情况,我们需要允许执行动态生成的Jenkins管道,这些管道存储在S3中,并且不能使用常规的SCM选项进行检索。
为了解决这个问题,我们将以下方法 Package 在一个函数中:
1.从S3下载相关的Jenkinsfile
1.将文件作为文本加载到变量中
1.使用Groovy Evaluate函数运行管道。
在代码方面,我们有一个名为runPipelineFromS 3的共享库函数,它看起来像这样:
字符串
那么在流水线本身的用法就很简单了,你只需要选择Pipeline script作为定义,流水线脚本代码就像这样:
型
您还可以使用作业参数使其更通用:
型
x1c 0d1x的数据
可以根据您的需要修改共享库函数以支持其他执行参数,并且库可以全局加载,从而避免需要在每个作业中调用它,并使此解决方案成为每个作业的单行调用。
但基本的想法是使用你自己的逻辑而不是SCM的逻辑,通过你自己的脚本来检索和运行Jenkis文件-最好将功能封装在共享库中,以便将来在所有作业中进行修改-而不需要单独重新配置每个作业。
最后,特别是在全局加载库并使用常量默认存储桶的情况下,对于每个作业,您只需配置Jenkisfile的唯一路径,这与您使用SCM配置块请求的行为类似。
gv8xihay2#
Jenkis管道项目配置不允许任何独立的脚本执行(例如weget或使用shell从bucket下载文件)
那...我宁愿做两份工作
字符串
使用Amazon S3 publisher Jenkins plugin:
型
对于作业2,由作业1后构建步骤自动触发: