From 41baa5506a221d6eab6683388d5d9e2dca38ef23 Mon Sep 17 00:00:00 2001 From: Martijn van Dijk Date: Wed, 31 Jul 2024 17:29:30 +0200 Subject: [PATCH] Add ci --- .github/workflows/ci.yaml | 105 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 .github/workflows/ci.yaml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..0620b75 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,105 @@ +name: CI & CD + +on: + workflow_dispatch: + + push: + branches: [main] + tags: + - "[0-9]+.[0-9]+.[0-9]+*" + + pull_request: + branches: [main] + +# This ensures that previous jobs for the PR are canceled when PR is updated +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + name: Build package & run tests + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 1 # Use shallow clone for faster checkout + + - name: Check broken links + uses: JustinBeckwith/linkinator-action@v1 + with: + paths: "**/*.md" + + - name: Set up Flutter + uses: subosito/flutter-action@v2 + with: + channel: "stable" + architecture: x64 + cache: true + + - name: Install dependencies + run: dart pub get + + - name: Format code + run: dart format --set-exit-if-changed . + + - name: Analyze static code + run: dart analyze + + - name: Check publish warnings + run: dart pub publish --dry-run + + example-android: + name: Build Android example app + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 1 # Use shallow clone for faster checkout + + - name: Set up Flutter + uses: subosito/flutter-action@v2 + with: + channel: "stable" + architecture: x64 + cache: true + + - name: Install dependencies + run: dart pub get + + - name: Build example + run: flutter build appbundle --debug + working-directory: example + + deployment: + if: ${{ github.ref_type == 'tag' }} + needs: [build, example-android] + name: Deploy package + permissions: + id-token: write + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 1 # Use shallow clone for faster checkout + + - name: Set up Dart + uses: dart-lang/setup-dart@v1 + + - name: Set up Flutter + uses: subosito/flutter-action@v2 + with: + channel: "stable" + architecture: x64 + cache: true + + - name: Install dependencies + run: dart pub get + + - name: Publish package + run: dart pub publish -v -f