#1. GitHub Actionsとは?
GitHub Actionsは、GitHubのリポジトリ内でワークフローを定義し、イベントに基づいて自動で実行する機能です。CI/CDの自動化、コードの品質チェック、デプロイなどを簡単に行うことができます。
主な特徴は以下の通りです:
- 自動化: GitHubリポジトリで発生するイベント(プッシュ、プルリクエスト、リリースなど)に基づいてワークフローをトリガーできます。
- 簡単な設定: YAML形式の設定ファイルでワークフローを定義します。
- 柔軟性: 様々なアクションやジョブを組み合わせて、複雑なワークフローを作成できます。
#2. GitHub Actionsを使う準備
まず、GitHub Actionsを使用するための準備を行います。
2.1 GitHubリポジトリの作成
GitHub Actionsを使うには、GitHub上にリポジトリが必要です。まず、自分のリポジトリを作成します。
- GitHubにログインして、新しいリポジトリを作成します。
2.2 GitHub Actionsファイルの作成
GitHub Actionsは、リポジトリ内の .github/workflows/
ディレクトリにYAMLファイルを配置して設定します。このYAMLファイルで、ジョブやステップ、実行するアクションなどを定義します。
例えば、リポジトリのルートに .github/workflows
フォルダを作成し、その中に ci.yml
ファイルを作成します。
.github/ └── workflows/ └── ci.yml
2.3 YAMLファイルの基本構造
GitHub Actionsのワークフローは、YAML形式で記述します。基本的な構成は以下の通りです:
name: CI Workflow on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Set up Node.js uses: actions/setup-node@v2 with: node-version: '14' - name: Install dependencies run: npm install - name: Run tests run: npm test
name
: ワークフローの名前。on
: ワークフローをトリガーするイベント(例:push、pull_request)。jobs
: 複数のジョブを定義するセクション。ジョブごとに実行されるステップ(アクションやシェルコマンド)を指定します。runs-on
: ジョブが実行される環境(例:ubuntu-latest、macos-latest、windows-latest)。steps
: 各ジョブで実行する具体的なステップ。
#3. GitHub Actionsの実行フロー
3.1 イベントのトリガー
GitHub Actionsは、リポジトリで発生する特定のイベント(プッシュ、プルリクエスト、リリースなど)をトリガーとして、ワークフローを実行します。
例えば、上記の設定では、push
や pull_request
イベントが発生したときにワークフローが実行されます。
on: [push, pull_request]
これにより、コードがプッシュされたり、プルリクエストが作成されたりするたびに、定義されたアクションが自動で実行されます。
3.2 ステップの実行
GitHub Actionsは、定義されたステップを順番に実行します。例えば、actions/checkout
を使用してリポジトリのコードをチェックアウトし、次に actions/setup-node
を使ってNode.jsの環境を整え、その後 npm install
と npm test
で依存関係のインストールとテストを実行します。
#4. 実際にCI/CDパイプラインを構築してみた
私が実際にGitHub Actionsを使って、Node.jsアプリケーションのCIパイプラインを構築した経験を元に、具体的な手順を紹介します。
4.1 Node.jsアプリケーションのセットアップ
- リポジトリ作成: 新しいリポジトリを作成し、Node.jsの基本的なアプリケーション(例えば、
express
を使った簡単なサーバー)を作成します。 ci.yml
の作成: 上記のように、.github/workflows/ci.yml
にYAMLファイルを作成し、CIの設定を記述します。
name: Node.js CI on: push: branches: - main pull_request: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Set up Node.js uses: actions/setup-node@v2 with: node-version: '14' - name: Install dependencies run: npm install - name: Run tests run: npm test
4.2 テストの自動実行
- テストスクリプトの作成:
package.json
にテストスクリプトを追加します。
{ "scripts": { "test": "jest" } }
- テストの実行:
npm test
を使ってテストを実行します。このコマンドがGitHub Actionsで自動的に実行されます。
4.3 プッシュ後にCIが実行される
リポジトリにコードをプッシュすると、GitHub Actionsが自動でCIパイプラインを実行します。GitHubのリポジトリページから、Actions
タブをクリックすると、ジョブの進行状況や結果を確認できます。
#5. まとめ
GitHub Actionsを使用することで、開発者は手動で行うことなく、コードのビルド、テスト、デプロイなどの一連の作業を自動化することができます。CI/CDのパイプラインを自動化することで、開発の効率が向上し、バグやミスを減らすことができます。
- 簡単な設定: YAMLファイルで簡単にCI/CDを設定できます。
- 拡張性: さまざまなアクションを組み合わせて、複雑なワークフローを構築できます。
- 無料で使用: GitHub Actionsは、GitHubの無料プランでも利用できます。
GitHub Actionsを使ってCI/CDを導入することで、ソフトウェア開発がより効率的に、信頼性高く進められるようになります。