Jenkinsfile 语法:从工作区提交到 Subversion SCM 存储库

Posted

技术标签:

【中文标题】Jenkinsfile 语法:从工作区提交到 Subversion SCM 存储库【英文标题】:Jenkinsfile syntax: Commit to Subversion SCM repository from workspace 【发布时间】:2020-05-06 12:51:05 【问题描述】:

不知何故,我找不到这种情况下的声明性管道语法 (Jenkinsfile) 示例。

这个想法很简单。 Jenkins 管道工作区中有一些本地文件在管道阶段开始时从 Subversion SCM 存储库中检出,它是从某个分支下检出的。

我修改了这个文件,在管道阶段结束时,我需要将此文件提交回 SCM 存储库。

有没有人有用于此类提交的 Jenkins 管道 DSL 语法示例?此提交应该能够覆盖 SCM 存储库中分支下可用的文件。

【问题讨论】:

github.com/jenkinsci/pipeline-examples/blob/master/… 【参考方案1】:

您不想“覆盖”提交,而是添加另一个将更新文件的提交,对吗?事实上,了解存储库中的更改来自何处是一个很好的做法。

对于 Subversion,您应该执行类似的操作

withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId:'mycreds', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) 
  sh "svn commit --message 'jenkins update' --non-interactive --no-auth-cache --username $USERNAME --password $PASSWORD"

注意:mycreds 将是您存储在 jenkins 中的用户名/密码凭据的 ID

最终让 jenkins 提交是你想在实施之前与你的团队讨论的事情,如果做得不好,可能很难维护

【讨论】:

感谢您的帮助。我需要将一些配置容器文件提交到 Subversion 中的一个分支。该分支将用于保存此类配置容器。我想使用现有的 Jenkins 凭据 ID 进行提交。 所以它需要将 svn 客户端安装到 jenkins 主机(图像)中,这是我试图避免的,因为官方图像没有它。 您永远不必修改安装 jenkins 的图像。相反,您应该使用从站来运行构建,或者使用 docker 映像,理想情况下,我会使用允许我运行的 Kubernetes 集群、构建时间、1 个从站 + 我可能需要进行集成测试的其他容器要求。如果 docker hub 上没有从属镜像符合您的需求,或者您想为镜像添加一些安全性,我建议您尝试一下 packer 及其 docker 插件

以上是关于Jenkinsfile 语法:从工作区提交到 Subversion SCM 存储库的主要内容,如果未能解决你的问题,请参考以下文章

Jenkinsfile之语法

jenkinsFile

如何在Intellij中语法高亮显示Jenkinsfile

Jenkinsfile的语法检查(lint)

如何从Jenkinsfile触发组织扫描?

使用 Intellij Idea 在 Java 项目中突出显示 Jenkinsfile 语法