Very Good Workflows
Developed with
Reusable GitHub Workflows used at Very Good Ventures
Quick Start
To get started add very good workflows to an existing GitHub workflow:
# A reusable workflow for Dart packages
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/dart_package.yml@v1
# A reusable workflow for Flutter packages
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/flutter_package.yml@v1
# A reusable workflow for ensuring commits are semantic
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/semantic_pull_request.yml@v1
# A reusable workflow for verifying package scores on pub.dev
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/pana.yml@v1
# A reusable workflow for running a spell check
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/spell_check.yml@v1
For a more detailed guide, including tips and tricks, check out our blog.
Dart Package Workflow
Steps
The Dart package workflow consists of the following steps:
- Install Dependencies
- Format
- Analyze
- Run tests
- Check Code Coverage
Inputs
concurrency
Optional The number of concurrent test suites run.
Default 4
coverage_excludes
Optional List of paths to exclude from the coverage report, separated by an empty space. Supports globs
to describe file patterns.
Default ""
dart_sdk
Optional Which Dart SDK version to use. It can be a version (e.g. 2.12.0
) or a channel (e.g. stable
):
Default "stable"
min_coverage
Optional The minimum coverage percentage allowed.
Default 100
working_directory
Optional The path to the root of the Dart package.
Default "."
analyze_directories
Optional A space separated list of folders that should be analyzed.
Default "lib test"
report_on
Optional A comma separated list of folders that should be checked in code coverage.
Default "lib"
runs_on
Optional An optional operating system on which to run the workflow.
Default "ubuntu-latest"
setup
Optional An optional command that should be executed immediately after dependencies are installed.
Default ""
platform
Optional An optional, comma-separated list of platform(s) on which to run the tests.
[vm (default), chrome, firefox, safari, node]
Default "vm"
Example Usage
name: My Dart Workflow
on: pull_request
jobs:
build:
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/dart_package.yml@v1
with:
coverage_excludes: "*.g.dart"
dart_sdk: "stable"
platform: "chrome,vm"
working_directory: "examples/my_dart_package"
Flutter Package Workflow
Steps
The Flutter package workflow consists of the following steps:
- Install Dependencies
- Format
- Analyze
- Run tests
- Check Code Coverage
Inputs
concurrency
Optional The number of concurrent test suites run.
Default 4
coverage_excludes
Optional List of paths to exclude from the coverage report, separated by an empty space. Supports globs
to describe file patterns.
Default ""
flutter_channel
Optional The Flutter release channel to use (e.g. stable
).
Default "stable"
flutter_version
Optional The Flutter SDK version to use (e.g. 2.8.1
).
Default ""
min_coverage
Optional The minimum coverage percentage allowed.
Default 100
setup
Optional An optional command that should be executed immediately after dependencies are installed.
Default ""
working_directory
Optional The path to the root of the Flutter package.
Default "."
test_optimization
Optional Enable the test optimization.
Default true
Note: Since the optimization process groups tests into a single file, golden tests will not work properly. Consider disabling optimizations if you are using golden tests.
test_recursion
Optional Whether to recursively run tests in nested directories.
Default false
runs_on
Optional An optional operating system on which to run the workflow.
Default "ubuntu-latest"
Example Usage
name: My Flutter Workflow
on: pull_request
jobs:
build:
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/flutter_package.yml@v1
with:
coverage_excludes: "*.g.dart"
flutter_channel: "stable"
flutter_version: "2.8.1"
working_directory: "examples/my_flutter_package"
test_recursion: true
Semantic Pull Request Workflow
Inputs
types
Optional Configure which types are allowed (e.g. "feat, fix, docs"
).
Note: If not set then the action uses the list of Conventional Commits type of the commitizen.
scopes
Optional Configure which scopes are allowed (e.g. "dart_package, flutter_package"
).
Steps
The semantic pull request package workflow consists of the following steps:
- Ensure Commit is Semantic
Example Usage
name: My Workflow
on: pull_request
jobs:
build:
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/semantic_pull_request.yml@v1
Pana Workflow
Steps
The pana workflow consists of the following steps:
- Install Pana
- Verify Pana Score
Inputs
pana_version
Optional Which version of package:pana
to use (e.g. 0.21.15
).
min_score
Optional The minimum score allowed.
Default 120
working_directory
Optional The path to the root of the Dart package.
Default "."
runs_on
Optional An optional operating system on which to run the workflow.
Default "ubuntu-latest"
Example Usage
name: My Workflow
on: pull_request
jobs:
build:
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/pana.yml@v1
with:
min_score: 95
working_directory: "examples/my_flutter_package"
Spell Check Workflow
Steps
The spell check workflow consists of the following steps:
- Git Checkout
- Run Spell Check
Inputs
config
Optional The location of the cspell.json
.
Default ".github/cspell.json"
includes
Optional The glob patterns to filter the files to be checked. Use a new line between patterns to define multiple patterns.
Default ""
working_directory
Optional The path to the root of the Dart package.
Default "."
runs_on
Optional An optional operating system on which to run the workflow.
Default "ubuntu-latest"
verbose
Optional An optional boolean which determines whether to log verbose output.
Default false
modified_files_only
Optional An optional boolean which determines whether spell check is run on modified files.
Default true
Example Usage
name: My Workflow
on: pull_request
jobs:
build:
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/spell_check.yml@v1
with:
includes: |
**/*.{dart,md,yaml}
!.dart_tool/**/*.{dart,yaml}
.*/**/*.yml
runs_on: macos-latest
modified_files_only: false
working_directory: examples/my_project