GitHub Actionsは、GitHubリポジトリ内で継続的インテグレーション(CI)および継続的デリバリー(CD)パイプラインを構築するための強力なツールです。
本記事では、GitHub Actionsを最大限に活用するために必要な情報を網羅的に解説します。定期実行、デプロイ、料金、無料枠、Outputsについて詳しく学びましょう。
GitHub Actionsとは?
GitHub Actionsは、GitHubが提供するCI/CDツールです。
これを使うことで、コードのビルド、テスト、デプロイメントなどのワークフローを自動化できます。
特に、GitHubリポジトリと密接に連携しており、プルリクエストやプッシュイベントなどをトリガーにしてワークフローを実行できます。
定期実行
定期実行の概要
定期実行は、特定の時間間隔でワークフローを自動的に実行する機能です。
これにより、定期的なタスク(例:毎日データバックアップ、毎週のレポート生成など)を自動化できます。
定期実行の設定方法
定期実行は、`cron`構文を使用して設定します。
以下は、毎日午前2時にワークフローを実行する例です。
name: Daily Job
on:
schedule:
- cron: '0 2 * * *'
jobs:
my-daily-job:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Run script
run: echo "This is a daily job!"
Cron構文の説明
`cron`構文は、時間指定のためのフォーマットです。以下のように構成されます。
* * * * *
| | | | |
| | | | +-- Day of the week (0 - 7) (Sunday=0 or 7)
| | | +---- Month (1 - 12)
| | +------ Day of the month (1 - 31)
| +-------- Hour (0 - 23)
+---------- Minute (0 - 59)
例えば、毎週月曜日の午前3時に実行するには以下のように指定します。
schedule:
- cron: '0 3 * * 1'
デプロイ
デプロイの概要
デプロイメントは、アプリケーションを本番環境やステージング環境に展開するプロセスです。
GitHub Actionsを使用すると、自動デプロイメントパイプラインを簡単に設定できます。
デプロイの設定方法
以下は、AWS EC2インスタンスに自動デプロイする簡単な例です。
name: Deploy to AWS
on:
push:
branches:
- main
jobs:
deploy:
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: Build project
run: npm run build
- name: Deploy to EC2
run: |
scp -r ./build ec2-user@your-ec2-instance:/var/www/html
デプロイメント戦略
デプロイメント戦略は、アプリケーションのリリース方法に影響を与えます。以下のような戦略があります。
Blue-Green Deployment
2つの環境を切り替えながらデプロイし、ダウンタイムを最小限に抑える。
Canary Deployment
新しいバージョンを少数のユーザーにのみ公開し、問題がないことを確認してから全体に展開する。
Outputs
Outputsの概要
Outputsは、ジョブ間でデータを共有するために使用されます。
一つのジョブの結果を次のジョブに渡すことで、複雑なワークフローを構築できます。
Outputsの設定方法
以下は、ジョブのOutputsを設定する例です。
jobs:
build:
runs-on: ubuntu-latest
outputs:
build_id: ${{ steps.build_id.outputs.id }}
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Build project
id: build_id
run: echo "::set-output name=id::1234"
deploy:
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Use build id
run: echo "Build ID: ${{ needs.build.outputs.build_id }}"
Outputsの活用方法
Outputsを活用することで、以下のようなメリットがあります。
データの共有
ジョブ間でのデータ共有により、ワークフローがよりシームレスに。
ワークフローの柔軟性
一つのジョブの結果を他のジョブで利用することで、複雑な条件付き処理が可能に。
メンテナンスの簡素化
Outputsを使うことで、ワークフローのメンテナンスが容易になります。
料金
GitHub Actionsの料金体系
GitHub Actionsの料金は、実行時間とストレージ使用量に基づいています。
無料枠も提供されており、特定の条件下で無料で利用可能です。
無料枠の詳細
無料枠は、GitHub Actionsを試すのに最適です。
以下は、無料枠の概要です。
パブリックリポジトリ
無制限の実行時間が提供されます。
プライベートリポジトリ
GitHub Freeプランでは月間2,000分、GitHub Proプランでは月間3,000分の無料実行時間が提供されます。
有料プランの詳細
有料プランでは、追加の実行時間を利用することができます。
料金は以下のように設定されています。
Linux runners: $0.008 per minute
macOS runners: $0.08 per minute
Windows runners: $0.016 per minute
具体的な料金は、公式サイトのGitHub Actions Pricingページで確認できます。
最後に
GitHub Actionsは、強力で柔軟なCI/CDツールです。
本記事では、定期実行、デプロイ、料金、無料枠、Outputsに焦点を当て、GitHub Actionsを最大限に活用するための具体的な方法を解説しました。
これらの知識を活用して、効率的な開発フローを構築しましょう。
フリーランスやフルリモート環境に興味がある方は、下記の記事をご参考ください。