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

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

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

GitHub ActionsはGitHub Free、GitHub Pro、GitHub FreeのOrganization、GitHub Team、GitHub Enterprise Cloud、GitHub Oneで利用できます。 GitHub Actionsは、レガシーのリポジトリごとのプランを使っているアカウントが所有しているプライベートリポジトリでは利用できません。 For more information, see "GitHub's products."

ここには以下の内容があります:

Did this doc help you?

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

OR, learn how to contribute.

GitHub Actions の支払いを管理する GitHubは、macOSランナーのホストにMacStadiumを使用しています。

はじめに

このガイドは、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"という名前でリポジトリを指定できます。

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リポジトリの認証に使うトークンを環境変数に設定する必要があります。 詳しい情報については、「暗号化されたシークレットの作成と利用」を参照してください。

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@v1
        with:
          java-version: 1.8
      - name: Publish package
        run: gradle publish
        env:
          MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
          MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}

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

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

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

  3. gradle publishコマンドを実行して、OSSRH Mavenリポジトリに公開してください。 環境変数の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での認証」を参照してください。

たとえば、Organizationの名前が"octocat"でリポジトリの名前が"hello-world"なら、build.gradle中のGitHub Packagesの設定は以下の例のようになるでしょう。

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")
      }
    }
  }
}

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

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@v1
        with:
          java-version: 1.8
      - name: Publish package
        run: gradle publish
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

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

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

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

  3. GitHub Packagesに公開するためにgradle publishコマンドを実行してください。 環境変数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に設定して配布管理リポジトリでそのことを指定できます。

Organizationの名前が"octocat"でリポジトリの名前が"hello-world"なら、build.gradle中のGitHub Packagesの設定は以下の例のようになるでしょう。

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の両方に公開するワークフローを作成できます。

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@v1
        with:
          java-version: 1.8
      - name: Publish to the Maven Central Repository
        run: gradle publish
        env:
          MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
          MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

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

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

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

  3. OSSRH MavenリポジトリとGitHub Packagesに公開するために gradle publishコマンドを実行してください。 環境変数のMAVEN_USERNAMEOSSRH_USERNAMEシークレットの内容で、環境変数のMAVEN_PASSWORDOSSRH_TOKENシークレットの内容で設定されます。 環境変数GITHUB_TOKENには、GITHUB_TOKENシークレットの内容が設定されます。

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

Did this doc help you?

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

OR, learn how to contribute.