Merge pull request #39 from PHS-TSA/dependabot/github_actions/streets… #106
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: CI/CD | |
on: | |
push: | |
branches: | |
- "main" | |
pull_request: | |
types: | |
- opened | |
- synchronize | |
merge_group: | |
schedule: | |
- cron: "0 14 * * 1" # every monday at 9 in the morning CST | |
workflow_dispatch: | |
env: | |
CI: true | |
permissions: | |
contents: read | |
jobs: | |
setup: | |
name: Setup | |
needs: [] | |
timeout-minutes: 5 | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
steps: | |
- name: 📚 Git checkout | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: recursive | |
clean: true | |
persist-credentials: false | |
set-safe-directory: true | |
- name: 🐦 Set up Flutter | |
id: flutter | |
uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 # v2.16.0 | |
with: | |
flutter-version-file: pubspec.yaml | |
cache: true | |
- name: 🌐 Disable analytics | |
run: flutter --disable-analytics | |
- name: ⚙️ Cache generated files | |
uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 | |
with: | |
path: | | |
.dart_tool/ | |
lib/gen/*.gen.dart | |
lib/src/features/**/*.g.dart | |
lib/src/features/**/*.freezed.dart | |
lib/src/utils/*.g.dart | |
lib/src/utils/*.freezed.dart | |
lib/src/app/*.gr.dart | |
lib/src/app/*.gm.dart | |
lib/src/l10n/app_localizations.dart | |
lib/src/l10n/app_localizations_*.dart | |
key: ${{ runner.os }}-${{ steps.flutter.outputs.CHANNEL }}-dart-${{ hashFiles('**/build.yaml') }} | |
- name: 📦 Install dependencies | |
uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa # v3 | |
with: | |
run-bootstrap: true | |
build: | |
name: Build | |
needs: ["setup"] | |
timeout-minutes: ${{ (matrix.target == 'web') && 5 || 10 }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
target: | |
- web | |
- appbundle | |
# - ios | |
# - macos | |
# - windows | |
include: | |
- target: web | |
os: ubuntu-latest | |
flutter-flags: --release --wasm | |
- target: appbundle | |
os: ubuntu-latest | |
# This is the least optimized, but is significantly faster in CI. | |
# Android releases should be built locally on a beefy machine. | |
flutter-flags: --debug --no-tree-shake-icons --no-shrink | |
# - target: ios | |
# os: macos-latest | |
# flutter-flags: --debug --no-tree-shake-icons | |
# - target: macos | |
# os: macos-latest | |
# flutter-flags: --debug --no-tree-shake-icons | |
# - target: windows | |
# os: windows-latest | |
# flutter-flags: --debug --no-tree-shake-icons | |
steps: | |
- name: 📚 Git checkout | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: recursive | |
clean: true | |
persist-credentials: false | |
set-safe-directory: true | |
- name: 🐦 Set up Flutter | |
id: flutter | |
uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 # v2.16.0 | |
with: | |
flutter-version-file: pubspec.yaml | |
cache: true | |
- name: ☕ Setup Java | |
uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b # v4.5.0 | |
with: | |
distribution: "adopt" | |
java-version: "17" | |
- name: 🌐 Disable analytics | |
run: flutter --disable-analytics | |
- name: ⚙️ Cache generated files | |
uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 | |
with: | |
path: | | |
.dart_tool/ | |
lib/gen/*.gen.dart | |
lib/src/features/**/*.g.dart | |
lib/src/features/**/*.freezed.dart | |
lib/src/utils/*.g.dart | |
lib/src/utils/*.freezed.dart | |
lib/src/app/*.gr.dart | |
lib/src/app/*.gm.dart | |
lib/src/l10n/app_localizations.dart | |
lib/src/l10n/app_localizations_*.dart | |
key: ${{ runner.os }}-${{ steps.flutter.outputs.CHANNEL }}-dart-${{ hashFiles('**/build.yaml') }} | |
- name: 📦 Install dependencies | |
uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa # v3 | |
with: | |
run-bootstrap: true | |
- name: 🔧 Build | |
run: | | |
flutter build ${{ matrix.target }} ${{ matrix.flutter-flags }} | |
working-directory: packages/app/ | |
- name: ⚙️ Upload build | |
if: matrix.target == 'web' | |
uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 | |
with: | |
name: app-${{ matrix.target }}-build | |
path: "./packages/app/build/" | |
if-no-files-found: error | |
lint: | |
name: Linting | |
needs: ["setup"] | |
timeout-minutes: 5 | |
runs-on: ubuntu-latest | |
steps: | |
- name: 📚 Git checkout | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: recursive | |
clean: true | |
persist-credentials: false | |
set-safe-directory: true | |
- name: 🐦 Set up Flutter | |
id: flutter | |
uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 # v2.16.0 | |
with: | |
flutter-version-file: pubspec.yaml | |
cache: true | |
- name: 🌐 Disable analytics | |
run: flutter --disable-analytics | |
- name: ⚙️ Cache generated files | |
uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 | |
with: | |
path: | | |
.dart_tool/ | |
lib/gen/*.gen.dart | |
lib/src/features/**/*.g.dart | |
lib/src/features/**/*.freezed.dart | |
lib/src/utils/*.g.dart | |
lib/src/utils/*.freezed.dart | |
lib/src/app/*.gr.dart | |
lib/src/app/*.gm.dart | |
lib/src/l10n/app_localizations.dart | |
lib/src/l10n/app_localizations_*.dart | |
key: ${{ runner.os }}-${{ steps.flutter.outputs.CHANNEL }}-dart-${{ hashFiles('**/build.yaml') }} | |
- name: 📦 Install dependencies | |
uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa # v3 | |
with: | |
run-bootstrap: true | |
- name: 🕵️ Analyze project source | |
run: melos analyze --fatal-infos | |
- name: Clean Flutter generated files | |
# Works around invertase/dart_custom_lint#268 | |
run: melos run clean | |
- name: 🕵️ Run Custom Lint Rules | |
run: melos run custom_lint | |
test: | |
name: Testing | |
needs: ["setup"] | |
timeout-minutes: 7 | |
runs-on: ubuntu-latest | |
steps: | |
- name: 📚 Git checkout | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: recursive | |
clean: true | |
persist-credentials: false | |
set-safe-directory: true | |
- name: 🐦 Set up Flutter | |
id: flutter | |
uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 # v2.16.0 | |
with: | |
flutter-version-file: pubspec.yaml | |
cache: true | |
- name: 🌐 Disable analytics | |
run: flutter --disable-analytics | |
- name: ⚙️ Cache generated files | |
uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 | |
with: | |
path: | | |
.dart_tool/ | |
lib/gen/*.gen.dart | |
lib/src/features/**/*.g.dart | |
lib/src/features/**/*.freezed.dart | |
lib/src/utils/*.g.dart | |
lib/src/utils/*.freezed.dart | |
lib/src/app/*.gr.dart | |
lib/src/app/*.gm.dart | |
lib/src/l10n/app_localizations.dart | |
lib/src/l10n/app_localizations_*.dart | |
key: ${{ runner.os }}-${{ steps.flutter.outputs.CHANNEL }}-dart-${{ hashFiles('**/build.yaml') }} | |
restore-keys: | | |
${{ runner.os }}-${{ steps.flutter.outputs.CHANNEL }}-dart- | |
${{ runner.os }}- | |
- name: 📦 Install dependencies | |
uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa # v3 | |
with: | |
run-bootstrap: true | |
- name: 🧪 Run tests | |
run: melos run test | |
- name: 📊 Upload code coverage | |
uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4.6.0 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
files: packages/*/coverage/lcov.info | |
fail_ci_if_error: true | |
verbose: true | |
format: | |
name: Formatting | |
needs: ["setup"] | |
timeout-minutes: 3 | |
runs-on: ubuntu-latest | |
steps: | |
- name: 📚 Git checkout | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: recursive | |
clean: true | |
persist-credentials: false | |
set-safe-directory: true | |
- name: 🐦 Set up Flutter | |
id: flutter | |
uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 # v2.16.0 | |
with: | |
flutter-version-file: pubspec.yaml | |
cache: true | |
- name: 🌐 Disable analytics | |
run: flutter --disable-analytics | |
- name: ✨ Verify formatting | |
run: melos format --output=none --set-exit-if-changed | |
spell-check: | |
name: Check Spelling | |
needs: [] | |
runs-on: ubuntu-latest | |
steps: | |
- name: 📚 Git Checkout | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: recursive | |
clean: true | |
persist-credentials: false | |
set-safe-directory: true | |
- name: 🪄 Spell Check | |
uses: streetsidesoftware/cspell-action@9759be9ad475fe8145f8d2a1bf29a1c4d1c6f18d # v6.9.0 | |
with: | |
files: | | |
**/*.md | |
**/*.dart | |
**/*.yaml | |
**/*.toml | |
**/*.json | |
incremental_files_only: false | |
link-check: | |
name: Check Links | |
needs: [] | |
timeout-minutes: 2 | |
runs-on: ubuntu-latest | |
steps: | |
- name: 🪄 Link check | |
uses: gaurav-nelson/github-action-markdown-link-check@d53a906aa6b22b8979d33bc86170567e619495ec # 1.0.15 | |
with: | |
use-quiet-mode: "yes" | |
use-verbose-mode: "yes" | |
base-branch: "main" | |
markdownlint: | |
name: Lint Markdown | |
needs: [] | |
timeout-minutes: 4 | |
runs-on: ubuntu-latest | |
steps: | |
- name: 📚 Git Checkout | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: recursive | |
clean: true | |
persist-credentials: false | |
set-safe-directory: true | |
- name: 🕵️ Markdown linting | |
uses: DavidAnson/markdownlint-cli2-action@db43aef879112c3119a410d69f66701e0d530809 # v17.0.0 | |
id: markdownlint | |
with: | |
fix: true | |
# Surprisingly, the default is to only lint the project root. | |
globs: | | |
**/*.md |