C++ アプリケーション向けの CI/CD 設定

前提条件

C++ アプリケーションのコンテナー化 から始まる、ここまでのガイドすべてを終えていること。 本節を進めるには GitHub アカウントと Docker アカウントを持っていることが必要です。

概要

本節では GitHub アクションを利用した CI/CD パイプラインの設定と利用方法について学び、Docker イメージのビルドとテストを行った上で Docker Hub へのプッシュを行います。 これより以下の手順を進めます。

  1. GitHub 上に新たなリポジトリを生成します。
  2. GitHub アクションワークフローを定義します。
  3. ワークフローを実行します。

手順 1: リポジトリの生成

GitHub リポジトリの生成、Docker Hub 機密情報の設定、ソースコードのプッシュを行います。

  1. GitHub 上に 新たなリポジトリを生成 します。

  2. リポジトリの Settings (設定) を開き、Secrets and variables > Actions に進みます。

  3. 新たな Repository variable (リポジトリ変数) として、名称を DOCKER_USERNAME、その値に自身の Docker ID を設定して生成します。

  4. Docker Hub に対しての パーソナルアクセストークン (Personal Access Token; PAT) を新たに生成します。 docker-tutorial と名付けることにします。 アクセスパーミッションは Read and Write (読み書き) とします。

  5. GitHub リポジトリの Repository secrets (リポジトリシークレット) として PAT を追加します。 その名前は DOCKERHUB_TOKEN とします。

  6. 手元のマシン内にあるローカルリポジトリにおいて、以下のコマンドを実行して origin を生成済みのリポジトリに変更します。 ここで your-username には GitHub のユーザー名、your-repository の部分は生成したリポジトリ名とします。

    $ git remote set-url origin https://github.com/your-username/your-repository.git
    
  7. 以下のコマンドを実行して、ローカルリポジトリから GitHub に向けてのステージング、コミット、プッシュを行います。

    $ git add -A
    $ git commit -m "my commit"
    $ git push -u origin main
    

手順 2: ワークフローの設定

Docker Hub に対してのイメージビルド、テスト、プッシュを行う GitHub アクションワークフローを設定します。

  1. GitHub 上の対象リポジトリにアクセスします。 そして Actions (アクション) タブを選びます。

  2. set up a workflow yourself (自分でワークフローを設定) を選びます。

    これを行うと、リポジトリないに新たな GitHub アクションワークフローファイルを生成するためのページに進みます。 そのファイルは、デフォルトでは .github/workflows/main.yml です。

  3. 編集画面において、以下の YAML 設定をコピーペーストして変更を決定します。

    name: ci
    
    on:
      push:
        branches:
          - main
    
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          - name: Login to Docker Hub
            uses: docker/login-action@v3
            with:
              username: ${{ vars.DOCKER_USERNAME }}
              password: ${{ secrets.DOCKERHUB_TOKEN }}
    
          - name: Set up Docker Buildx
            uses: docker/setup-buildx-action@v3
    
          - name: Build and push
            uses: docker/build-push-action@v6
            with:
              platforms: linux/amd64,linux/arm64
              push: true
              tags: ${{ vars.DOCKER_USERNAME }}/${{ github.event.repository.name }}:latest

    docker/build-push-action で利用している YAML 文法についての詳細は GitHub Action README を参照してください。

手順 3: ワークフローの実行

ワークフローファイルを保存してジョブ実行します。

  1. Commit changes... (変更のコミット) を選び、main ブランチに変更をプッシュします。

    コミットのプッシュを行うと、ワークフローは自動的に起動します。

  2. Actions (アクション) タブに移動します。 そこにワークフローが表示されます。

    ワークフローを選ぶと、全ステップが展開されて表示されます。

  3. ワークフローが完了したら Docker Hub 上のリポジトリ に移動します。

    一覧内に新たなリポジトリが表示されていれば、GitHub アクションによって Docker Hub へのイメージのプッシュが成功したということになります。

まとめ

本節では C++ アプリケーション向けの GitHub アクションワークフローの設定方法について学びました。

関連情報

次のステップ

次の節では、デプロイ前に Kubernetes 上のワークロードをローカルにおいてテスト、デバッグする方法について学びます。