Beam リリースを検証する方法

新しいリリースを実行することは、あらゆるソフトウェアプロジェクトの重要な責務です。Apache プロジェクトの文化ではさらに重要です。リリースは、プロジェクトのコミュニティにおける新しいコード/機能の主な流れです。

Beam も例外ではありません。約6週間のリリース頻度を維持し、コミュニティと協力して便利な新機能をリリースし、Beam を有用な状態に保つよう努めています。

Beam リリース候補を検証するための Java ビルドを設定する

まず、使用しているグローバルな Beam バージョンを保持する単一のプロパティを pom.xml に用意すると便利です。pom.xml に以下のようなものを記述します。

<properties>
    ...
    <beam.version>2.26.0</beam.version>
    ...
</properties>
<dependencies>
    <dependency>
        <groupId>org.apache.beam</groupId>
        <artifactId>beam-sdks-java-core</artifactId>
        <version>${beam.version}</version>
    </dependency>
    ...
</dependencies>

次に、pom.xml ファイルに新しいプロファイルを追加できます。この新しいプロファイルに、新しい Beam リリースのステージングリポジトリを持つ新しいリポジトリを追加します。Beam 2.27.0 の場合、これは https://repository.apache.org/content/repositories/orgapachebeam-1149/ でした。

        <profile>
            <id>validaterelease</id>
            <repositories>
                <repository>
                    <id>apache.beam.newrelease</id>
                    <url>${beam.release.repo}</url>
                </repository>
            </repositories>
        </profile>

pom.xmlbeam.version プロパティがあり、新しいリリースを含む新しいプロファイルがある場合は、新しいプロファイルを有効にし、新しい Beam バージョンを指定して mvn コマンドを実行できます。

mvn test -Pvalidaterelease \
         -Dbeam.version=2.27.0 \
         -Dbeam.release.repo=https://repository.apache.org/content/repositories/orgapachebeam-XXXX/

これにより、新しいリリースに対してプロジェクトがビルドされ、基本的なテストが実行されます。新しい Beam リリースに対して基本的な検証を実行できます。問題が見つかった場合は、リリースが完了する前に共有して、コミュニティが懸念に対処できるようにしてください。

Beam リリース候補を検証するための Python ビルドを設定する

Python SDK リリースの場合は、プレリリースアーティファクトのインストールを有効にすることで、Pypi から SDK をインストールできます。

まず、requirements.txt または setup.py ファイルで、現在のバージョンよりも高い Beam バージョンを許可していることを確認してください。以下のようなもので、利用可能な最新バージョンがインストールされるはずです。

apache-beam<=3.0.0

これにより、pip に、環境内に Beam のプレリリースバージョンをインストールするように要求できます。

pip install --pre apache-beam

これで、環境内の Beam バージョンが最新のリリース候補となり、テストを実行してすべてが正常に動作することを確認できます。

RC SDK に対して Prism Runner RC を検証する

検証対象の RC バージョンのタグで v2.59.0-RC1 を置き換えてください。

Python

Python で prism ランナーを検証するには、--runner=PrismRunner --prism_location=https://github.com/apache/beam/releases/tag/v2.59.0-RC1 --prism_beam_version_override=v2.59.0 を使用します。

  • runner フラグは、Beam が Prism を使用するように設定します。
  • prism_location は Prism アセットのソースを設定します。
  • prism_beam_version_override フラグは、それらのアーティファクトにラベル付けされるものを設定します。
  • アセットは最終リリースバージョンとしてパッケージ化されているため、オーバーライドが必要です。

Java

Gradle の場合は、Prism と JAMM の依存関係を build.gradle に追加します。

    implementation "org.apache.beam:beam-runners-prism-java:2.59.0"
    implementation "com.github.jbellis:jamm:0.4.0"

次に、バージョンを適宜置き換えて、以下のフラグを追加します。

`–runner=PrismRunner –prismLocation=“https://github.com/apache/beam/releases/tag/v2.59.0-RC1/" –prismVersionOverride=v2.59.0

  • runner フラグは、Beam が Prism を使用するように設定します。
  • prismLocation は Prism アセットのソース、具体的には問題のバージョンの zip ファイルを設定します。

Beam リリース候補を検証するための Go ビルドを設定する

Go SDK リリースの場合は、特定のプレリリースバージョンを要求することにより、go get を使用して Go SDK RC をフェッチできます。

たとえば、2.44.0 の最初のリリース候補を要求するには

go get -d github.com/apache/beam/sdks/v2@v2.44.0-RC1

これにより、go.mod の Beam バージョンが指定されたリリース候補になります。テストを実行してすべてが正常に動作することを確認できます。

ジョブを実行する際に、RC の一致するコンテナーを指定する必要がある場合もあります。--environment_config フラグを使用して、リリース候補のコンテナーを指定します。例:--environment_config=apache/beam_go_sdk:2.44.0rc1