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

发布时的Github操作-推送失败

董康平
2023-03-14

我正在尝试更新pom中的版本。在我的maven项目中,使用GitHub(release)操作,使用UI/Create-release标记中提供的值。

name: Publish package to GitHub Repository
on:
  release:
       types: [created]

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - name: Check out Git repository
        uses: actions/checkout@v2
        with:
         fetch-depth: '0'
      - name: Install Java and Maven
        uses: actions/setup-java@v1
        with:
          java-version: 11
      - name: Update version in pom.xml (Release only)
        run: mvn -B versions:set -DnewVersion=${{ github.event.release.tag_name }} -DgenerateBackupPoms=false
      - name: Commit and push changes to pom.
        run: |
          git config --global user.name "GitHub Actions"
          git config --global user.email "no-reply@example.com"
          git add pom.xml
          git commit -m "Bumped version to ${{ github.event.release.tag_name }}"
          git push
      - name: Deploy to Github Package Registry
        env:
          GITHUB_USERNAME: ${{ github.actor }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: mvn --settings settings.xml --file pom.xml deploy

然而,我得到了一个错误:

Run git config --global user.name "GitHub Actions"
[detached HEAD 5ec5465] Bumped version to 1.0.4
 1 file changed, 1 insertion(+), 1 deletion(-)
fatal: You are not currently on a branch.
To push the history leading to the current (detached HEAD)
state now, use

    git push origin HEAD:<name-of-remote-branch>

我真的不明白为什么会这样。我认为git签出会给我一个带有默认(main)分支的本地git回购,我向其提交,然后推送(如果没有其他更改,这应该可以工作?)。此外,根据这个答案:https://stackoverflow.com/a/58257219/461499,唯一的区别似乎是配置上的?

我做错了什么?(我应该做什么?)


共有1个答案

何兴邦
2023-03-14

默认情况下,签出操作将签出触发工作流的引用。

根据文件:

签出触发工作流的存储库时,默认为该事件的引用或SHA。

在您的情况下,事件是创建一个版本,它不是Git存储库的一部分。

如果要签出特定分支,可以通过指定ref选项来实现:

steps:
  - name: Check out Git repository
    uses: actions/checkout@v2
    with:
      ref: main
      fetch-depth: '0'
 类似资料:
  • 我有一个Github repo项目,使用Github操作和一个docker文件来构建SpringBoot Java项目 我想从Github repo下载来自Github repo的定制工件包,并能够将工件上传到其中。 所以我按照配置Apache Maven用于GitHub包的链接,将该部分添加到settings.xml文件中: 为了从dockerfile构建中发布包,我在pom.xml中添加了以下

  • 我将GitHub操作用于CI/CD,并从中编写了一些cypress测试和YAML文件。但是当我推存储库时,我得到了一个错误。 失败的错误 我如何解决这个问题。当我在本地运行cypress时,它工作正常。

  • 在提交之前,我创建工作流来测试我的Python应用程序。问题是,如果测试失败,无论如何都会推送提交。如果测试不成功,我如何添加一个条件来避免推送? 下面是工作流文件. yml的结构。 `名称:Python应用程序on:push:branchs:[master]pull\u请求:branchs:[master] 工作:建造: 测试失败截图

  • 在本文章教程中,我们将演示如何查看 Git 存储库的文件和提交文件记录,并对存储库中的文件作修改和提交。 注意:在开始学习本教程之前,先克隆一个存储库,有关如何克隆存储库,请参考: http://www.yiibai.com/git/git_clone_operation.html 在前面的文章中,都在要本地编写文件代码和提交,维护管制自己的文件版本,然后这种“自娱自乐”的方式,意义不是很大,在这

  • 我想设置我的工作流程来执行以下操作: 在任何事件上(拉请求,在任何分支上推送) 结账码 构建项目 运行测试 为其他作业上传工件 从以前的工作下载工件 推送页面 从以前的工作下载工件 创建发行版 将工件上传到发行版 在我的中,指令适用于所有作业,因此在我的情况下不起作用。另一方面,仅在同一工作流中工作。 实现所述工作流程的正确方法是什么?

  • 我想使用GitHub操作自动化我的构建过程,这个过程有以下步骤: 签出 构建 打包 标记 增量版本 提交更改 推送标记和新提交 将包推送到repo