Jenkins 多分支管道卡在旧的 Jenkinsfile 上

时间:2021-05-04 07:09:21

标签: git docker jenkins jenkins-pipeline multibranch-pipeline

我正在练习使用 cowsay 作为具有本地 git 存储库的应用程序的 CI 工作流。 我有一个 docker-compose 构建了三个 docker 容器:一个 Jenkins、一个 gitLab 和一个 Artifactory。所有三个都使用命名卷来存储一致的数据。 我正在运行一个基于 Jenkinsfile(声明性)和一个用于推送事件的 webhook 的多分支管道。 到现在为止还挺好。但是 - Jenkins 卡在旧版本的 Jenkinsfile 上。 我尝试过的解决方案:

  1. 我从我能找到的所有版本的 Jenkinsfile 中手动清空了 jenkins-home(我查看了 ~/jobs/ 和 ~/caches )
  2. 我完全删除了 Jenkins 并重新构建了映像,包括卷修剪。
  3. 我手动将文件迁移到新存储库
  4. 我使用“git filter-branch”从所有分支和提交中删除了所有版本的 Jenkinsfile。
  5. 我手动重写(不是复制粘贴)Jenkinsfile
  6. 我无缘无故地清理了整个浏览器缓存。

Jenknis 拒绝重新缓存并以某种奇怪的方式继续运行此行: “ docker build -t cowsay/master 。”这在 Jenkinsfile 中是不存在的。

除此之外,我找不到更多要清理的缓存。 帮助?

编辑: 我没有运行任何命令。这是配置为使 Jenkins 作业在“git push”上运行到任何分支。 我看到的错误是这一行: +docker build -t 'cowsay' 。 这是曾经在其中一个阶段的 Jenkinsfile 中的一行,但至少不是最后 5 次提交/推送。 此行导致作业失败的错误。

1 个答案:

答案 0 :(得分:0)

我自己从未经历过这种失败,但在这里我会尝试调试一些错误:

  1. 我会首先确保配置为使用来自 git 的 Jenkinsfile,而不是静态脚本。为此,请转到您的多分支管道,单击“配置”,在“构建配置”块中,它应该说模式是“由 Jenkinsfile”,并且路径是您的 Jenkinsfile 在 repo 中的相对路径。如果您转到每个分支构建作业,然后单击“查看配置”,您应该会看到它们的管道定义是“来自多分支配置的管道”。
  2. 我会验证您看到的问题是否与 Jenkinsfile 缓存有关,而不是与运行您没想到的命令的脚本之一有关(例如,如果您运行 shell 脚本或 make 文件,它们可能是调用失败的命令)。为此,我会在 Jenkinsfile 的顶部添加一个 echo,构建作业并查看 echo 是否在作业输出中。如果是,那么您将从 Jenkins 获取最新信息,并且其他东西正在调用您从 Jenkinsfile 中删除的命令。
  3. 如果您没有看到第 2 步中提到的 echo 命令,那么您肯定不是最新的。您提到您使用本地 git 存储库。你是如何配置git scm的? jenkins 是否可能正在等待来自远程服务器的推送通知,而您并未将本地更改推送到该服务器?如果您看到每次提交都会自动触发构建,那可能会消除这种情况。
相关问题