arm-linux #74
This file contains hidden or 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: arm-linux | |
| on: | |
| # Workflow dispatched manually | |
| workflow_dispatch: | |
| # Workflow runs automatically after `arm-windows` | |
| workflow_run: | |
| workflows: [ "arm-windows" ] | |
| types: [ completed ] | |
| permissions: | |
| contents: read | |
| packages: write | |
| jobs: | |
| # The -minimal image can be fetched faster for simple tasks | |
| arm-minimal: | |
| strategy: | |
| matrix: | |
| target: [ arm ] | |
| cfg: | |
| - { version: 9.70.4, lmsc-version: 1.11, lmsc-tag: 123 } | |
| - { version: 9.70.2, lmsc-version: 1.11, lmsc-tag: 123 } | |
| - { version: 9.70.1, lmsc-version: 1.11, lmsc-tag: 123 } | |
| - { version: 9.60.4, lmsc-version: 1.11, lmsc-tag: 123 } | |
| fail-fast: false | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@main | |
| - if: github.event_name != 'pull_request' | |
| uses: docker/login-action@v4 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.repository_owner }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - uses: docker/build-push-action@v6 | |
| with: | |
| file: ./.github/workflows/linux/Dockerfile-${{ matrix.target }}.minimal | |
| build-args: | | |
| TARGET=${{ matrix.target }} | |
| VERSION=${{ matrix.cfg.version }} | |
| LMSC_VERSION=${{ matrix.cfg.lmsc-version }} | |
| LMSC_TAG=${{ matrix.cfg.lmsc-tag }} | |
| push: ${{ github.event_name != 'pull_request' }} | |
| tags: | | |
| ghcr.io/${{ github.repository_owner }}/${{ matrix.target }}:${{ matrix.cfg.version }}-linux-minimal | |
| # Generate the -base image with the IAR Build tools for Arm. | |
| # It includes: -minimal, `cspybat`, `iarbuild` and `cstat`. | |
| # It does not include: vendor-specific device support | |
| arm-base: | |
| needs: [ arm-minimal ] | |
| strategy: | |
| matrix: | |
| target: [ arm ] | |
| version: [ 9.70.4, 9.70.2, 9.70.1, 9.60.4 ] | |
| fail-fast: false | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@main | |
| - if: github.event_name != 'pull_request' | |
| uses: docker/login-action@v4 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.repository_owner }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - uses: docker/build-push-action@v6 | |
| with: | |
| file: ./.github/workflows/linux/Dockerfile-${{ matrix.target }}.base | |
| build-args: | | |
| TARGET=${{ matrix.target }} | |
| VERSION=${{ matrix.version }} | |
| REGISTRY_REPO=ghcr.io/${{ github.repository_owner }} | |
| push: ${{ github.event_name != 'pull_request' }} | |
| tags: | | |
| ghcr.io/${{ github.repository_owner }}/${{ matrix.target }}:${{ matrix.version }}-linux-base | |
| # Generate variant images with the IAR Build Tools for Arm | |
| # *including* vendor-specific device support | |
| arm-device: | |
| needs: [ arm-base ] | |
| strategy: | |
| matrix: | |
| target: [ arm ] | |
| cfg: | |
| - { version: 9.70.4, timestamp: 20260226111516 } | |
| - { version: 9.70.2, timestamp: 20251103173334 } | |
| - { version: 9.70.1, timestamp: 20250625133953 } | |
| - { version: 9.60.4, timestamp: 20250303090915 } | |
| variant: | |
| - additional | |
| - microchip | |
| - renesas | |
| - nxp | |
| - infineon | |
| - st | |
| - ti | |
| fail-fast: false | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@main | |
| - if: github.event_name != 'pull_request' | |
| uses: docker/login-action@v4 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.repository_owner }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - uses: docker/build-push-action@v6 | |
| with: | |
| file: ./.github/workflows/linux/Dockerfile-${{ matrix.target }}.device | |
| build-args: | | |
| TARGET=${{ matrix.target }} | |
| VERSION=${{ matrix.cfg.version }} | |
| VARIANT=${{ matrix.variant }} | |
| TIMESTAMP=${{ matrix.cfg.timestamp }} | |
| REGISTRY_REPO=ghcr.io/${{ github.repository_owner }} | |
| push: ${{ github.event_name != 'pull_request' }} | |
| tags: ghcr.io/${{ github.repository_owner }}/${{ matrix.target }}:${{ matrix.cfg.version }}-linux-${{ matrix.variant }} | |
| # Regenerate the Docker manifest so that we get the multi-arch image | |
| arm-multi-arch: | |
| needs: [ arm-device ] | |
| strategy: | |
| matrix: | |
| target: [ arm ] | |
| version: [ 9.70.4, 9.70.2, 9.70.1, 9.60.4 ] | |
| registry-repo: [ "ghcr.io/${{ github.repository_owner }}" ] | |
| variant: | |
| - minimal | |
| - base | |
| - additional | |
| - microchip | |
| - renesas | |
| - nxp | |
| - infineon | |
| - st | |
| - ti | |
| fail-fast: false | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - if: github.event_name != 'pull_request' | |
| uses: docker/login-action@v4 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.repository_owner }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - run: | | |
| docker manifest create ${{ matrix.registry-repo }}/${{ matrix.target }}:${{ matrix.version }}-${{ matrix.variant }} \ | |
| ${{ matrix.registry-repo }}/${{ matrix.target }}:${{ matrix.version }}-linux-${{ matrix.variant }} \ | |
| ${{ matrix.registry-repo }}/${{ matrix.target }}:${{ matrix.version }}-windows-2022-${{ matrix.variant }} \ | |
| ${{ matrix.registry-repo }}/${{ matrix.target }}:${{ matrix.version }}-windows-2025-${{ matrix.variant }} | |
| - name: Push the manifest | |
| run: | | |
| docker manifest push ${{ matrix.registry-repo }}/${{ matrix.target }}:${{ matrix.version }}-${{ matrix.variant }} | |
| # Finalize manifest | |
| arm-manifest-finalize: | |
| needs: [ arm-multi-arch ] | |
| strategy: | |
| matrix: | |
| target: [ arm ] | |
| latest: [ 9.70.4 ] | |
| registry-repo: [ "ghcr.io/${{ github.repository_owner }}" ] | |
| fail-fast: false | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - if: github.event_name != 'pull_request' | |
| uses: docker/login-action@v4 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.repository_owner }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Regenerate manifest for latest | |
| run: | | |
| docker manifest create ${{ matrix.registry-repo }}/${{ matrix.target }}:latest \ | |
| ${{ matrix.registry-repo }}/${{ matrix.target }}:${{ matrix.latest }}-linux-base \ | |
| ${{ matrix.registry-repo }}/${{ matrix.target }}:${{ matrix.latest }}-windows-2022-base \ | |
| ${{ matrix.registry-repo }}/${{ matrix.target }}:${{ matrix.latest }}-windows-2025-base | |
| - name: Push the manifest | |
| run: | | |
| docker manifest push ${{ matrix.registry-repo }}/${{ matrix.target }}:latest |