Skip to main content
ドキュメントには� �繁に更新が� えられ、その都度公開されています。本ページの翻訳はま� 未完成な部分があることをご了承く� さい。最新の情� �については、英語のドキュメンテーションをご参照く� さい。本ページの翻訳に問題がある� �合はこちらまでご連絡く� さい。

このバージョンの GitHub Enterprise はこの日付をもって終了となりました: 2022-06-03. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの改善、新機能のためには、最新バージョンのGitHub Enterpriseにアップグレードしてく� さい。 アップグレードに関する支援については、GitHub Enterprise supportに連絡してく� さい。

GradleでのJavaパッケージの公開

継続的インテグレーション(CI)ワークフローの一部として、Javaのパッケージをレジストリに公開するためにGradleを利用できます。

ノート: GitHubホストランナーは、現在GitHub Enterprise Serverでサポートされていません。 GitHubパブリックロードマップで、計画されている将来のサポートに関する詳しい情� �を見ることができます。

はじめに

このガイドは、JavaのパッケージをGitHub PackagesやMaven Central Repositoryに公開するワークフローの作成方法を紹介します。 1つのワークフローで、パッケージを1つのリポジトリあるいは複数のリポジトリに公開できます。

必要な環境

ワークフローファイルと設定オプションに関する基本的な理解をしておくことをおすすめします。 詳しい情� �については、「GitHub Actions を学ぶ」を参照してく� さい。

GradleでのJavaプロジェクトのためのCIワークフローの作成に関する詳しい情� �については「GradleでのJavaのビルドとテスト」を参照してく� さい。

また、以下の基本的な理解があれば役立ちます。

パッケージの設定について

build.gradleファイルのMavenPublicationセクションにあるgroupId及びartifactIdフィールドは、レジストリがパッケージをレジストリにリンクするために使用する、パッケージのためのユニークな識別子を生成します。 これは、Mavenのpom.xmlファイルにおけるgroupIdartifactIdに似ています。 詳しい情� �については、Gradleのドキュメンテーションの「Maven Publish Plugin」を参照してく� さい。

build.gradleファイルには、Gradleがパッケージを公開する配布管理リポジトリの設定も含まれています。 各リポジトリは、名前、デプロイメントのURL、認証のためのクレデンシャルを持っていなければなりません。

Maven Central Repositoryへのパッケージの公開

新しいリリースを作成するたびに、パッケージを公開するワークフローを起動できます。 以下の例でのワークフローは、createdという種類でreleaseイベントが発生したときに実行されます。 このワークフローは、CIテストをパスすればMaven Central Repositoryにパッケージを公開します。 releaseイベントに関する詳しい情� �については「ワークフローを起動するイベント」を参照してく� さい。

build.gradleファイルのpublishingブロックには、パッケージリポジトリを指す新しいMavenリポジトリを定義できます。 たとえば、OSSRHホスティングプロジェクトを通じてMaven Central Repositoryにデプロイしていたなら、build.gradle”OSSRH"という名前でリポジトリを指定できます。

groovy
plugins {
  ...
  id 'maven-publish'
}

publishing {
  ...

  repositories {
    maven {
      name = "OSSRH"
      url = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
      credentials {
        username = System.getenv("MAVEN_USERNAME")
        password = System.getenv("MAVEN_PASSWORD")
      }
    }
  }
}

この設定で、gradle publishコマンドの実行によってパッケージをMaven Central Repositoryに公開するワークフローを作成できます。 デプロイのステップでは、ユーザ名とパスワードのための環境変数か、Mavenリポジトリの認証に使うトークンを環境変数に設定する必要があります。 詳しい情� �については、「暗号化されたシークレットの作成と利用」を参照してく� さい。

YAML
# このワークフローはGitHubによって認定されていないアクションを使用します。
# それらはサードパーティによって提供され、
# 別個の利用規約、プライバシーポリシー、
# サポートドキュメンテーションが適用されます。

name: Publish package to the Maven Central Repository
on:
  release:
    types: [created]
jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up Java
        uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'adopt'
      - name: Validate Gradle wrapper
        uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
      - name: Publish package
        uses: gradle/gradle-build-action@0d13054264b0bb894ded474f08ebb30921341cee
        with:
          arguments: publish
        env:
          MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
          MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}

このワークフローは以下のステップを実行します。

  1. プロジェクトのリポジトリのコピーをチェックアウトします。

  2. Java JDKをセットアップします。

  3. リポジトリ内にあるすべてのGradle Wrapper JARファイルのチェックサ� を検証します。

  4. Runs the gradle/gradle-build-action action with the publish argument to publish to the OSSRH Maven repository. 環境変数のMAVEN_USERNAMEOSSRH_USERNAMEシークレットの内容で、環境変数のMAVEN_PASSWORDOSSRH_TOKENシークレットの内容で設定されます。

    ワークフロー中でのシークレットの利用に関する詳しい情� �については「暗号化されたシークレットの作成と利用」を参照してく� さい。

GitHub Packagesへのパッケージの公開

新しいリリースを作成するたびに、パッケージを公開するワークフローを起動できます。 以下の例でのワークフローは、createdという種類でreleaseイベントが発生したときに実行されます。 このワークフローは、CIテストをパスすればGitHub Packagesにパッケージを公開します。 releaseイベントに関する詳しい情� �については「ワークフローを起動するイベント」を参照してく� さい。

build.gradleのpublishingブロックには、GitHub Packagesを指す新しいMavenリポジトリを定義できます。 そのリポジトリの設定では、CIワークフローの実行で設定された環境変数を活用することもできます。 環境変数のGITHUB_ACTORはユーザ名として利用でき、環境変数のGITHUB_TOKENにはGITHUB_TOKENシークレットを設定できます。

ワークフロー内のジョブが開始されるたびに、GITHUB_TOKENはそのリポジトリのアクセストークンに設定されます。 これは、ワークフローが実行されるリポジトリ内でパッケージに対する読み取り及び書き込み権限を持っています。 詳しい情� �については「GITHUB_TOKENでの認証を参照してく� さい。

For example, if your organization is named "octocat" and your repository is named "hello-world", then the GitHub Packages configuration in build.gradle would look similar to the below example.

groovy
plugins {
  ...
  id 'maven-publish'
}

publishing {
  ...

  repositories {
    maven {
      name = "GitHubPackages"
      url = "https://maven.pkg.github.com/octocat/hello-world"
      credentials {
        username = System.getenv("GITHUB_ACTOR")
        password = System.getenv("GITHUB_TOKEN")
      }
    }
  }
}

With this configuration, you can create a workflow that publishes your package to GitHub Packages by running the gradle publish command.

YAML
# このワークフローはGitHubによって認定されていないアクションを使用します。
# それらはサードパーティによって提供され、
# 別個の利用規約、プライバシーポリシー、
# サポートドキュメンテーションが適用されます。

name: Publish package to GitHub Packages
on:
  release:
    types: [created]
jobs:
  publish:
    runs-on: ubuntu-latest 
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'adopt'
      - name: Validate Gradle wrapper
        uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
      - name: Publish package
        uses: gradle/gradle-build-action@0d13054264b0bb894ded474f08ebb30921341cee
        with:
          arguments: publish
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

このワークフローは以下のステップを実行します。

  1. プロジェクトのリポジトリのコピーをチェックアウトします。

  2. Java JDKをセットアップします。

  3. リポジトリ内にあるすべてのGradle Wrapper JARファイルのチェックサ� を検証します。

  4. Runs the gradle/gradle-build-action action with the publish argument to publish to GitHub Packages. 環境変数GITHUB_TOKENには、GITHUB_TOKENシークレットの内容が設定されます。

    ワークフロー中でのシークレットの利用に関する詳しい情� �については「暗号化されたシークレットの作成と利用」を参照してく� さい。

Maven Central RepositoryとGitHub Packagesへのパッケージの公開

build.gradle ファイルでそれぞれについて設定すれば、Maven Central RepositoryとGitHub Packagesの両方にパッケージを公開できます。

build.gradleファイルに、GitHubリポジトリとMaven Central Repositoryプロバイダの双方に対するリポジトリを確実に含めてく� さい。

たとえば、OSSRHホスティングプロジェクトを通じてMaven Central Repositoryにデプロイしていたなら、nameOSSRH に設定して配布管理リポジトリでそのことを指定できます。 GitHub Packagesにデプロイするなら、nameGitHubPackagesに設定して配布管理リポジトリでそのことを指定できます。

If your organization is named "octocat" and your repository is named "hello-world", then the configuration in build.gradle would look similar to the below example.

groovy
plugins {
  ...
  id 'maven-publish'
}

publishing {
  ...

  repositories {
    maven {
      name = "OSSRH"
      url = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
      credentials {
        username = System.getenv("MAVEN_USERNAME")
        password = System.getenv("MAVEN_PASSWORD")
      }
    }
    maven {
      name = "GitHubPackages"
      url = "https://maven.pkg.github.com/octocat/hello-world"
      credentials {
        username = System.getenv("GITHUB_ACTOR")
        password = System.getenv("GITHUB_TOKEN")
      }
    }
  }
}

この設定で、gradle publishコマンドの実行によってパッケージをMaven Central RepositoryとGitHub Packagesの両方に公開するワークフローを作成できます。

YAML
# このワークフローはGitHubによって認定されていないアクションを使用します。
# それらはサードパーティによって提供され、
# 別個の利用規約、プライバシーポリシー、
# サポートドキュメンテーションが適用されます。

name: Publish package to the Maven Central Repository and GitHub Packages
on:
  release:
    types: [created]
jobs:
  publish:
    runs-on: ubuntu-latest 
    steps:
      - uses: actions/checkout@v2
      - name: Set up Java
        uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'adopt'
      - name: Validate Gradle wrapper
        uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
      - name: Publish package
        uses: gradle/gradle-build-action@0d13054264b0bb894ded474f08ebb30921341cee
        with:
          arguments: publish
        env: 
          MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
          MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

このワークフローは以下のステップを実行します。

  1. プロジェクトのリポジトリのコピーをチェックアウトします。

  2. Java JDKをセットアップします。

  3. リポジトリ内にあるすべてのGradle Wrapper JARファイルのチェックサ� を検証します。

  4. Runs the gradle/gradle-build-action action with the publish argument to publish to the OSSRH Maven repository and GitHub Packages. 環境変数のMAVEN_USERNAMEOSSRH_USERNAMEシークレットの内容で、環境変数のMAVEN_PASSWORDOSSRH_TOKENシークレットの内容で設定されます。 環境変数GITHUB_TOKENには、GITHUB_TOKENシークレットの内容が設定されます。

    ワークフロー中でのシークレットの利用に関する詳しい情� �については「暗号化されたシークレットの作成と利用」を参照してく� さい。