Node.js アプリケーション向けの CI/CD 設定

前提条件

Node.js アプリケーションのコンテナー化 から始まる、ここまでのガイドすべてを終えていること。 本節を進めるには 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 とします。 アクセス権限は読み書き可能としてください。

  5. GitHub リポジトリにおいて、この PAT を Repository secret (リポジトリの機密情報) として追加します。 その名前を 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 test
            uses: docker/build-push-action@v6
            with:
              target: test
              load: true
    
          - name: Build and push
            uses: docker/build-push-action@v6
            with:
              platforms: linux/amd64,linux/arm64
              push: true
              target: prod
              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 へのイメージプッシュが成功したことを意味しています。

まとめ

本節では、Node.js アプリケーションに対する GitHub アクションワークフローの設定方法について学びました。

関連情報

次のステップ

次はデプロイを行う前に、Kubernetes 上でのローカルなテストとデバッグ方法について学びます。