flutter webで作成したお試しアプリをnetlifyで動かしてみたので、CI/DI (Continuous integration/Continuous Delivery) 設定手順をメモ。
注意すべきは、初期状態でflutterコマンドが使えないのでビルドでひと手間加える必要があること、GitHubのアクセス設定が見つけにくいこと、以上の2点。
設定手順
レポジトリの準備
レポジトリを作成し、netlify.toml
とbuild.sh
を追加してpushしておく。netlify側のデプロイ設定をnetlify.toml
に記載する。
# netlify.toml [build] command = "chmod 777 ./build.sh && ./build.sh" publish = "build/web"
netlify.toml
では、自前のシェルスクリプトを呼び出すよう指示。
# build.sh FLUTTER=`which flutter` if [ -z $FLUTTER ]; then if cd flutter 2>/dev/null; then git pull cd .. else git clone https://github.com/flutter/flutter.git -b stable --depth=1 fi FLUTTER="flutter/bin/flutter" fi $FLUTTER config --enable-web $FLUTTER pub get $FLUTTER gen-l10n $FLUTTER pub run flutter_native_splash:create $FLUTTER pub run grinder download-data $FLUTTER build web --release
flutter
コマンドをインストールしてflutter build
を行う。
言語リソースの作成や、スプラッシュ画面の作成、gridnerタスク等も追加で実行。
接続とアクセス許可
Site Settings
のBuild & Deploy
でLink repository
。
GitHub
を選んで認証を行う。
一覧から対象のレポジトリを選ぶ。レポジトリが表示されていない場合はGitHub側でアクセス設定が必要。
[Configure the Netlify app on Github]
リンクからGitHubの設定ページへ。(GitHub内ではSettings > Integrations: Applications > Installed Github Apps > Netlify: Configure
とたどる)
Repository accessへリポジトリを追加してやる。
CI設定
netlify.toml
の内容で自動構成されるので、そのままデプロイできる。
以上で、設定完了。
レポジトリへPUSHするたびに自動でデプロイされる。
その他
デプロイのスキップ
デプロイをスキップしたい更新は、最終コミットのメッセージに[skip ci]
や[skip netlify]
と書いておくとスキップできるようだ。
ビルド作成API
また、任意のタイミングでデプロイさせたい場合は、APIが簡便に使える。sites/{SITE_ID}/builds
エンドポイントへPOSTするだけで良い。
SITE_ID、TOKEN共にnetlifyで作成・確認できる。
curl -XPOST -H "Authorization: Bearer {TOKEN}" https://api.netlify.com/api/v1/sites/{SITE_ID}/builds
使用したアプリ
コロナ感染症データを読み込むようにしたflutterサンプルコードの改修品を使用した。 実用性はほぼないが、過去に大騒ぎしていた頃のさざ波感は味わえる。
- WEB版: https://covidtl.netlify.app
- Windowsアプリ: flutter_covidtl_1.0.0.zip
- Androidアプリ: flutter_covidtl_1.0.0.apk