github操作中的Maven部署不断失败,但在本地运行良好

Posted

技术标签:

【中文标题】github操作中的Maven部署不断失败,但在本地运行良好【英文标题】:Maven deploy in github actions keeps failing but runs fine locally 【发布时间】:2020-12-15 08:47:37 【问题描述】:

嘿,在构建和测试我的更改后,我一直试图让我的 github 操作部署 github 包,但无论我尝试什么,我都会收到以下错误:

[INFO] 
[INFO] --- maven-deploy-plugin:2.8.2:deploy (default-deploy) @ topfind-common ---
[INFO] Uploading to github: https://maven.pkg.github.com/topfind/topfindscraper/com/topfind/topfind-common/1.121/topfind-common-1.121.jar
[INFO] Uploading to github: https://maven.pkg.github.com/topfind/topfindscraper/com/topfind/topfind-common/1.121/topfind-common-1.121.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  21.077 s
[INFO] Finished at: 2020-08-26T14:01:59Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy) on project topfind-common: Failed to deploy artifacts: Could not find artifact com.topfind:topfind-common:jar:1.121 in github (https://maven.pkg.github.com/topfind/topfindscraper) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy) on project topfind-common: Failed to deploy artifacts: Could not find artifact com.topfind:topfind-common:jar:1.121 in github

测试顺利通过,我的工作流文件中有以下内容:

name: Build

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Set up JDK 13
      uses: actions/setup-java@v1
      with:
        java-version: 13
    - name: Get user
      run: echo 'The username is' $ github.actor 
    - name: Build with Maven
      env:
        USERNAME: $ github.actor 
        PASSWORD: $ secrets.GITHUB_TOKEN 
      run: mvn -B -e deploy --file pom.xml --settings settings.xml
    - uses: actions/delete-package-versions@v1
      with:
        package-name: 'com.topfind.topfind-scraper'

我的 pom 文件有一个指向存储库的 distributionManagement。当我在本地进行 mvn deploy 并且它不要求其他任何东西时,一切正常。有谁知道我做错了什么或我错过了什么?

【问题讨论】:

【参考方案1】:

由于无法查看您的 pom 文件,我认为设置需要稍作调整。根据您的本地构建工作正常的声明,那么我的想法是查看您的管道设置。

只传递令牌而不是传递密码。可以在此处找到有关如何设置发布工作流的确切示例 https://docs.github.com/en/actions/language-and-framework-guides/publishing-java-packages-with-maven

分销经理应具备以下条件(如果还没有)

  <distributionManagement>
    <repository>
      <id>github</id>
      <name>GitHub Packages</name>
      <url>https://maven.pkg.github.com/topfind/topfindscraper</url>
    </repository>
  </distributionManagement>

您的工作流程步骤应如下所示

  - uses: actions/checkout@v2
  - uses: actions/setup-java@v1
    with:
      java-version: 13
  - name: Publish package
    run: mvn -B deploy
    env:
      GITHUB_TOKEN: $ secrets.GITHUB_TOKEN 

注意:确保您的 github 令牌具有对包的读/写访问权限,以确保允许部署

更新 1

根据 cmets 中的请求,这里是创建发布令牌的设置

https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token

如果令牌是私有仓库,它也需要访问仓库。否则。您只需要以下权限,具体取决于您在处理 github 包时是否希望您的令牌允许读取、写入或删除。

https://docs.github.com/en/packages/publishing-and-managing-packages/about-github-packages

【讨论】:

嘿,爱德华。感谢您的答复。你知道我如何确保 github 令牌具有对包的读/写权限吗? 更新了响应以提供有关如何添加令牌的说明 它一直在说: Transfer failed for maven.pkg.github.com/topfind/topfindscraper/com/topfind/… 401 Unauthorized -> [Help 1] 我按照教程创建了您所说的令牌,并将令牌传递给组织,并将其用作 GITHUB_TOKEN 但它仍然不起作用。不知道我还缺少什么。 @overflowed 我刚刚检查了您的存储库,它似乎是私有的,因此您需要添加存储库范围以使其工作。我更新了上面的回复以包括每个权限的解释。

以上是关于github操作中的Maven部署不断失败,但在本地运行良好的主要内容,如果未能解决你的问题,请参考以下文章

maven 发布/部署到 github 包

Github 发布操作 - 推送失败

Maven 构建中的 -B 开关是啥?我在 GitHub Actions 中看到它,但在其他地方没有看到

如何从 GitHub 包下载最新的 jar 文件并使用 Maven GitHub 操作部署到云中心?

部署到 DigitalOcean 时 GitHub 操作失败

使用tomcat7-maven-plugin进行Tomcat部署失败,并显示错误“无法调用Tomcat管理器:通过对等方重置连接:套接字写入错误”