Flutter アプリ用の完全な CI/CD


私のワークフロー



この 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 アプリに使用しています.このアプリはまだ公開されておらず、まだオープンソースではありませんが、近い将来そうする予定です!