🛳️

GitHub Actionsを使用するための基本的な知識

2024/05/19に公開

はじめに

GitHub Actionsは、GitHubが提供するCI/CD(継続的インテグレーション/継続的デリバリー)ツールです。これを使用することで、コードのビルド、テスト、デプロイなどのプロセスを自動化し、ソフトウェア開発の効率を向上させることができます。

この記事では、GitHub Actionsを使用するための基本的な知識を紹介します。

GitHub Actionsの基本概念

1. ワークフロー(Workflow)

ワークフローは、特定のトリガー(イベント:プッシュやプルリクエストなど)が発生した時に実行される一連の自動化されたタスクのことです。ワークフローはYAML形式で定義され、リポジトリ内の.github/workflowsディレクトリに配置されます。

2. ジョブ(Job)

ジョブは、ワークフロー内で実行される個別タスクの単位です。ジョブは複数のステップから構成され、指定されたランナー(実行環境)上で実行されます。

3. ステップ(Step)

ステップは、ジョブ内で実行される個別のコマンドまたはアクションです。ステップは順番に実行され、シェルコマンドを使用してタスクを実行します。

4. ランナー(Runner)

ランナーは、ジョブを実行するための仮想マシンまたはコンテナです。GitHubが提供するホストランナーと、自分自身のマシンを使用するセルフホストランナーがあります。

前提条件

GitHub Actionsを使用するために以下の前提条件が必要です。

  • GitHubアカウントとリポジトリが設定されていること
  • FlutterやDartプロジェクトがリポジトリに存在していること

ワークフローファイルの作成

GitHub Actionsの設定は、リポジトリ内の .github/workflows ディレクトリに配置するYAMLファイルで行います。このディレクトリが存在しない場合は、新たに作成してください。

【サンプル】ワークフローファイル

以下は、Flutterアプリケーション用のシンプルなワークフローファイルの例です。

name: Flutter CI

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Set up Flutter
        uses: subosito/flutter-action@v2
        with:
          flutter-version: 'stable'

      - name: Install dependencies
        run: flutter pub get

      - name: Run tests
        run: flutter test

      - name: Build APK
        run: flutter build apk --release

ワークフローファイルの構成要素

name

ワークフローの名前を指定します。この名前はGitHub ActionsのUI上で表示されます。

on

ワークフローをトリガーするイベントを指定します。上記の例では、push および pull_request イベントがトリガーとして設定されています。

jobs

ワークフロー内のジョブを定義します。各ジョブは runs-on と steps で構成されます。

runs-on

ジョブが実行される仮想環境を指定します。通常は ubuntu-latest や windows-latest などを指定します。

steps

ジョブ内で実行される個々のステップを定義します。各ステップは、アクション(既製のものを uses で指定)またはコマンド(run で指定)を実行します。

主要なアクション

GitHub Actionsには、様々なアクションが用意されています。以下は、Flutterプロジェクトにおいてよく使われるアクションです。

  • actions/checkout: リポジトリをチェックアウトします。
  • subosito/flutter-action: Flutterをセットアップします。
  • actions/upload-artifact: ビルド成果物をアップロードします。

環境変数とシークレット

GitHub Actionsでは、環境変数やシークレットを使用して機密情報を安全に管理できます。例えば、FirebaseトークンやAPIキーなどをシークレットとして設定し、ワークフローファイル内で利用することができます。

シークレットの設定

  1. GitHubリポジトリのページに移動します。
  2. Settings タブを選択します。
  3. Secrets and variables > Actions を選択します。
  4. New repository secret をクリックし、名前と値を入力します。

ワークフローファイル内では、以下のようにシークレットを参照できます。

- name: Deploy to Firebase App Distribution
  uses: wzieba/Firebase-Distribution-Github-Action@v1
  with:
    appId: ${{ secrets.FIREBASE_APP_ID }}
    token: ${{ secrets.FIREBASE_TOKEN }}
    groups: testers
    file: build/app/outputs/flutter-apk/app-release.apk

まとめ

GitHub Actionsを使用することで、FlutterやDartアプリケーションのビルド、テスト、デプロイを自動化し、開発プロセスを効率化することができます。この記事で紹介した基本的な設定と使い方を参考に、あなたのプロジェクトにもぜひGitHub Actionsを導入してみてください。

Discussion