当前位置: 首页 > 知识库问答 >
问题:

Jenkins-使用NoHeadExctive标记构建失败

阎烨
2023-03-14

当我试图通过Jenkins标记特定的构建时,会出现以下错误:

ERROR: Error tagging repo 'refs/remotes/origin/master' :
org.eclipse.jgit.api.errors.NoHeadException: Tag on repository without
HEAD currently not supported hudson.plugins.git.GitException:
org.eclipse.jgit.api.errors.NoHeadException: Tag on repository without
HEAD currently not supported    at
org.jenkinsci.plugins.gitclient.JGitAPIImpl.tag(JGitAPIImpl.java:509)
    at
hudson.plugins.git.GitTagAction$TagWorkerThread.perform(GitTagAction.java:199)
    at hudson.model.TaskThread.run(TaskThread.java:129) Caused by:
org.eclipse.jgit.api.errors.NoHeadException: Tag on repository without
HEAD currently not supported    at
org.eclipse.jgit.api.TagCommand.call(TagCommand.java:137)   at
org.jenkinsci.plugins.gitclient.JGitAPIImpl.tag(JGitAPIImpl.java:507)
    ... 2 more Trying next branch Completed

当试图在工作区中标记它工作正常,HEAD实际上是附加的,git引用看起来很好,这可能是一个问题,当詹金斯试图标记它在错误的工作目录中寻找?

有没有办法用它试图标记的方式提取更多详细的日志

仅供参考-使用Jenkins 2.81和swarm Linux代理,最新的Git插件。

共有1个答案

杨飞
2023-03-14

考虑抛出异常的实际代码:

    try (RevWalk revWalk = new RevWalk(repo)) {
        // if no id is set, we should attempt to use HEAD
        if (id == null) {
            ObjectId objectId = repo.resolve(Constants.HEAD + "^{commit}"); //$NON-NLS-1$
            if (objectId == null)
                throw new NoHeadException(
                    JGitText.get().tagOnRepoWithoutHEADCurrentlyNotSupported);

仔细检查你的配置:参见“Jenkins Git插件分离头”。你需要确保詹金斯真的结帐了
例如,尝试添加一个包含git status的简单测试步骤,以验证这一点。

 类似资料:
  • 问题内容: 使用git“标记”构建时,jenkins上有一个选项。 这是做什么用的,我该如何使用?我假设我可以在该版本中标记构建,但是我正在努力寻找如何推送该标记的方法-除非我可以按下该标签,否则它不会那么有用。 问题答案: 您并不总是希望推送 所有 构建标记,因为根据构建周期的不同,可能会有很多构建标记。 但是,任何任务调度程序(例如Jenkins)都将标记构建,以防您想返回到特定代码并对其进行

  • Jenkins将良好的构建标记为失败,因为某些单元测试失败。如果我在没有单元测试的情况下运行构建,我将获得构建成功状态。如何配置Jenkins来执行以下操作:

  • 我有一个需求,根据开发人员的兴趣,他可能想选择从主分支或标记构建。 我能够使用Git参数插件从标记构建。从git参数插件中,当我选择标记或分支时,我可以看到我的标记和分支。但是当我选择一个要构建的分支时,我会得到下面的git错误。 +refs/tags/:refs/remotes/origin/tags/+refs/heads/master:refs/remotes/origin/master 0

  • ----maven-enforcer-plugin:1.0.1:enforce(default)@cli---添加ignore:org.eclipse.jetty.spdy.* ----maven-enforcer-plugin:1.0.1:enforce(enforce-bang-dependencies)@cli-- ---build-helper-maven-plugin:1.7:times

  • 问题内容: 由于某些单元测试失败,Jenkins将良好的构建标记为失败。如果我在不进行单元测试的情况下运行构建,则将获得“构建成功”状态。我如何配置Jenkins来执行以下操作: 构建成功+单元测试失败->发送自定义内容的电子邮件通知,例如构建成功+多少单元测试失败。 构建成功+单元测试成功->发送电子邮件通知,说明构建和单元测试均成功 构建失败->不要运行单元测试->在构建失败时发送电子邮件通知

  • 问题内容: 我在寻找答案时发现的恐怖故事… 好的,我有一个.sh脚本,它几乎完成了詹金斯应该做的所有事情: 从SVN检出源 建立项目 部署项目 自己清洗 因此,在Jenkins中,我只需要通过在ExecuteShell命令中运行脚本来“构建”项目。脚本已运行(下载了源代码,项目正在构建/部署中),但随后将构建标记为失败:生成步骤’Executeshell’将构建标记为失败,即使脚本已成功运行!我尝