java 通过GitHub操作部署到Maven包

cqoc49vn  于 2023-05-21  发布在  Java
关注(0)|答案(1)|浏览(208)

所以,我有一个GitHub Repository,里面有编译好的Maven项目。我设置了一个GitHub操作来将它们部署到GitHub包中。这是我当前的release-package.yml:

name: Maven Package

on: push

jobs:
  publish-gpr:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.10'
      - uses: actions/setup.java@v3
        with:
          java-version: '11'
          distribution: 'adopt'
          server-id: github
          server-username: ...
          server-password: ...
      - name: Publish Package
        run: |
          chmod +x ./deploy.sh
          ./deploy.sh
        shell: bash

可以看到,“server-username”和“server-password”仍然是空白,这是我的主要问题。我在这里读到:https://docs.github.com/en/actions/publishing-packages/publishing-java-packages-with-maven,我必须添加这个,但我不知道什么用户名和密码使用,除了我自己的。但我想避免这种情况。deploy.sh包含以下内容:

#!/bin/bash

OWNER=...
REPOSITORY=...

filelist=$(find . -type f -path "*.pom")
for file in $filelist
do
    data=$(python getdata.py $file)
    groupId=$(echo $data | cut -d' ' -f1)
    artifactId=$(echo $data | cut -d' ' -f2)
    version=$(echo $data | cut -d' ' -f3)

    mvn deploy:deploy-file -DgroupId=$groupId -DartifactId=$artifactId -Dversion=$version -Dfile=$file -Durl=https://maven.pkg.github.com/$OWNER/$REPOSITORY
done

在这种情况下,“OWNER”和“REPOSITORY”故意为空。
我已经尝试过使用Actions secrets或Deploy键,但我并不真正理解它们,文档也没有真正解释任何东西。当我尝试这些解决方案时,它失败了401未授权错误代码。
问题是我必须使用哪些凭据?文档让我困惑,我不知道我的方法是否最佳。如果有人能帮我就太好了。先谢谢你了!

更新

我尝试的新工作流程:

name: Maven Package

on: push

jobs:
  publish-gpr:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      deployments: write
      packages: write
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.10'
      - uses: actions/setup-java@v3
        with:
          java-version: '11'
          distribution: 'adopt'
      - name: Publish Package
        run: |
          chmod +x ./deploy.sh
          ./deploy.sh
        shell: bash
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

这是我经常遇到的错误:

Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy-file (default-cli) on project standalone-pom: Failed to deploy artifacts: Could not transfer artifact <artifact> from/to remote-repository (https://maven.pkg.github.com/<repo-path>): authentication failed for https://maven.pkg.github.com/<repo-path>/<path-to-jar>, status: 401 Unauthorized -> [Help 1]
esbemjvw

esbemjvw1#

这里正确的术语是“发布”,而不是“部署”。
actions/setup.java应为actions/setup-java,即将.替换为-
您需要遵循将软件包发布到GitHub软件包。
关于server-usernameserver-password,您不必为GitHub包配置它们,因为它们已经具有正确的默认值,即GITHUB_ACTORGITHUB_TOKEN,请参见Maven选项。
参考github上下文配置OWNERREPOSITORY值。

相关问题