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

Container Service for Kubernetes:KnativeでGitHubイベントを使用する

最終更新日:Jan 23, 2025

KnativeでGitHubイベントソースを作成して、GitHubからイベントを受け取ることができます。 このイベントソースは、継続的インテグレーションと継続的配信 (CI/CD) 、データ同期、自動テストなどのシナリオに適しています。

前提条件

ステップ1: GitHubトークンの作成

  1. GitHub APIを呼び出すための個人用アクセストークンを作成します。

    詳細については、「Personal access tokens」をご参照ください。

    次の図は、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

ステップ3: 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> # Replace <YOUR USER> with your GitHub username and <YOUR REPO> with your GitHub repository name. 
      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 github-source.yaml

結果の検証

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

    説明

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

  2. GitHubリポジトリで次のコマンドを実行し、プルリクエストを作成します。 次に、イベントがトリガされる。

    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イベントソースを使用してイベントをトリガーすることもできます。 詳細については、「EventBridgeを使用してKnativeサービスをトリガーしてイベントを消費する」をご参照ください。