スキルアップ

【GitHub Actions】定期実行、デプロイ、Outputs、料金、無料枠【徹底解説】

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を最大限に活用するための具体的な方法を解説しました。

これらの知識を活用して、効率的な開発フローを構築しましょう。

フリーランスフルリモート環境に興味がある方は、下記の記事をご参考ください。

  • この記事を書いた人

zuu

現役フリーランスlaravelエンジニアのスキルスタックブログです。 日々の技術的発見やフリーランスエンジニア業界についてのあれこれをご紹介します。エージェントは PE-BANK を利用しています。

-スキルアップ