Flutter アプリ用の完全な CI/CD
7443 ワード
私のワークフロー
この GitHub アクション ワークフローを使用して、Flutter のビルド、テスト、デプロイ プロセスを完全に自動化できます.
このワークフローでは、Android、iOS、ウェブのすべての Flutter ビルド ターゲットがサポートされています.
タグなしでプッシュすると、このワークフローは Flutter アプリを分析してテストします.
タグ (この場合は「v」で始まります) を使用してプッシュすると、このワークフローはデプロイに必要なすべてのアーティファクトを含むリリースを追加で作成します.
その後、これらのアーティファクトを使用してアプリをデプロイできます.
Web デプロイの例として、firebase ホスティング デプロイを追加しました.
これをさらに拡張して、iOS および Android アプリを testflight などのテスト プラットフォームにデプロイしたり、プラットフォーム固有のストアに直接デプロイしたりできます (アプリに署名することを忘れないでください 😄).
このワークフローは、Flutter アプリの優れた出発点であり、個人の好みに合わせて微調整できます.
提出カテゴリ:
DIY 導入、電話対応
Yaml ファイルまたはコードへのリンク
name: Build Flutter apps
on:
push:
branches:
- main
tags:
- v*
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- uses: subosito/[email protected]
with:
channel: 'stable'
- name: Install Dependencies
run: flutter packages get
- name: Analyze
run: flutter analyze lib test
- name: Run tests
run: flutter test --no-pub --coverage --test-randomize-ordering-seed random packages test
- name: Build Android App
if: startsWith(github.ref, 'refs/tags/v')
run: flutter build apk
- name: Build iOS App
if: startsWith(github.ref, 'refs/tags/v')
run: |
flutter build ios --no-codesign
cd build/ios/iphoneos
mkdir Payload
cd Payload
ln -s ../Runner.app
cd ..
zip -r app.ipa Payload
- name: Build web
if: startsWith(github.ref, 'refs/tags/v')
run: |
flutter build web
cd build/web
zip -r web-app.zip .
- name: Archive Production Artifact
if: startsWith(github.ref, 'refs/tags/v')
uses: actions/upload-artifact@master
with:
name: web
path: build/web
- name: Release Apps
if: startsWith(github.ref, 'refs/tags/v')
uses: ncipollo/release-action@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: 'build/app/outputs/**/*.apk,build/ios/iphoneos/app.ipa,build/web/web-app.zip'
deploy:
if: startsWith(github.ref, 'refs/tags/v')
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Download Artifact
uses: actions/download-artifact@master
with:
name: web
path: build/web
- name: Deploy to Firebase hosting
uses: w9jds/firebase-action@master
with:
args: deploy --message \"${{ github.event.head_commit.message }}\" --only hosting
env:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
追加のリソース / 情報
私たちは現在、このワークフローを独自の Flutter アプリに使用しています.このアプリはまだ公開されておらず、まだオープンソースではありませんが、近い将来そうする予定です!
Reference
この問題について(Flutter アプリ用の完全な CI/CD), 我々は、より多くの情報をここで見つけました https://dev.to/kaos/complete-cicd-for-flutter-apps-42dcテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol