第6章 ビルドトリガー


ビルドトリガー は、ソースコードの変更、依存関係の更新、Webhook 呼び出しの作成 など、特定の条件が満たされたときにコンテナーイメージのビルドを開始する自動化されたメカニズムです。これらのトリガーは、イメージビルドプロセスの自動化に役立ち、手動介入なしにコンテナーイメージを常に最新の状態にします。

次のセクションでは、ビルドトリガーの作成、タグの命名規則、ソースコントロールがトリガーするビルドのスキップ方法、ビルド の開始、または ビルド の手動トリガーに関連するコンテンツを説明します。

6.1. ビルドトリガーの作成

次の手順では、カスタム Git トリガー をセットアップします。カスタム Git トリガーは、任意の Git サーバーが ビルドトリガー として機能するための一般的な方法です。カスタム Git トリガーは SSH 鍵と Webhook エンドポイントのみに依存します。カスタム Git トリガーの作成は、他のトリガーの作成と似ていますが、次の点が違います。

これらの手順をレプリケートして、Github、Gitlab、または Bitbucket を使用して ビルドトリガー を作成できますが、config.yaml ファイルでこれらのサービスの認証情報を設定する必要があります。

注記
  • Github を使用して ビルドトリガー を作成する場合は、OAuth アプリケーションを作成し、Red Hat Quay で使用する Github を設定する必要があります。詳細は、「OAuth アプリケーション Github の作成」を参照してください。

前提条件

  • Red Hat Quay on OpenShift Container Platform デプロイメントの場合、ベアメタルビルド または 仮想ビルド のいずれかに対して OpenShift Container Platform 環境を設定している。

手順

  1. Red Hat Quay レジストリーにログインします。
  2. ナビゲーションペインで、Repositories をクリックします。
  3. Create Repository をクリックします。
  4. Builds タブをクリックします。
  5. Builds ページで、Create Build Trigger をクリックします。
  6. GithubBitbucketGitlab などの目的のプラットフォームを選択するか、カスタム Git リポジトリーを使用します。この例では、Custom Git Repository Push をクリックします。
  7. カスタム Git リポジトリー名を入力します (例: git@github.com:<username>/<repo>.git)。Next をクリックします。
  8. プロンプトが表示されたら、次のオプションのいずれかまたは両方を選択して、タグ付けオプションを設定します。

    • Tag manifest with the branch or tag name。このオプションを選択すると、ビルドされたマニフェストにブランチの名前または git コミットのタグがタグ付けされます。
    • Add latest tag if on default branch。このオプションを選択すると、リポジトリーのデフォルトブランチでビルドが行われた場合に、ビルドされたマニフェストに latest がタグ付けされます。

      オプションで、カスタムのタグ付けテンプレートを追加できます。ここに入力できるタグテンプレートは複数あります。短い SHA ID、タイムスタンプ、作成者名、コミッター、コミットからのブランチ名をタグとして使用することもできます。詳細は、「ビルドトリガーのタグ命名」を参照してください。

      タグ付けを設定したら、Next をクリックします。

  9. プロンプトが表示されたら、トリガーの呼び出し時にビルドする Dockerfile の場所を選択します。Dockerfile が git リポジトリーのルートにあり、Dockerfile という名前が付けられている場合は、Dockerfile パスとして /Dockerfile を入力します。Next をクリックします。
  10. プロンプトが表示されたら、Docker ビルドのコンテキストを選択します。Dockerfile が Git リポジトリーのルートにある場合は、ビルドコンテキストディレクトリーとして / を入力します。Next をクリックします。
  11. オプション: 任意のロボットアカウントを選択します。これにより、ビルドプロセス中にプライベートのベースイメージをプルできます。プライベートベースイメージが使用されていないことを把握している場合は、この手順を省略できます。
  12. Next をクリックします。検証の警告がないか確認します。必要に応じて、Finish をクリックする前に問題を修正します。
  13. トリガーが正常にアクティベートされたという警告が表示されます。このトリガーを使用するには、以下のアクションが必要になることに注意してください。

    • 以下の公開鍵に git リポジトリーへの読み取りアクセス権を与える必要があります。
    • ビルドをトリガーするには、リポジトリーを POST に設定する必要があります。

      SSH 公開鍵を保存し、Return to <organization_name>/<repository_name> をクリックします。リポジトリーの Builds ページにリダイレクトされます。

  14. Builds ページに、ビルドトリガー が表示されます。以下に例を示します。

    Example Build trigger

    カスタム Git トリガーを作成した後、追加の手順が必要になります。「カスタム Git トリガーのセットアップ」に進みます。

    Github、Gitlab、または Bitbucket の ビルドトリガー をセットアップする場合は、「ビルドの手動トリガー」に進んでください。

6.1.1. カスタム Git トリガーのセットアップ

カスタム Git トリガー を作成した後、次の 2 つの追加手順が必要です。

  1. トリガーの作成時に生成された SSH 公開鍵への読み取りアクセスを付与する必要があります。
  2. ビルドをトリガーする Red Hat Quay のエンドポイントに POST する Webhook をセットアップする必要があります。

これらの手順は、カスタム Git トリガー を使用している場合にのみ必要です。

6.1.1.1. ビルドトリガーの認証情報を取得する

SSH 公開鍵と Webhook エンドポイント URL は、Red Hat Quay UI で利用できます。

前提条件

  • カスタム Git トリガー を作成している。

手順

  1. リポジトリーの Builds ページで、カスタム Git トリガー のメニューケバブをクリックします。
  2. View Credentials をクリックします。
  3. SSH 公開鍵と Webhook エンドポイント URL を保存します。

鍵と URL は、Settings または 歯車 アイコンから View Credentials を選択することで利用できます。

リポジトリーからのタグの表示および変更

Trigger Credentials

6.1.1.1.1. SSH 公開鍵へのアクセス

Git サーバーの設定に応じて、カスタム Git トリガー用に生成する SSH 公開鍵をインストールする方法はさまざまです。

たとえば、Getting Git on a Server のドキュメントでは、リポジトリーの管理と SSH 経由のアクセス制御に重点を置いて、Linux ベースのマシンに Git サーバーをセットアップする方法を説明しています。この手順では、$HOME/.ssh/authorize_keys フォルダーにキーを追加するための小さなサーバーがセットアップされ、ビルダー がリポジトリーのクローンを作成するためのアクセスが提供されます。

公式にサポートされていない Git リポジトリー管理ソフトウェアの場合、通常、Deploy Keys というラベルが付いたキーを入力する場所があります。

6.1.1.1.2. Webhook

ビルドを自動的にトリガーするには、次の形式を使用して .json ペイロードを Webhook URL に POST する必要があります。

注記

このリクエストが有効であるためには、application/json を含む Content-Type ヘッダーが必要です。

Webhook の例

{
  "commit": "1c002dd",                                   // required
  "ref": "refs/heads/master",                            // required
  "default_branch": "master",                            // required
  "commit_info": {                                       // optional
    "url": "gitsoftware.com/repository/commits/1234567", // required
    "message": "initial commit",                         // required
    "date": "timestamp",                                 // required
    "author": {                                          // optional
      "username": "user",                                // required
      "avatar_url": "gravatar.com/user.png",             // required
      "url": "gitsoftware.com/users/user"                // required
    },
    "committer": {                                       // optional
      "username": "user",                                // required
      "avatar_url": "gravatar.com/user.png",             // required
      "url": "gitsoftware.com/users/user"                // required
    }
  }
}

これは通常、post-receive Git フック を使用して実現できますが、サーバーのセットアップによって異なります。

6.1.2. ビルドトリガーのタグ命名

Red Hat Quay ではカスタムタグを使用できます。

1 つの方法として、ビルドした各イメージにタグとして割り当てる文字列を含める方法があります。または、ビルドトリガーの Configure Tagging セクションで次のタグテンプレートを使用して、各コミットからの情報でイメージにタグ付けすることもできます。

Configure Tagging

  • ${commit}: 発行されたコミットの完全な SHA
  • ${parsed_ref.branch}: ブランチ情報 (利用可能な場合)
  • ${parsed_ref.tag}: タグ情報 (利用可能な場合)
  • ${parsed_ref.remote}: リモート名
  • ${commit_info.date}: コミットが発行された日付
  • ${commit_info.author.username}: コミットの作成者のユーザー名
  • ${commit_info.short_sha}: コミット SHA の最初の 7 文字
  • ${committer.properties.username}: コミッターのユーザー名

以上がすべてではありませんが、これらはタグ付けに最も役立つタグテンプレートです。完全なタグテンプレートスキーマは、こちらのページ を参照してください。

詳細は、Set up custom tag templates in build triggers for Red Hat Quay and Quay.io を参照してください。

6.1.3. ソースコントロールをトリガーとしたビルドのスキップ

ビルドシステムがコミットを無視するように指定するには、コミットメッセージの任意の場所に [skip build] または [build skip] というテキストを追加します。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.