我正在尝试为 Maven 项目设置基本的 CI 环境。
这是我正在使用的 github action yml 样板:
name: Java CI with Maven
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
cache: maven
- name: Build with Maven
run: mvn -B package --file pom.xml
执行工作流程时,我遇到了以下错误:
Error:
Failed to execute goal on project example:
Could not resolve dependencies for project <dependency>:
Failed to collect dependencies at <dependency>:
Failed to read artifact descriptor for <dependency>:
Could not transfer artifact <dependency> from/to github (https://maven.pkg.github.com/example/package/):
authentication failed for https://maven.pkg.github.com/example/package/.../<dependency>.pom,
status: 401 Unauthorized -> [Help 1]
我不认为工作流程文件有任何本质上的错误,但是,我的 Maven 项目使用了我通过 github 包部署的包。
据我有限的知识,我相信要导入我部署的包,我需要在
.m2/settings.xml
中拥有一些凭据。
如果我在本地执行此操作,效果很好,但如何在工作流程中实现此目的?
这是一个旧的,但也许它会对将来的某人有所帮助。您需要传递到名为 GITHUB_TOKEN 的操作环境变量。 所以:
name: Java CI with Maven
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
cache: maven
- name: Build with Maven
env:
GITHUB_TOKEN: ${{ secrets.MY_TOKEN }}
run: mvn -B package --file pom.xml
您可以在这里阅读更多相关信息:https://docs.github.com/en/actions/publishing-packages/publishing-java-packages-with-maven