|
投稿日: 2025-03-28 (金)
|
| 目次▼ |
試しにActionsでPackagesへPublishしようとしているんだけどどうしてかエラーが出る。
> Task :publishMavenJavaPublicationToGitHubPackagesRepository FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':publishMavenJavaPublicationToGitHubPackagesRepository'. > Failed to publish publication 'mavenJava' to repository 'GitHubPackages' > Could not PUT 'https://maven.pkg.github.com/(以下略)'. Received status code 401 from server: Unauthorized * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. [Incubating] Problems report is available at: file:///home/runner/work/storagebox-fabric/storagebox-fabric/build/reports/problems/problems-report.html Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. For more on this, please refer to https://docs.gradle.org/8.12/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. BUILD FAILED in 1m 42s 9 actionable tasks: 9 executed Error: Process completed with exit code 1.
> Task :publishMavenJavaPublicationToGitHubPackagesRepository FAILED FAILURE: Build failed with an exception. [Incubating] Problems report is available at: file:///home/runner/work/storagebox-fabric/storagebox-fabric/build/reports/problems/problems-report.html * What went wrong: Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. Execution failed for task ':publishMavenJavaPublicationToGitHubPackagesRepository'. > Failed to publish publication 'mavenJava' to repository 'GitHubPackages' You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. > Could not PUT 'https://maven.pkg.github.com/(以下略)'. Received status code 403 from server: Forbidden For more on this, please refer to https://docs.gradle.org/8.12/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. * Try: 9 actionable tasks: 9 executed > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. BUILD FAILED in 1m 13s Error: Process completed with exit code 1.
以下のように変更してみた。
ちなみにこれはbuildしてPackagesにpublishするworkflowだ。
# Build and Publish
name: Gradle CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Java 21
uses: actions/setup-java@v3
with:
java-version: '21'
distribution: 'temurin'
- name: Change gradlew permissions
run: chmod +x ./gradlew
- name: Build with Gradle
uses: gradle/gradle-build-action@v2
with:
arguments: build
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: Artifacts
path: build/libs/
publish:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v3
- name: Set up Java 21
uses: actions/setup-java@v3
with:
java-version: '21'
distribution: 'temurin'
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: Artifacts
path: build/libs/
- name: Change gradlew permissions
run: chmod +x ./gradlew
- name: Publish to GitHub Packages
env:
GITHUB_TOKEN: ${{ secrets.PAT_KEY }}
run: ./gradlew assemble publish
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
にしていたが、どうやらGITHUB_TOKENは権限不足で使えないようだ。
たとえ、permissions: でpackages: writeにしてもセキュリティ上の理由でpublicリポジトリでは不可能なようである。
なので次のようにシークレットを指定する。
名前は任意だがここではPAT_KEYというシークレットをつくった。
シークレットキーはリポジトリの上バー「Settings」->左のサイドバー「Secrets and variables」->左のサイドバーに展開された「Actions」から作成できる。
Repository secretsの「New repository secret」をクリックして任意だがここでは「PAT_KEY」とし、Personal access tokens (classic)のトークンを貼り付けてシークレットを作成する。
そしてのenvには以下のように変更する
GITHUB_TOKEN: ${{ secrets.PAT_KEY }}
おそらくだが、Actionsからセキュリティ上の理由でPublicなリポジトリではデフォのGITHUB_TOKENではPackagesにPublishできないような仕様なんだと思う。
PRをマージして悪意のあるコードが入ったまま、Publishしてしまうというインシデントを考えるとまあ妥当なのだろうか。
しかし、Docsにもそれについて言及されていないとは参った。Private Repoなら成功する模様。
キーワード: 情報技術, GitHub Packages, Publish, GitHub Actions, CI/CD, 自動化, エラー, Failed, 権限不足, PAT, Token, トークン
| Pitan |
![]() |
| プログラミングや音MADやらが趣味 |
| Table of Contents |
[もっと見る]
[もっと見る]