3.3. GitLab での Pipelines as Code の使用
組織またはプロジェクトが優先プラットフォームとして GitLab を使用する場合は、GitLab の Webhook を使用してリポジトリーの Pipelines as Code を使用できます。
前提条件
- Pipelines as Code がクラスターにインストールされている。
承認には、GitLab のプロジェクトまたは組織のマネージャーとしてパーソナルアクセストークンを生成します。
注記-
tkn pac
CLI を使用して Webhook を設定する必要がある場合は、admin:repo_hook
スコープをトークンに追加します。 - 特定のプロジェクトを対象とするトークンを使用しても、フォークされたリポジトリーから送信されたマージリクエスト (MR) に API でのアクセスはできません。このような場合、Pipelines as Code はパイプラインの結果を MR のコメントとして表示します。
-
手順
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 GitLab プロジェクトで、以下の手順を実行します。
- 左側のサイドバーを使用して Settings -> Webhooks に移動します。
- URL を Pipelines as Code コントローラーのパブリック URL に設定します。
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 のイベントを選択します。
- Save Changes をクリックします。
OpenShift クラスターで、個人アクセストークンおよび Webhook シークレットを使用して
Secret
オブジェクトを作成します。oc -n target-namespace create secret generic gitlab-webhook-config \ --from-literal provider.token="<GITLAB_PERSONAL_ACCESS_TOKEN>" \ --from-literal webhook.secret="<WEBHOOK_SECRET>"
$ oc -n target-namespace create secret generic gitlab-webhook-config \ --from-literal provider.token="<GITLAB_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 - 1
- GitLab.com ではなく GitLab のプライベートインスタンスを使用している場合は、このフィールドのコメントを解除して、GitLab API の URL に設定します。GitLab API はリポジトリーと同じホストです。たとえば、リポジトリーが
https://gitlab.example.com/owner/repo
の場合、API URL はhttps://gitlab.example.com/
です。
注記-
Pipelines as Code は、OpenShift
Secret
オブジェクトとRepository
CR が同じ namespace にあることを前提としています。
オプション: 既存の
Repository
CR の場合、複数の GitLab Webhook シークレットを追加するか、削除されたシークレットの代わりを提供します。tkn pac
CLI ツールを使用して Webhook を追加します。例:
tkn pac
CLI を使用した Webhook の追加tkn 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 の場合は、パーソナルアクセストークンを更新します。tkn pac
CLI ツールを使用してパーソナルアクセストークンを更新します。例:
tkn pac
CLI を使用したパーソナルアクセストークンの更新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 を変更してパーソナルアクセストークンを更新します。Repository
CR でシークレットの名前を見つけます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc patch
コマンドを使用して、$target_namespace
namespace の$NEW_TOKEN
の値を更新します。oc -n $target_namespace patch secret gitlab-webhook-config -p "{\"data\": {\"provider.token\": \"$(echo -n $NEW_TOKEN|base64 -w0)\"}}"
$ oc -n $target_namespace patch secret gitlab-webhook-config -p "{\"data\": {\"provider.token\": \"$(echo -n $NEW_TOKEN|base64 -w0)\"}}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow