アプリケーションのCI/CD (コンテナ)

[更新:2025年12月11日]

cicd_containers

コードをリポジトリで統合管理し、コンテナのビルド・テスト・デプロイをCI/CDパイプラインにより自動化することで、さくらのクラウド環境への継続的な更新を高速かつ安定して実現します。これにより、人的ミスを削減し、リリース品質と開発効率を向上させ、運用負荷を軽減しながらスピーディなサービス提供が可能になります。

各機能のサービス対応

機能

対応サービス

コードリポジトリ

Azure Repos

CI/CD

Azure Pipelines

システム構成要素

  • さくらのクラウド

    • AppRun(コンテナ実行環境)

    • コンテナレジストリ

  • Addon

    • Azure DevOps(Azure Repos、Azure Pipelines)

構築手順

さくらのクラウドの準備

Terraform Backend

tfstateを保存するためのさくらのオブジェクトストレージを作成します。

このサンプルではオブジェクトストレージは以下の設定で作成します。

設定項目

バケット名

terraform-state-usecaseb2

フォルダ名

dev/

パーミッション

READ/WRITE

パーミッションで発行したアクセスキー情報は、後ほどAzure Pipelinesの環境変数として使用します。

Container Registry

サンプルファイル内に、Container Registryを作成するTerraformのサンプルコードを用意しています。

Azure Pipelinesの準備

Azure Pipelinesからコンテナイメージをビルド・プッシュ・デプロイするよう設定します。

Gitリポジトリの準備

  1. Gitリポジトリ(usecase-b2)を作成

  2. 作成したGitリポジトリ(usecase-b2)に、以下のファイル群をコミット

    gitリポジトリ

Pipelineの作成

Azure Pipelinesを使用して、コンテナイメージのビルド・Container Registryへのプッシュ・AppRun へのデプロイを行うPipeline(azure-pipelines.yml)を作成します。

  1. Pipelineに移動し、「New pipeline」を選択

    New Pipeline
  2. 「Azure Repos Git (YAML)」を選択

    Where is your code?
  3. 先ほど作成したGitリポジトリ(usecase-b2)を選択

    Select a repository
  4. 「Existing Azure Pipelines YAML file」を選択

    Configure your pipeline
  5. 選択したGitリポジトリに作成済みのazure-pipelines.ymlを指定して「Continue」を選択。ブランチはmainを選択する

    Select an existing YAML file
  6. Pipeline YAML(azure-pipelines.yml)のプレビューを確認する

    Pipeline YAML Preview
Variable設定

続いて以下の変数を設定します。これらの変数は、パイプライン実行時にさくらのクラウドの各サービスにアクセスするために必要です。

  1. Pipeline YAMLのプレビュー画面で「Variables」を選択

    New Variable
  2. 「New Variable」を選択

    Create Variable
  3. 以下の変数を設定する。機密情報は「Keep this value secret」にチェック

    Add Variable

    変数名

    説明

    機密情報

    SAKURA_REGISTRY_SERVER

    Container RegistryのFQDN

    No

    SAKURA_REGISTRY_USERNAME

    Container Registryのユーザー名

    No

    SAKURA_REGISTRY_PASSWORD

    Container Registryのパスワード

    Yes

    AWS_ACCESS_KEY_ID

    Terraform Backend用のS3アクセスキー

    Yes

    AWS_SECRET_ACCESS_KEY

    Terraform Backend用のS3シークレットキー

    Yes

    SAKURACLOUD_ACCESS_TOKEN

    さくらのクラウドAPIトークン

    Yes

    SAKURACLOUD_ACCESS_TOKEN_SECRET

    さくらのクラウドAPIシークレット

    Yes

  4. すべての変数を設定したら、「Save」を選択

    Save Variables
Pipelineの保存
  1. 最後に、Pipeline YAMLのプレビュー画面で「Save」を選択

    Save Pipeline

承認フローの設定

承認者の設定

デプロイ時に承認者を設けるためにAzure DevOpsを設定します。

  1. Azure Pipeline の Environments に移動し、「New environments」から新しいEnvironmentを作成

    New Environment
  2. Environment名を「usecase-b2」と入力し、「None」を選択して作成

    Create Environment
  3. 作成したEnvironment(usecase-b2)に移動し、「Approvals and checks」から「Approvals」を選択して承認者を設定

    Approvals and checks
  4. 承認者を選択して、「Create」を選択

    Add Approvals
  5. 設定した承認者を確認

    Approvals List
承認フローの使用権限

続いて、作成した承認フローを利用するPipelineに対して使用権限を付与します。

  1. 承認者の確認画面で「Security」を選択

    Security Environment
  2. 「+」を選択して、作成したPipeline(usecase-b2)に対する使用権限を付与

    Security Environment
  3. 設定した使用権限を確認

    Security Environment

動作確認

設定が完了したPipelineは手動で実行して動作確認します。

  1. Azure DevOpsの「Pipelines」セクションに移動し、作成したPipeline(usecase-b2)を選択

  2. 「Run Pipeline」を選択して、手動でPipelineを実行

  3. 実行が開始されると、各ステージの進行状況を表示

パイプラインの動作概要

このパイプラインは3つのステージで構成されています:

  1. Test ステージ:全てのブランチで実行

    • Node.jsアプリケーションのテスト実行

  2. Build ステージ:mainブランチのみで実行

    • Dockerイメージのビルド

    • Container Registryへのプッシュ

  3. Deploy ステージ:Buildステージ成功後に実行(承認が必要)

    • Terraformを使用したAppRun βへのデプロイ