3.2. GitHub Webhook での Pipelines as Code の使用
GitHub アプリケーションを作成できない場合は、リポジトリーで GitHub Webhook で Pipelines as Code を使用します。ただし、GitHub Webhook で Pipelines as Code を使用しても、GitHub Check Runs API にはアクセスできません。タスクのステータスはプル要求のコメントとして追加され、Checks タブでは利用できません。
GitHub Webhook を使用した Pipelines as Code は、/retest
や /ok-to-test
などの GitOps コメントには対応していません。継続的インテグレーション (CI) を再開するには、リポジトリーへの新しいコミットを作成します。たとえば、変更を加えずに新しいコミットを作成するには、次のコマンドを使用できます。
git --amend -a --no-edit && git push --force-with-lease <origin> <branchname>
$ git --amend -a --no-edit && git push --force-with-lease <origin> <branchname>
前提条件
- Pipelines as Code がクラスターにインストールされている。
承認用に GitHub で個人アクセストークンを作成する。
セキュアで粒度の細かいトークンを生成するには、そのスコープを特定のリポジトリーに制限し、以下のパーミッションを付与します。
Expand 表3.1 粒度の細かいトークンのパーミッション 名前 アクセス 管理
Read-only
メタデータ
Read-only
Content
Read-only
コミットステータス
読み取りおよび書き込み
プルリクエスト
読み取りおよび書き込み
Webhook
読み取りおよび書き込み
クラシックトークンを使用するには、パブリックリポジトリーのスコープを
public_repo
に設定し、プライベートリポジトリーのスコープをrepo
に設定します。さらに、トークンの有効期限を短くして、別の場所でトークンを書き留めておきます。注記tkn pac
CLI を使用して Webhook を設定する必要がある場合は、admin:repo_hook
スコープを追加します。
手順
Webhook を設定し、
リポジトリー
カスタムリソース (CR) を作成します。tkn pac
CLI ツールを使用して webhook を設定し、リポジトリー
CR を 自動的に 作成するには、次のコマンドを使用します。tkn pac create repo
$ tkn pac create repo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 対話型出力の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Webhook を設定して
Repository
CR を 手動 で作成するには、以下の手順を実行します。OpenShift クラスターで、Pipelines as Code コントローラーの公開 URL を抽出します。
echo https://$(oc get route -n openshift-pipelines pipelines-as-code-controller -o jsonpath='{.spec.host}')
$ echo https://$(oc get route -n openshift-pipelines pipelines-as-code-controller -o jsonpath='{.spec.host}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow GitHub リポジトリーまたは組織で、以下の手順を実行します。
- Settings -> Webhooks に移動し、Add webhook をクリックします。
- Payload URL を Pipelines as Code コントローラーのパブリック URL に設定します。
- コンテンツタイプを application/json として選択します。
Webhook シークレットを追加し、別の場所に書き留めます。
openssl
がローカルマシンにインストールされた状態で、ランダムなシークレットを生成します。openssl rand -hex 20
$ openssl rand -hex 20
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Let me select individual events をクリックし、Commit comments、Issue comments、Pull request、および Pushes のイベントを選択します。
- Add webhook をクリックします。
OpenShift クラスターで、個人アクセストークンおよび Webhook シークレットを使用して
Secret
オブジェクトを作成します。oc -n target-namespace create secret generic github-webhook-config \ --from-literal provider.token="<GITHUB_PERSONAL_ACCESS_TOKEN>" \ --from-literal webhook.secret="<WEBHOOK_SECRET>"
$ oc -n target-namespace create secret generic github-webhook-config \ --from-literal provider.token="<GITHUB_PERSONAL_ACCESS_TOKEN>" \ --from-literal webhook.secret="<WEBHOOK_SECRET>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Repository
CR を作成します。例:
Repository
CRCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記Pipelines as Code は、OpenShift
Secret
オブジェクトとRepository
CR が同じ namespace にあることを前提としています。
オプション: 既存の
Repository
CR の場合、複数の GitHub Webhook シークレットを追加するか、削除されたシークレットの代わりを提供します。tkn pac
CLI ツールを使用して Webhook を追加します。例:
tkn pac
CLI を使用した追加の Webhooktkn pac webhook add -n repo-pipelines
$ tkn pac webhook add -n repo-pipelines
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 対話型出力の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
既存の OpenShift
Secret
オブジェクトのwebhook.secret
キーを更新します。
オプション: 既存の
Repository
CR の場合は、Personal Access Token を更新します。tkn pac
CLI ツールを使用して Personal Access Token を更新します。例:
tkn pac
CLI を使用した Personal Access Token の更新tkn pac webhook update-token -n repo-pipelines
$ tkn pac webhook update-token -n repo-pipelines
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 対話型出力の例
? Please enter your personal access token: **************************************** 🔑 Secret owner-repo has been updated with new personal access token in the repo-pipelines namespace.
? Please enter your personal access token: **************************************** 🔑 Secret owner-repo has been updated with new personal access token in the repo-pipelines namespace.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow または、
Repository
CR を変更して Personal Access Token を更新します。Repository
CR でシークレットの名前を見つけます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc patch
コマンドを使用して、$target_namespace
namespace の$NEW_TOKEN
の値を更新します。oc -n $target_namespace patch secret github-webhook-config -p "{\"data\": {\"provider.token\": \"$(echo -n $NEW_TOKEN|base64 -w0)\"}}"
$ oc -n $target_namespace patch secret github-webhook-config -p "{\"data\": {\"provider.token\": \"$(echo -n $NEW_TOKEN|base64 -w0)\"}}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow