Skip to content

arm-linux

arm-linux #74

Workflow file for this run

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