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

:EventBridgeに基づくイベント駆動CIパイプライン

最終更新日:Nov 14, 2024

EventBridgeと分散Argoワークフローに基づいて、効率的で高速かつ費用効果の高いイベント駆動型自動継続統合 (CI) パイプラインを構築して、アプリケーションの配信を大幅に簡素化および高速化できます。 このトピックでは、イベント駆動型の自動CIパイプラインを構築する方法について説明します。

前提条件

概要

イベント駆動型自動CIパイプラインは、次の2つの部分で構成されています。

  1. Gitイベントトリガー。 コードがGitリポジトリにコミットされると、イベントがトリガーされます。

  2. ビルド前のテスト。 CIパイプラインは、CIシステムがDockerイメージを構築し、イメージをイメージリポジトリにプッシュする前にテストを実行します。

イメージの構築後、ACK One GitOpsなどの連続展開 (CD) システムを使用して、新しいイメージタグをKubernetesクラスターに同期できます。

image

この例では、イベント駆動型ソリューションは、可用性、使いやすさ、セキュリティ、およびスケーラビリティの点で利点を提供するEventBridgeを利用します。 CIパイプラインは、Cloud Native Computing Foundation (CNCF) の段階的なプロジェクトであるArgo Workflowsに基づいて構築されています。 Distributed Cloud Container Platform for Kubernetes (ACK One) ワークフロークラスターは、Argoワークフローをホストします。 これにより、安定性と可観測性が向上し、O&M機能が提供され、より高いパフォーマンスと低コストでより大きなCIパイプラインを構築できます。

image
  1. ユーザーがGitリポジトリにコードをコミットします。

  2. EventBridgeは、設定されたルールに基づいてGitイベントをキャプチャし、そのイベントをACK Oneワークフロークラスターに配信してCIパイプラインの実行をトリガーします。

  3. ACK Oneは、ワークフロークラスターにCIパイプラインを作成し、Dockerイメージを構築して、イメージリポジトリにイメージをプッシュします。 GitOpsを使用して、画像の変更をACKクラスターに自動的に同期できます。

ステップ1: ACK OneワークフロークラスターでCI環境を準備する

  1. Container Registry Enterprise Editionインスタンスにアクセスし、Apsara File Storage NAS (NAS) ボリュームをワークフロークラスタにマウントするための資格情報をワークフロークラスタに作成します。 詳細については、「ワークフロークラスターでのGolangプロジェクトのCIパイプラインの作成」の「手順1および手順2」をご参照ください。

    説明

    名前空間がワークフローリソースの名前空間と同じであることを確認します。

  2. この例では、Apps Code Repoに使用されるプロジェクトはecho-serverです。 echo-serverをGitHubアカウントにフォークし、[CIパイプラインにプライベートGitリポジトリを複製する] トピックの手順に従ってWorkflowTemplateを変更します。

手順2: EventBridgeを使用してGitイベント駆動CIパイプラインを実装する

  1. カスタムイベントバスを作成します。

  2. GitHubをEventBridgeと統合します。 詳細については、「GitHubの統合」をご参照ください。

  3. (オプション) イベントルールを設定します。 この例では、次の内容を使用します。 イベントルールの設定方法の詳細については、「イベントルールの管理」をご参照ください。

    1. イベントパターン: 次の設定は、release-v1ブランチからの変更のみに基づいてパイプラインをトリガーするように構成されています。

      {
          "source": [
              "github.event"
          ],
          "data": {
              "body": {
                  "ref": [
                      "refs/heads/release-v1"
                  ]
              }
          }
      }
      
    2. イベントターゲットを設定します。

      1. サービスタイプ: Container Service for Kubernetesが選択されています。

      2. Kubernetesクラスターファイル: ACK Oneワークフロークラスターのkubeconfigファイルを入力します。

      3. YAML: テンプレートが選択されています。

      4. Parameters: workflowNameパラメーターを追加し、イベントIDを設定します。

        {
        	"workflowName": "$.id"
        }
      5. テンプレート: ワークフローのコンテナイメージと対応するコンテナイメージリポジトリアドレスを入力します。 以下の例は参考情報です。 実際の情報に基づいて、コンテナーイメージリポジトリのアドレスを指定します。

        重要

        リソース設定では、nameおよびnamespaceパラメーターを設定する必要があります。 generateNameパラメーターは使用できません。 リソースがデフォルトの名前空間defaultに属している場合は、名前空間も指定する必要があります。

        apiVersion: argoproj.io/v1alpha1
        kind: Workflow
        metadata:
          name: ci-go-v1-eb-${workflowName}
          namespace: default
          labels:
            workflows.argoproj.io/workflow-template: ackone-ci
        spec:
          arguments:
            parameters:
            - name: repo_url
              value: https://github.com/ivan-cai/echo-server.git
            - name: repo_name
              value: echo-server
            - name: target_branch
              value: release-v1
            - name: container_image
              value: "YOUR-IMAGE-REGISTRY-ADDRESS"     # The address of the container image repository. Replace the value based on your business requirements.
            - name: container_tag
              value: "v1.0.0"
            - name: dockerfile
              value: ./Dockerfile
            - name: enable_suffix_commitid
              value: "true"
            - name: enable_test
              value: "true"
          workflowTemplateRef:
            name: ci-go-v1
            clusterScope: true
      6. ネットワークアクセス: インターネットが選択されています。

  4. 上記の設定に基づいて、GitHubリポジトリのrelease-v1ブランチでコードを変更し、変更をコミットした後、自動化プロセスがトリガーされます。 上記の設定を確認するには、次の操作を実行します。

    1. イベントトレースを表示します。

      1. EventBridgeコンソールにログインします。 左側のナビゲーションウィンドウで、[イベントバス] をクリックします。

      2. イベントバスの名前をクリックします。 左側のナビゲーションウィンドウで、[イベントトラッキング] をクリックします。

      3. [イベントトレース] ページで、イベントトレースを表示できます。

        image

    2. ワークフローのトポロジを表示します。

      ACK Oneワークフロークラスターでワークフローのトポロジを表示します。 詳細については、「ワークフロークラスターのArgo Serverの有効化」をご参照ください。

      image