GitHub

[GitHub Actions] GitHub ActionsでCI/CDをやる

以前にJenkinsを使ってCI/CDをやってみました。

ただ昨今のGitHubの隆盛を考えると、GitHub上で完結する「GitHub Actions」を使う事が多いため、GitHub Actionsを使ってみます。
ただいま行っているプロジェクトは、「Cloudflere Pages」に対してデプロイするのでGitHub Actionsを使うのが良さそうです。

1. 準備

まずはGitHubにプッシュしているリポジトリがあるかと思いますが、プッシュするためのトークンに対して権限を与える必要があります。
もしプッシュ時に以下のようなエラーになったら、トークンの権限を疑ってください。

! [remote rejected] develop -> develop (refusing to allow a Personal Access Token 
to create or update workflow `.github/workflows/hello.yml` without `workflow` scope)

1-1. トークンの権限設定

  1. GitHubのトークン設定画面を開きます ( https://github.com/settings/tokens )
  2. すでにトークンが設定されいてる場合は、該当するトークンを選択します。
  1. Select scopes」の「workflows」にチェックを入れます。
  2. Update token」をクリックして保存します。

これで準備が出来ました。
これをしないとプッシュ時にエラーとなることになります。
また新規で作成する場合も同様に「workflows」にチェックを入れて作成してください。

ワークフローの作成

GitHub Actionsはワークフローという単位で処理を定義します。
ワークフローはYAML形式で記述します。
ワークフローのファイルは、リポジトリのルートにある「.github/workflows」ディレクトリに配置します。
例えば、「hello.yml」というファイル名で作成します。

# ============================================
# GitHub Actions Hello World ワークフロー
# ============================================

# ----------------------------------------
# ワークフローの名前
# ----------------------------------------
# GitHub の Actions タブに表示される名前です
name: Hello World

# ----------------------------------------
# トリガー (on)
# ----------------------------------------
# どのイベントでこのワークフローを実行するか定義します
on:
  # pushイベント: コードがpushされたとき
  push:
    branches:
      - develop  # developブランチへのpush時のみ実行
  
  # workflow_dispatch: GitHub上から手動で実行可能にする
  # Actions タブから「Run workflow」ボタンで実行できます
  workflow_dispatch:

# ----------------------------------------
# ジョブ (jobs)
# ----------------------------------------
# 実行する処理をジョブ単位で定義します
# 複数のジョブは並列で実行されます(依存関係を設定しない場合)
jobs:
  # ジョブID: 任意の名前をつけられます
  hello:
    # ジョブの表示名
    name: Say Hello
    
    # 実行環境: どのOSで実行するか
    # - ubuntu-latest: Ubuntu (最もよく使われる)
    # - windows-latest: Windows
    # - macos-latest: macOS
    runs-on: ubuntu-latest
    
    # ----------------------------------------
    # ステップ (steps)
    # ----------------------------------------
    # ジョブ内で順番に実行される処理
    steps:
      # ステップ1: シンプルなメッセージ表示
      - name: Say Hello
        run: echo "👋 Hello, GitHub Actions!"
      
      # ステップ2: 現在の日時を表示
      - name: Show Current Date
        run: |
          echo "📅 現在の日時:"
          date
      
      # ステップ3: GitHub Actions の変数を表示
      # ${{ }} で変数を参照できます
      - name: Show GitHub Context
        run: |
          echo "📦 リポジトリ: ${{ github.repository }}"
          echo "🌿 ブランチ: ${{ github.ref_name }}"
          echo "👤 実行者: ${{ github.actor }}"
          echo "🔢 実行番号: ${{ github.run_number }}"
          echo "📝 コミットメッセージ: ${{ github.event.head_commit.message }}"
      
      # ステップ4: 複数行のコマンドを実行
      # | を使うと複数行のコマンドを書けます
      - name: Show System Info
        run: |
          echo "🖥️ システム情報:"
          echo "-------------------"
          uname -a
          echo ""
          echo "📂 カレントディレクトリ:"
          pwd
          echo ""
          echo "📋 ディレクトリ内容:"
          ls -la

フォルダ構成は以下のようになります。

ProjectDir/
└── .github/
    └── workflows/
        └── hello.yml

ワークフローの実行確認

GitHubのリポジトリの「Actions」タブを開きます。

ワークフローが一覧に表示されているので、クリックします。

ジョブが実行されている様子が確認できます。

ジョブ名をクリックすると、ステップごとの実行結果が確認できます。

以上でGitHub Actionsの基本的なワークフローの作成と実行確認が完了です。
また今後はCloudflare Pagesへのデプロイなどを行うため、その準備が出来たらまとめてみたいと思います。