Skip to content

Add build-each-platform job to build different platforms #1138

Add build-each-platform job to build different platforms

Add build-each-platform job to build different platforms #1138

Workflow file for this run

---
name: "Build"
on:
push:
branches:
- '**'
pull_request:
release:
types:
- edited
- published
schedule:
- cron: '0 10 * * *' # everyday at 10am
workflow_dispatch:
permissions:
actions: read
contents: read
jobs:
diagnostics:
name: "Diagnostics"
uses: ./.github/workflows/diagnostics.yml
config:
name: "Config"
uses: ./.github/workflows/_config.yml
metadata:
name: "Metadata"
needs: [config]
uses: ./.github/workflows/docker-metadata.yml
with:
image_name: ${{ needs.config.outputs.image_name }}
lint:
name: "Lint"
needs:
- config
uses: ./.github/workflows/common-lint.yml
build-image-for-testing:
name: "Build image for testing"
needs:
- config
- lint
- metadata
uses: ./.github/workflows/docker-build-image.yml
with:
artifact_name: ${{ needs.config.outputs.image_archive_artifact_name }}
cache_from_scopes: ${{ needs.config.outputs.test_platform }}
cache_to_scope: ${{ needs.config.outputs.test_platform }}
image_archive_name_stem: ${{ needs.config.outputs.test_platform }}
image_labels: ${{ needs.metadata.outputs.image_labels }}
platforms: ${{ needs.config.outputs.test_platform }}
test-image:
name: "Test image"
needs:
- build-image-for-testing
- config
uses: ./.github/workflows/docker-pytest-image.yml
with:
data_artifact_name: ${{ needs.config.outputs.data_artifact_name }}
image_artifact_name: ${{ needs.config.outputs.image_archive_artifact_name }}
image_archive_name: ${{ needs.build-image-for-testing.outputs.image_archive_name }}
build-each-platform:
name: "Build platform"
needs:
- config
- lint
- metadata
- test-image
if: github.event_name != 'pull_request'
strategy:
matrix:
platform: ${{ fromJson(needs.config.outputs.platforms_json) }}
exclude:
- platform: ${{ needs.config.outputs.test_platform }}
uses: ./.github/workflows/docker-build-image.yml
with:
artifact_name: ${{ needs.config.outputs.image_archive_artifact_name }}
cache_from_scopes: ${{ matrix.platform }}
cache_to_scope: ${{ matrix.platform }}
image_labels: ${{ needs.metadata.outputs.image_labels }}
image_archive_name_stem: ${{ matrix.platform }}
platforms: ${{ matrix.platform }}