第6章 ビルドトリガー
{product-title} の Dockerfile からコンテナーイメージのビルドを自動化するには、ベアメタルマシンと仮想マシン上でビルダーを設定できます。コード変更が発生した際にビルドを自動的に開始するようにビルドトリガーを設定したり、必要に応じて手動でビルドを開始したりできます。
6.1. ビルドトリガーの作成 リンクのコピーリンクがクリップボードにコピーされました!
Git リポジトリーからコンテナーイメージのビルドを自動化するには、{product-title}でカスタム Git ビルドトリガーを作成できます。ビルドトリガーは、Git リポジトリーにコードをプッシュすると、自動的にイメージをビルドしてプッシュします。
以下の手順は、GitHub、GitLab、または Bitbucket を使用して ビルドトリガー を作成する場合にも適用できますが、config.yaml ファイルでこれらのサービスの認証情報を設定する必要があります。
- Github を使用して ビルドトリガー を作成する場合は、OAuth アプリケーションを作成し、Red Hat Quay で使用する Github を設定する必要があります。詳細は、「OAuth アプリケーション Github の作成」を参照してください。
前提条件
手順
- Red Hat Quay レジストリーにログインします。
- ナビゲーションペインで、Repositories をクリックします。
- Create Repository をクリックします。
- Builds タブをクリックします。
- Builds ページで、Create Build Trigger をクリックします。
- Github、Bitbucket、Gitlab などの目的のプラットフォームを選択するか、カスタム Git リポジトリーを使用します。この例では、Custom Git Repository Push をクリックします。
-
カスタム Git リポジトリー名を入力します (例:
git@github.com:<username>/<repo>.git)。Next をクリックします。 プロンプトが表示されたら、次のオプションのいずれかまたは両方を選択して、タグ付けオプションを設定します。
- Tag manifest with the branch or tag name。このオプションを選択すると、ビルドされたマニフェストにブランチの名前または git コミットのタグがタグ付けされます。
Add
latesttag if on default branch。このオプションを選択すると、リポジトリーのデフォルトブランチでビルドが行われた場合に、ビルドされたマニフェストに latest がタグ付けされます。オプションで、カスタムのタグ付けテンプレートを追加できます。ここに入力できるタグテンプレートは複数あります。短い SHA ID、タイムスタンプ、作成者名、コミッター、コミットからのブランチ名をタグとして使用することもできます。詳細は、「ビルドトリガーのタグ命名」を参照してください。
タグ付けを設定したら、Next をクリックします。
- プロンプトが表示されたら、トリガーの呼び出し時にビルドする Dockerfile の場所を選択します。Dockerfile が git リポジトリーのルートにあり、Dockerfile という名前が付けられている場合は、Dockerfile パスとして /Dockerfile を入力します。Next をクリックします。
-
プロンプトが表示されたら、Docker ビルドのコンテキストを選択します。Dockerfile が Git リポジトリーのルートにある場合は、ビルドコンテキストディレクトリーとして
/を入力します。Next をクリックします。 - オプション: 任意のロボットアカウントを選択します。これにより、ビルドプロセス中にプライベートのベースイメージをプルできます。プライベートベースイメージが使用されていないことを把握している場合は、この手順を省略できます。
- Next をクリックします。検証の警告がないか確認します。必要に応じて、Finish をクリックする前に問題を修正します。
トリガーが正常にアクティベートされたという警告が表示されます。このトリガーを使用するには、以下のアクションが必要になることに注意してください。
- 以下の公開鍵に git リポジトリーへの読み取りアクセス権を与える必要があります。
ビルドをトリガーするには、リポジトリーを
POSTに設定する必要があります。SSH 公開鍵を保存し、Return to <organization_name>/<repository_name> をクリックします。リポジトリーの Builds ページにリダイレクトされます。
Builds ページに、ビルドトリガー が表示されます。以下に例を示します。
カスタム Git トリガーを作成した後、追加の手順が必要になります。「カスタム Git トリガーのセットアップ」に進みます。
Github、Gitlab、または Bitbucket の ビルドトリガー をセットアップする場合は、「ビルドの手動トリガー」に進んでください。
6.1.1. カスタム Git トリガーのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
{product-title} でカスタム Git ビルドトリガーの設定を完了するには、SSH 公開鍵への読み取りアクセス権を付与し、Webhook エンドポイントを設定する必要があります。これらの手順を実行することで、コードをプッシュした際に Git リポジトリーでビルドが自動的にトリガーされるようになります。
これらの手順は、カスタム Git トリガー を使用している場合にのみ必要です。
6.1.1.1. ビルドトリガーの認証情報を取得する リンクのコピーリンクがクリップボードにコピーされました!
カスタム Git トリガーを設定するには、{product-title}のユーザーインターフェイスから SSH 公開鍵と Webhook エンドポイント URL を取得できます。これらの認証情報は、リポジトリーの ビルド ページで確認できます。
前提条件
- カスタム Git トリガー を作成している。
手順
- リポジトリーの Builds ページで、カスタム Git トリガー のメニューケバブをクリックします。
- View Credentials をクリックします。
SSH 公開鍵と Webhook エンドポイント URL を保存します。
鍵と URL は、Settings または 歯車 アイコンから View Credentials を選択することで利用できます。
6.1.1.2. SSH 公開鍵へのアクセス リンクのコピーリンクがクリップボードにコピーされました!
{product-title} の SSH 公開鍵アクセスにより、ビルダーインスタンスはカスタムビルドトリガー用の Git リポジトリーをクローンできます。{product-title} が生成する SSH 公開鍵を Git サーバーの設定にインストールします。インストール方法は、authorized_keys ファイルに追加するか、Deploy Keys を使用するかのいずれかです。
Git サーバーの設定によっては、Quay がカスタム Git トリガー用に生成する SSH 公開鍵をインストールする方法が複数あります。
たとえば、Getting Git on a Server のドキュメントでは、リポジトリーの管理と SSH 経由のアクセス制御に重点を置いて、Linux ベースのマシンに Git サーバーをセットアップする方法を説明しています。この手順では、$HOME/.ssh/authorize_keys フォルダーにキーを追加するための小さなサーバーがセットアップされ、ビルダー がリポジトリーのクローンを作成するためのアクセスが提供されます。
公式にサポートされていない Git リポジトリー管理ソフトウェアの場合、通常、Deploy Keys というラベルが付いたキーを入力する場所があります。
6.1.1.3. Webhook リファレンス リンクのコピーリンクがクリップボードにコピーされました!
ウェブフックのリファレンスには、{product-title} でビルドをトリガーするために必要な JSON ペイロード形式が記載されています。ビルドを自動的に開始するには、commit、ref、default_branch フィールドを含む 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. ビルドトリガーのタグ命名 リンクのコピーリンクがクリップボードにコピーされました!
{product-title} のビルドトリガーのタグ命名機能を使用すると、SHA、ブランチ名、作成者、日付などのコミット情報を含むテンプレートを使用してカスタムタグを作成できます。これらのテンプレートを使用すると、ビルドをトリガーした Git コミットに基づいて、ビルドされたイメージに意味のある識別子を自動的にタグ付けできます。
1 つの方法として、ビルドした各イメージにタグとして割り当てる文字列を含める方法があります。または、ビルドトリガーの 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. ソースコントロールをトリガーとしたビルドのスキップ リンクのコピーリンクがクリップボードにコピーされました!
{product-title} では、コミットメッセージに [skip build] または [build skip] を追加することで、ソース管理によってトリガーされるビルドをスキップできます。これにより、新規ビルドを必要としないコミットに対して、ビルドシステムが自動的にイメージをビルドすることを防ぎます。