すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Knative での GitHub イベントの使用

最終更新日:Apr 17, 2025

Knative で GitHub イベントソースを作成して、pushpull_requestissue_comment などの GitHub Webhook イベントをキャプチャし、それらをリアルタイムで CloudEvents 準拠のイベントストリームに変換できます。 このアプローチにより、継続的インテグレーションと継続的デリバリー ( CI/CD ) パイプライン、データ同期、自動テストなどのシナリオ向けのイベント駆動型アプリケーションを構築できます。

前提条件

手順 1:GitHub トークンを作成する

  1. GitHub API を呼び出すためのパーソナルアクセストークンを作成します。

    詳細については、「パーソナルアクセストークン」をご参照ください。

    次の図は、GitHubSource Sample という名前のトークンを作成する方法を示しています。

    image.png

    创建github token

    • カスタムトークン名を入力します。

    • パブリックリポジトリからイベントをトリガーし、これらのリポジトリの Webhook を作成するには、repo:public_repoadmin:repo_hook を選択します。

  2. 以下の方法を使用して、ランダムな文字列を secretToken として生成します。

    head -c 8 /dev/urandom | base64
  3. githubsecret.yaml ファイルを更新します。

    生成されたトークンが personal_access_token_value の場合は、secretToken フィールドを設定する必要があります。例:

    apiVersion: v1
    kind: Secret
    metadata:
      name: githubsecret
    type: Opaque
    stringData:
      accessToken: GitHubSourceSample
      secretToken: rVzY0DQ5AM8=
    apiVersion: v1
    kind: Secret
    metadata:
      name: githubsecret
    type: Opaque
    stringData:
      accessToken: personal_access_token_value
      secretToken: asdfasfdsaf
  4. 次のコマンドを実行して、GitHub トークンを作成します。

    kubectl apply -f githubsecret.yaml --namespace default

手順 2:GitHub イベントソースを作成する

GitHub によって生成されたイベントを受信するために、GitHub イベントソースを作成できます。

  1. github-source.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。

    apiVersion: sources.eventing.knative.dev/v1alpha1
    kind: GitHubSource
    metadata:
      name: githubsourcesample
    spec:
      eventTypes:
        - pull_request
      ownerAndRepository: <YOUR USER>/<YOUR REPO> # <YOUR USER> を GitHub ユーザー名に、<YOUR REPO> を GitHub リポジトリ名に置き換えます。
      accessToken:
        secretKeyRef:
          name: githubsecret
          key: accessToken
      secretToken:
        secretKeyRef:
          name: githubsecret
          key: secretToken
      sink:
        apiVersion: serving.knative.dev/v1alpha1
        kind: Service
        name: github-event-display
  2. 次のコマンドを実行して、デフォルトの名前空間に GitHub イベントソースを作成します。

    kubectl --namespace default apply -f github-source.yaml

結果の確認

  1. GitHub リポジトリで、[設定] > [Webhook] を選択し、確認済みのフック URL を確認します。

    説明

    ドメイン名には、インターネットコンテンツプロバイダー ( ICP ) 番号が必要です。

  2. GitHub リポジトリで次のコマンドを実行して pull request を作成します。 これによりイベントがトリガーされます。

    kubectl --namespace default get pods
    kubectl --namespace default logs github-event-display-XXXX user-container

    Knative Eventing では、イベントの詳細を表示できます。

    2018/11/08 18:25:34 Message Dumper received a message: POST / HTTP/1.1
    Host: github-event-display.knative-demo.svc.cluster.local
    Accept-Encoding: gzip
    Ce-Cloudeventsversion: 0.1
    Ce-Eventid: a8d4cf20-e383-11e8-8069-46e3c8ad****
    Ce-Eventtime: 2018-11-08T18:25:32.819548012Z
    Ce-Eventtype: dev.knative.source.github.pull_request
    Ce-Source: https://github.com/someuser/somerepo/pull/1
    Content-Length: 21060
    Content-Type: application/json
    User-Agent: Go-http-client/1.1
    X-B3-Parentspanid: b2e514c3dbe94c03
    X-B3-Sampled: 1
    X-B3-Spanid: c85e346d89c8be4e
    X-B3-Traceid: abf6292d458fb8e7
    X-Envoy-Expected-Rq-Timeout-Ms: 60000
    X-Envoy-Internal: true
    X-Forwarded-For: 12*.*.*.*, 12*.*.*.*
    X-Forwarded-Proto: http
    X-Request-Id: 8a2201af-5075-9447-b593-ec3a243a****
    
    {"action":"opened","number":1,"pull_request": ...}

参照

EventBridge イベントソースを介してイベントをトリガーすることもできます。詳細については、「Knative でイベント駆動型アーキテクチャに EventBridge を使用する」をご参照ください。