From 28499e67f4b51efe540f8214aa202805891bc87c Mon Sep 17 00:00:00 2001 From: Martijn van Dijk Date: Wed, 31 Jul 2024 23:13:58 +0200 Subject: [PATCH] CI --- .github/workflows/build-firebase.yaml | 158 ++++++++++++++++++++++++++ .github/workflows/build.yaml | 96 ++++++++++++++++ 2 files changed, 254 insertions(+) create mode 100644 .github/workflows/build-firebase.yaml diff --git a/.github/workflows/build-firebase.yaml b/.github/workflows/build-firebase.yaml new file mode 100644 index 00000000..639ed443 --- /dev/null +++ b/.github/workflows/build-firebase.yaml @@ -0,0 +1,158 @@ +name: build firebase + +# Controls when the action will run. Triggers the workflow on push or pull request +# events but only for the develop branch +on: + push: + branches: [develop, main] + paths: + - "flutter_cache_manager_firebase/**" + - ".github/workflows/**" + pull_request: + branches: [develop] + paths: + - "flutter_cache_manager_firebase/**" + - ".github/workflows/**" + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + format: + name: Format + + # The type of runner that the job will run on + runs-on: ubuntu-latest + + env: + source-directory: ./flutter_cache_manager_firebase_firebase + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v4 + + # Make sure the stable version of Flutter is available + - name: Set up Flutter + uses: subosito/flutter-action@v2 + with: + channel: "stable" + architecture: x64 + cache: true + + # Download all Flutter packages + - name: Download dependencies + run: flutter pub get + working-directory: ${{env.source-directory}} + + # Run Flutter Format to ensure formatting is valid + - name: Run Flutter Format + run: dart format --set-exit-if-changed . + working-directory: ${{env.source-directory}} + + analyze: + name: Analyze + + # The type of runner that the job will run on + runs-on: ubuntu-latest + + env: + source-directory: ./flutter_cache_manager_firebase + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v4 + + # Make sure the stable version of Flutter is available + - name: Set up Flutter + uses: subosito/flutter-action@v2 + with: + channel: "stable" + architecture: x64 + cache: true + + # Download all Flutter packages + - name: Download dependencies + run: flutter pub get + working-directory: ${{env.source-directory}} + + # Run Flutter Analyzer + - name: Run Flutter Analyzer + run: flutter analyze + working-directory: ${{env.source-directory}} + + tests: + name: Unit-tests + # The type of runner that the job will run on + runs-on: ubuntu-latest + + env: + source-directory: ./flutter_cache_manager_firebase + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v4 + + # Make sure the stable version of Flutter is available + - name: Set up Flutter + uses: subosito/flutter-action@v2 + with: + channel: "stable" + architecture: x64 + cache: true + + # Download all Flutter packages + - name: Download dependencies + run: flutter pub get + working-directory: ${{env.source-directory}} + + # Run all unit-tests with code coverage + - name: Run unit tests + run: flutter test --coverage + working-directory: ${{env.source-directory}} + + # # Upload code coverage information + # - uses: codecov/codecov-action@v4 + # env: + # CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + # with: + # files: ${{env.source-directory}}/coverage/lcov.info + # name: CacheManager + # fail_ci_if_error: true + + publish_cache_manager_firebase: + if: ${{ github.ref_type == 'tag' }} + name: Publish Cache Manager Firebase + permissions: + id-token: write + needs: [format, analyze, tests] + # The type of runner that the job will run on + runs-on: ubuntu-latest + + env: + source-directory: ./flutter_cache_manager_firebase + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v4 + + - name: Set up Dart + uses: dart-lang/setup-dart@v1 + + # Make sure the stable version of Flutter is available + - name: Set up Flutter + uses: subosito/flutter-action@v2 + with: + channel: "stable" + architecture: x64 + cache: true + + # Download all Flutter packages + - name: Download dependencies + run: flutter pub get + working-directory: ${{env.source-directory}} + + # Publish the package + - name: Publish package + run: dart pub publish -v -f diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 977a0797..daeacd21 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -347,3 +347,99 @@ jobs: # files: ${{env.source-directory}}/coverage/lcov.info # name: CacheManager # fail_ci_if_error: true + + publish_cache_manager: + if: ${{ github.ref_type == 'tag' }} + name: Publish CacheManager + permissions: + id-token: write + needs: + [ + format, + analyze, + tests, + build_android, + build_ios, + build_macOS, + build_windows, + build_linux, + build_web, + ] + # The type of runner that the job will run on + runs-on: ubuntu-latest + + env: + source-directory: ./flutter_cache_manager + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v4 + + - name: Set up Dart + uses: dart-lang/setup-dart@v1 + + # Make sure the stable version of Flutter is available + - name: Set up Flutter + uses: subosito/flutter-action@v2 + with: + channel: "stable" + architecture: x64 + cache: true + + # Download all Flutter packages + - name: Download dependencies + run: flutter pub get + working-directory: ${{env.source-directory}} + + # Publish the package + - name: Publish package + run: dart pub publish -v -f + + publish_cache_manager_firebase: + if: ${{ github.ref_type == 'tag' }} + name: Publish Cache Manager Firebase + permissions: + id-token: write + needs: + [ + format, + analyze, + tests, + build_android, + build_ios, + build_macOS, + build_windows, + build_linux, + build_web, + ] + # The type of runner that the job will run on + runs-on: ubuntu-latest + + env: + source-directory: ./flutter_cache_manager_firebase + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v4 + + - name: Set up Dart + uses: dart-lang/setup-dart@v1 + + # Make sure the stable version of Flutter is available + - name: Set up Flutter + uses: subosito/flutter-action@v2 + with: + channel: "stable" + architecture: x64 + cache: true + + # Download all Flutter packages + - name: Download dependencies + run: flutter pub get + working-directory: ${{env.source-directory}} + + # Publish the package + - name: Publish package + run: dart pub publish -v -f