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

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

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

GitHub ActionsはGitHub Free、GitHub Pro、GitHub Team、GitHub Enterprise Cloud、GitHub Oneで利用できます。 GitHub Actions is not available for private repositories owned by accounts using legacy per-repository plans. 詳しい情報については「GitHubの製品」を参照してください。

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

はじめに

This guide shows you how to create a workflow that publishes Java packages to GitHub Packages and the Maven Central Repository. 1つのワークフローで、パッケージを1つのリポジトリあるいは複数のリポジトリに公開できます。

必要な環境

ワークフローファイルと設定オプションに関する基本的な理解をしておくことをおすすめします。 詳細は「ワークフローの設定」を参照してください。

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

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

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

pom.xmlファイル中のgroupId及びartifactIdフィールドは、レジストリがパッケージをレジストリにリンクするために利用するパッケージのユニークな識別子を作成します。 詳しい情報については、Apache MavenのドキュメンテーションのGuide to uploading artifacts to the Central Repositoryを参照してください。

pom.xmlファイルには、Mavenがパッケージをデプロイする配布管理リポジトリの設定も含まれています。 各リポジトリは、名前とデプロイメントURLを持たなければなりません。 これらのリポジトリに対する認証は、Mavenを実行するユーザーのホームディレクトリ内の.m2/settings.xmlファイルに設定できます。

setup-javaアクションを使って、デプロイメントリポジトリを認証と合わせて設定できます。 詳しい情報についてはsetup-javaを参照してください。

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

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

このワークフロー内では、setup-javaアクションを利用できます。 このアクションは、指定されたバージョンのJDKをPATHにインストールしますが、パッケージの公開のためのMavenのsettings.xmlも設定します。 デフォルトでは、設定ファイルはGitHub Packagesに対して設定されますが、Maven Central Repositoryなどの他のパッケージレジストリにデプロイするようにも設定できます。 pom.xmlに設定済みの配布管理リポジトリが酢デイあるなら、setup-javaアクションの呼び出しの際にそのidを指定できます。

For example, if you were deploying to the Maven Central Repository through the OSSRH hosting project, your pom.xml could specify a distribution management repository with the id of ossrh.

<project ...>
  ...
  <distributionManagement>
    <repository>
      <id>ossrh</id>
      <name>Central Repository OSSRH</name>
      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
    </repository>
  </distributionManagement>
</project>

この設定で、リポジトリ管理のidsetup-javaアクションに指定してやることで、パッケージをMaven Central Repositoryに公開するワークフローを作成できます。 リポジトリの認証のために、ユーザ名とパスワードを含む環境変数を提供する必要もあります。

デプロイのステップでは、リポジトリに認証してもらうユーザ名と、認証のためのパスワードあるいはトークンで設定したシークレットを環境変数に設定する必要があります。 詳しい情報については、「暗号化されたシークレットの作成と利用」を参照してください。

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 Maven Central Repository
        uses: actions/setup-java@v1
        with:
          java-version: 1.8
          server-id: ossrh
          server-username: MAVEN_USERNAME
          server-password: MAVEN_PASSWORD
      - name: Publish package
        run: mvn -B deploy
        env:
          MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
          MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}

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

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

  2. Java JDKをセットアップし、環境変数のMAVEN_USERNAMEMAVEN_PASSWORDを使ってossrhリポジトリに対する認証を追加するためにMavenのsettings.xmlファイルも設定します。

  3. Runs the mvn -B deploy command to publish to the ossrh repository. The MAVEN_USERNAME environment variable will be set with the contents of your OSSRH_USERNAME secret, and the MAVEN_PASSWORD environment variable will be set with the contents of your OSSRH_TOKEN secret.

    For more information about using secrets in your workflow, see "Creating and using encrypted secrets."

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

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

このワークフロー内では、setup-javaアクションを利用できます。 このアクションは、指定されたバージョンのJDKをPATHにインストールし、GitHub Packagesにパッケージを公開するためにMavenのsettings.xmlもセットアップします。 生成されたsettings.xmlは、環境変数のGITHUB_ACTORをユーザ名、GITHUB_TOKENをパスワードとして使い、githubidでサーバーの認証を定義します。

GITHUB_TOKENは、デフォルトでリポジトリ中に存在し、ワークフローが実行されるリポジトリ中のパッケージには読み書きの権限があります。 詳しい情報については「GITHUB_TOKENでの認証」を参照してください。

Mavenベースのプロジェクトでは、GitHub Packagesのエンドポイントを指すgithubidpom.xmlファイル中に配布リポジトリを作成することによって、これらの設定を利用できます。

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

<project ...>
  ...
  <distributionManagement>
    <repository>
      <id>github</id>
      <name>GitHub Packages</name>
      <url>https://maven.pkg.github.com/octocat/hello-world</url>
    </repository>
  </distributionManagement>
</project>

この設定で、自動的に生成されたsettings.xmlを利用してGitHub Packagesにパッケージを公開するワークフローを作成できます。

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: mvn -B deploy
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

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

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

  2. Java JDKをセットアップし、自動的にMavenのsettings.xmlファイルを設定して環境変数のGITHUB_TOKENを使うようにgithub Mavenリポジトリの認証を追加します。

  3. Runs the mvn -B deploy command to publish to GitHub Packages. The GITHUB_TOKEN environment variable will be set with the contents of the GITHUB_TOKEN secret.

    For more information about using secrets in your workflow, see "Creating and using encrypted secrets."

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

setup-javaアクションをそれぞれのレジストリに対して利用すれば、Maven Central RepositoryとGitHub Packagesの両方にパッケージを公開できます。

pom.xmlファイルに、GitHubリポジトリとMaven Central Repositoryプロバイダの双方に対する配布管理リポジトリを確実に含めてください。 For example, if you deploy to the Central Repository through the OSSRH hosting project, you might want to specify it in a distribution management repository with the id set to ossrh, and you might want to specify GitHub Packages in a distribution management repository with the id set to 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 for publishing to Maven Central Repository
        uses: actions/setup-java@v1
        with:
          java-version: 1.8
          server-id: ossrh
          server-username: MAVEN_USERNAME
          server-password: MAVEN_PASSWORD
      - name: Publish to the Maven Central Repository
        run: mvn -B deploy
        env:
          MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
          MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
      - name: Set up Java for publishing to GitHub Packages
        uses: actions/setup-java@v1
        with:
          java-version: 1.8
      - name: Publish to GitHub Packages
        run: mvn -B deploy
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

このワークフローは、setup-javaアクションを2回呼びます。 実行される度に、setup-javaアクションはMavenのsettings.xmlをパッケージの公開のために上書きします。 リポジトリの認証については、settings.xmlファイルは配布管理リポジトリのid、及びユーザ名とパスワードを参照します。

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

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

  2. 1回目のsetup-javaの呼び出しを行います。 これはMavenのsettings.xmlファイルをossrhに対して設定し、認証のオプションを次のステップで定義される環境変数に設定します。

  3. Runs the mvn -B deploy command to publish to the ossrh repository. The MAVEN_USERNAME environment variable will be set with the contents of your OSSRH_USERNAME secret, and the MAVEN_PASSWORD environment variable will be set with the contents of your OSSRH_TOKEN secret.

  4. 2回目のsetup-javaの呼び出しを行います。 Mavenのsettings.xmlファイルをGitHub Packagesに対して自動的に設定します。

  5. Runs the mvn -B deploy command to publish to GitHub Packages. The GITHUB_TOKEN environment variable will be set with the contents of the GITHUB_TOKEN secret.

    For more information about using secrets in your workflow, see "Creating and using encrypted secrets."

担当者にお尋ねください

探しているものが見つからなかったでしょうか?

弊社にお問い合わせください