feat: add macos release platform to shorebird_code_push_protocol #5339
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 | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
on: | |
pull_request: | |
push: | |
branches: | |
- main | |
jobs: | |
semantic_pull_request: | |
name: ✅ Semantic Pull Request | |
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/semantic_pull_request.yml@v1 | |
cspell: | |
name: 🔤 Check Spelling | |
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/spell_check.yml@v1 | |
with: | |
config: cspell.config.yaml | |
changes: | |
runs-on: ubuntu-latest | |
outputs: | |
needs_cross_platform_dart_build: ${{ steps.needs_cross_platform_dart_build.outputs.changes }} | |
needs_dart_build: ${{ steps.needs_dart_build.outputs.changes }} | |
needs_redis_build: ${{ steps.needs_redis_build.outputs.changes }} | |
needs_verify: ${{ steps.needs_verify.outputs.changes }} | |
name: 👀 Detect Changes | |
steps: | |
- name: 📚 Git Checkout | |
uses: actions/checkout@v4 | |
- uses: dorny/paths-filter@v3 | |
name: Build Detection | |
id: needs_dart_build | |
with: | |
filters: | | |
artifact_proxy: | |
- ./.github/codecov.yml | |
- ./.github/workflows/main.yaml | |
- ./.github/actions/dart_package/action.yaml | |
- packages/artifact_proxy/** | |
discord_gcp_alerts: | |
- ./.github/codecov.yml | |
- ./.github/workflows/main.yaml | |
- ./.github/actions/dart_package/action.yaml | |
- packages/discord_gcp_alerts/** | |
- uses: dorny/paths-filter@v3 | |
name: Build Detection | |
id: needs_cross_platform_dart_build | |
with: | |
filters: | | |
shorebird_cli: | |
- ./.github/codecov.yml | |
- ./.github/workflows/main.yaml | |
- ./.github/actions/dart_package/action.yaml | |
- packages/shorebird_cli/** | |
- packages/shorebird_code_push_client/** | |
- packages/shorebird_code_push_protocol/** | |
shorebird_code_push_client: | |
- ./.github/codecov.yml | |
- ./.github/workflows/main.yaml | |
- ./.github/actions/dart_package/action.yaml | |
- packages/shorebird_code_push_client/** | |
- packages/shorebird_code_push_protocol/** | |
shorebird_code_push_protocol: | |
- ./.github/codecov.yml | |
- ./.github/workflows/main.yaml | |
- ./.github/actions/dart_package/action.yaml | |
- packages/shorebird_code_push_protocol/** | |
jwt: | |
- ./.github/codecov.yml | |
- ./.github/workflows/main.yaml | |
- ./.github/actions/dart_package/action.yaml | |
- packages/jwt/** | |
scoped_deps: | |
- ./.github/codecov.yml | |
- ./.github/workflows/main.yaml | |
- ./.github/actions/dart_package/action.yaml | |
- packages/scoped_deps/** | |
- uses: dorny/paths-filter@v3 | |
name: Redis Detection | |
id: needs_redis_build | |
with: | |
filters: | | |
redis_client: | |
- ./.github/codecov.yml | |
- ./.github/workflows/main.yaml | |
- ./.github/actions/dart_package/action.yaml | |
- packages/redis_client/** | |
- uses: dorny/paths-filter@v3 | |
name: Verify Detection | |
id: needs_verify | |
with: | |
filters: | | |
shorebird_cli: | |
- ./.github/codecov.yml | |
- ./.github/workflows/main.yaml | |
- ./.github/actions/verify_version/action.yaml | |
- packages/shorebird_cli/** | |
shorebird_code_push_client: | |
- ./.github/codecov.yml | |
- ./.github/workflows/main.yaml | |
- ./.github/actions/verify_version/action.yaml | |
- packages/shorebird_code_push_client/** | |
build_dart_packages: | |
needs: changes | |
if: ${{ needs.changes.outputs.needs_dart_build != '[]' }} | |
strategy: | |
matrix: | |
package: ${{ fromJSON(needs.changes.outputs.needs_dart_build) }} | |
runs-on: ubuntu-latest | |
name: 🎯 Build ${{ matrix.package }} | |
steps: | |
- name: 📚 Git Checkout | |
uses: actions/checkout@v4 | |
- name: 🎯 Build ${{ matrix.package }} | |
uses: ./.github/actions/dart_package | |
with: | |
codecov_token: ${{ secrets.CODECOV_TOKEN }} | |
working_directory: packages/${{ matrix.package }} | |
build_cross_platform_dart_packages: | |
needs: changes | |
if: ${{ needs.changes.outputs.needs_cross_platform_dart_build != '[]' }} | |
strategy: | |
matrix: | |
os: [macos-latest, windows-latest, ubuntu-latest] | |
package: ${{ fromJSON(needs.changes.outputs.needs_cross_platform_dart_build) }} | |
runs-on: ${{ matrix.os }} | |
name: 🎯 Build ${{ matrix.package }} (${{ matrix.os }}) | |
steps: | |
- name: 📚 Git Checkout | |
uses: actions/checkout@v4 | |
- name: 🎯 Build ${{ matrix.package }} | |
uses: ./.github/actions/dart_package | |
with: | |
codecov_token: ${{ secrets.CODECOV_TOKEN }} | |
working_directory: packages/${{ matrix.package }} | |
build_redis: | |
needs: changes | |
if: ${{ needs.changes.outputs.needs_redis_build != '[]' }} | |
permissions: write-all | |
strategy: | |
matrix: | |
package: ${{ fromJSON(needs.changes.outputs.needs_redis_build) }} | |
runs-on: ubuntu-latest | |
name: 🎯 Build ${{ matrix.package }} | |
steps: | |
- name: 📚 Git Checkout | |
uses: actions/checkout@v4 | |
- name: 🐳 Run Redis | |
run: | | |
docker pull redis/redis-stack-server:latest | |
docker run --name test_redis -d -p 6379:6379 --rm -e REDIS_ARGS="--requirepass password" redis/redis-stack-server:latest | |
- name: 🎯 Build ${{ matrix.package }} | |
uses: ./.github/actions/dart_package | |
with: | |
codecov_token: ${{ secrets.CODECOV_TOKEN }} | |
working_directory: packages/${{ matrix.package }} | |
verify_packages: | |
needs: changes | |
if: ${{ needs.changes.outputs.needs_verify != '[]' }} | |
strategy: | |
matrix: | |
package: ${{ fromJSON(needs.changes.outputs.needs_verify) }} | |
runs-on: ubuntu-latest | |
name: 🔎 Verify ${{ matrix.package }} | |
steps: | |
- name: 📚 Git Checkout | |
uses: actions/checkout@v4 | |
- name: 🔎 Verify ${{ matrix.package }} | |
uses: ./.github/actions/verify_version | |
with: | |
working_directory: packages/${{ matrix.package }} | |
ci: | |
needs: | |
[ | |
semantic_pull_request, | |
build_cross_platform_dart_packages, | |
build_dart_packages, | |
build_redis, | |
verify_packages, | |
] | |
if: ${{ always() }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: ⛔️ exit(1) on failure | |
if: ${{ contains(join(needs.*.result, ','), 'failure') }} | |
run: exit 1 |