Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 8 additions & 7 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:
tag: ${{ steps.derive.outputs.tag }}
version: ${{ steps.derive.outputs.version }}
centralPom: ${{ steps.derive.outputs.centralPom }}
portalMarker: ${{ steps.derive.outputs.portalMarker }}
portalPage: ${{ steps.derive.outputs.portalPage }}
steps:
# workflow_run の GITHUB_SHA は既定ブランチの先端であり、CI が見たコミットとは限らない。
# 公開するのは CI が通したコミットそのもののため、ref にはその head を指定する
Expand Down Expand Up @@ -99,14 +99,15 @@ jobs:
# 到達の確認はコンパイラプラグイン 1 つで足りる(公開したプラグインが利用者のビルドで
# Maven Central から解決するのもこの成果物)
central="https://repo1.maven.org/maven2/${group//.//}/$artifact/$version/$artifact-$version.pom"
# Plugin Portal 側は plugin marker(group = plugin id・artifactId = <plugin id>.gradle.plugin)を見る
marker="$pluginId.gradle.plugin"
portal="https://plugins.gradle.org/m2/${pluginId//.//}/$marker/$version/$marker-$version.pom"
# Plugin Portal 側は版ページで見る(公開済みなら 200・無ければ 400)。Portal の m2 は
# 未公開の版でも Maven Central へ転送し、plugin marker は Central にも公開されるため、
# そちらでは公開の有無を判定できない
portal="https://plugins.gradle.org/plugin/$pluginId/$version"
{
echo "version=$version"
echo "tag=$tag"
echo "centralPom=$central"
echo "portalMarker=$portal"
echo "portalPage=$portal"
} >> "$GITHUB_OUTPUT"

# Maven Central への公開。デプロイの作成から公開の確定までを 1 タスクで行う
Expand Down Expand Up @@ -197,13 +198,13 @@ jobs:

- name: Publish to Gradle Plugin Portal
env:
PORTAL_MARKER: ${{ needs.prepare.outputs.portalMarker }}
PORTAL_PAGE: ${{ needs.prepare.outputs.portalPage }}
VERSION: ${{ needs.prepare.outputs.version }}
GRADLE_PUBLISH_KEY: ${{ secrets.GRADLE_PUBLISH_KEY }}
GRADLE_PUBLISH_SECRET: ${{ secrets.GRADLE_PUBLISH_SECRET }}
run: |
set -euo pipefail
if curl -fsI --retry 3 -o /dev/null "$PORTAL_MARKER"; then
if curl -fsI --retry 3 -o /dev/null "$PORTAL_PAGE"; then
echo "::notice::$VERSION is already on the Gradle Plugin Portal"
exit 0
fi
Expand Down
Loading