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

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

最終更新日:Dec 28, 2024

Knative で GitHub イベントソースを作成して、GitHub からのイベントを受信できます。このイベントソースは、継続的インテグレーションと継続的デリバリー (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 github-source.yaml

手順 3: 結果の確認

  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 のイベントドリブン機能の使用を参照してください。