1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Flutter学習 #5】GitHub ActionsでCIを作成してみた

Posted at

はじめに

この記事はFlutter初心者の筆者が学習のために書いている記事です。
間違っていたら温かくご指摘いただけるとありがたいです。

やりたいこと

今回はGitHub Actionsを使って、FlutterのCIを作成していたいと思っています。
とりあえずテストコードの実行と静的解析ができれば良いかなと思っています。

workflowsを作る

GitHub ActionsでCIを作るにはworkflowsを作る必要があります。(というかworkflowsを作るだけで良いです。)

Flutterプロジェクト直下に以下のディレクトリ構成でyamlファイルを作成します。

# yamlファイルの名前は好きな名前にしてください。
.github/workflows/flutter-ci.yaml

GitHub Actionsは、この「.github/workflows/」の下にあるyamlファイルを実行してくれます。



次に、yamlファイルの中身を書いていくのですが、設定するのは大きく分けて以下の3つです。

  • ワークフローの名前
  • トリガー(どのタイミングで実行されるのか)
  • 実際に実行されるジョブ


実際に作成してみたyamlファイルは以下になります。

.github/workflows/flutter-ci.yaml
# ワークフロー名を定義
name: flutter-ci

# トリガーを定義
on:
  # プルリクエスト作成がトリガーとなる(GitHib Actionsが実行される)
  pull_request:
    # プルリクエスト作成時とプルリクエストを対象にコミットが行われた時
    types: [opened, synchronize]
    # 対象ブランチを指定(masterブランチに対するプルリクエストが対象)
    branches:
      - master
  
  # GitHubページ上から手動で実行できる
  workflow_dispatch:

#実行するジョブを定義
jobs:
  # ジョブ名を設定
  flutter-ci:

    # ジョブを実行する仮想ホストマシンタイプ
    runs-on: ubuntu-latest

    # タイムアウト時間を設定
    timeout-minutes: 5

    # steps配下に実行したいアクションを定義する。
    steps:
      # 当該リポジトリをチェックアウト
      - name: checkout
        uses: actions/checkout@v2

      # Flutterをインストール(キャッシュする)
      - name: flutter cache
        uses: subosito/flutter-action@v2
        with:
          flutter-version: "3.10.0"
          channel: "stable"
          cache: true
          cache-key: flutter
          cache-path: ${{ runner.tool_cache }}/flutter

      - name: install Flutter
        uses: subosito/flutter-action@v2
        with:
          flutter-version: "3.10.0"
          channel: "stable"

      # Flutter pub get 実行
      - name: flutter pub get
        run: flutter pub get
      
      # 性的解析実行
      - name: flutter analyze
        run: flutter analyze

      # テスト実行
      - name: flutter test
        run: flutter test

ざっくりと説明すると、以下のような感じです。

[CIが動くタイミング]
・ masterブランチに対するプルリクエストが作成されたタイミング
・ masterブランチに対するプルリクエストにコミットが行われたタイミング
・ 手動実行もできるようにしておいた

[実際に行われること]
・ コードの静的解析
・ テストコードの実行

このyamlファイルをmasterブランチにpushしたら準備は完了です。

実際に動かしてみる

適当なブランチを作成して、masterブランチに対してのプルリクエストを作成します。
すると、こんな感じにCIが実行されます!(このプルリクエストにコミットしても同じようにCIが動きます。)
スクリーンショット 2023-05-24 23.46.09.png

注意事項

GitHub Actionsは料金が発生してしまうケースがあるようです。
Privateリポジトリの場合に発生する可能性があるようなので、試すときはPublicリポジトリで試すのが良さそうですね。

最後に

初めてGitHub Actionsを触ってみたのですが(というか初めてCI/CDを触った)、思っていたよりも簡単でしたね。
とりあえず初歩的なCIの実装であれば、初心者でも小一時間あればできてしまう印象でした。
JenkinsとかCircleCIとかはとっつきにくくてCI/CDを少し嫌厭してたのですが、GitHub Actionsはそんな事なくてとても良かったです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?