ci: Update to Zephyr SDK 0.17.0 #334
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 | |
on: | |
push: | |
branches: | |
- main | |
- v*-branch | |
tags: | |
- v* | |
pull_request: | |
branches: | |
- main | |
- v*-branch | |
permissions: | |
packages: write | |
concurrency: | |
group: ${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
DOCKERHUB_BASE: docker.io/zephyrprojectrtos | |
GHCR_BASE: ghcr.io/zephyrproject-rtos | |
BASE_IMAGE_NAME: ci-base | |
CI_IMAGE_NAME: ci | |
DEVELOPER_IMAGE_NAME: zephyr-build | |
jobs: | |
build: | |
name: Build (${{ matrix.variant.platform }}) | |
runs-on: | |
group: ${{ matrix.variant.builder }} | |
container: | |
image: ghcr.io/zephyrproject-rtos/image-build:v1.0.0 | |
strategy: | |
fail-fast: true | |
matrix: | |
variant: | |
- platform: linux/amd64 | |
arch: amd64 | |
builder: zephyr-runner-v2-linux-x64-4xlarge | |
- platform: linux/arm64 | |
arch: arm64 | |
builder: zephyr-runner-v2-linux-arm64-4xlarge | |
steps: | |
- name: Configure temporary directory | |
run: | | |
mkdir -p /__w/tmp | |
echo "TMPDIR=/__w/tmp" >> $GITHUB_ENV | |
- name: Configure container storage | |
run: | | |
sed -i 's/graphroot = .*/graphroot = "\/__w\/container_storage"/' /etc/containers/storage.conf | |
mkdir -p /__w/container_storage | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Login to DockerHub | |
if: ${{ github.event_name != 'pull_request' }} | |
uses: redhat-actions/podman-login@v1 | |
with: | |
registry: docker.io | |
username: ${{ vars.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Login to GitHub Container Registry | |
if: ${{ github.event_name != 'pull_request' }} | |
uses: redhat-actions/podman-login@v1 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Generate metadata for base image | |
id: meta_base | |
uses: docker/metadata-action@v5 | |
with: | |
images: | | |
${{ env.DOCKERHUB_BASE }}/${{ env.BASE_IMAGE_NAME }} | |
${{ env.GHCR_BASE }}/${{ env.BASE_IMAGE_NAME }} | |
flavor: | | |
latest=false | |
suffix=-${{ matrix.variant.arch }} | |
tags: | | |
type=ref,event=branch | |
type=ref,event=tag | |
type=ref,event=pr | |
- name: Generate metadata for CI image | |
id: meta_ci | |
uses: docker/metadata-action@v5 | |
with: | |
images: | | |
${{ env.DOCKERHUB_BASE }}/${{ env.CI_IMAGE_NAME }} | |
${{ env.GHCR_BASE }}/${{ env.CI_IMAGE_NAME }} | |
flavor: | | |
latest=false | |
suffix=-${{ matrix.variant.arch }} | |
tags: | | |
type=ref,event=branch | |
type=ref,event=tag | |
type=ref,event=pr | |
- name: Generate metadata for Developer image | |
id: meta_developer | |
uses: docker/metadata-action@v5 | |
with: | |
images: | | |
${{ env.DOCKERHUB_BASE }}/${{ env.DEVELOPER_IMAGE_NAME }} | |
${{ env.GHCR_BASE }}/${{ env.DEVELOPER_IMAGE_NAME }} | |
flavor: | | |
latest=false | |
suffix=-${{ matrix.variant.arch }} | |
tags: | | |
type=ref,event=branch | |
type=ref,event=tag | |
type=ref,event=pr | |
- name: Build base image | |
uses: redhat-actions/buildah-build@v2 | |
with: | |
context: . | |
containerfiles: Dockerfile.base | |
tags: ${{ steps.meta_base.outputs.tags }} | |
labels: ${{ steps.meta_base.outputs.labels }} | |
- name: Build CI image | |
uses: redhat-actions/buildah-build@v2 | |
with: | |
context: . | |
containerfiles: Dockerfile.ci | |
tags: ${{ steps.meta_ci.outputs.tags }} | |
labels: ${{ steps.meta_ci.outputs.labels }} | |
build-args: | | |
BASE_IMAGE=${{ env.GHCR_BASE }}/${{ env.BASE_IMAGE_NAME }}:${{ steps.meta_base.outputs.version }} | |
extra-args: | | |
--pull-never | |
- name: Build Developer image | |
uses: redhat-actions/buildah-build@v2 | |
with: | |
context: . | |
containerfiles: Dockerfile.devel | |
tags: ${{ steps.meta_developer.outputs.tags }} | |
labels: ${{ steps.meta_developer.outputs.labels }} | |
build-args: | | |
BASE_IMAGE=${{ env.GHCR_BASE }}/${{ env.CI_IMAGE_NAME }}:${{ steps.meta_ci.outputs.version }} | |
extra-args: | | |
--pull-never | |
- name: Push base image | |
if: ${{ github.event_name != 'pull_request' }} | |
uses: redhat-actions/push-to-registry@v2 | |
with: | |
tags: ${{ steps.meta_base.outputs.tags }} | |
- name: Push CI image | |
if: ${{ github.event_name != 'pull_request' }} | |
uses: redhat-actions/push-to-registry@v2 | |
with: | |
tags: ${{ steps.meta_ci.outputs.tags }} | |
- name: Push Developer image | |
if: ${{ github.event_name != 'pull_request' }} | |
uses: redhat-actions/push-to-registry@v2 | |
with: | |
tags: ${{ steps.meta_developer.outputs.tags }} | |
merge: | |
name: Merge | |
runs-on: | |
group: zephyr-runner-v2-linux-x64-4xlarge | |
container: | |
image: ghcr.io/zephyrproject-rtos/image-build:v1.0.0 | |
needs: build | |
if: ${{ github.event_name != 'pull_request' }} | |
steps: | |
- name: Configure temporary directory | |
run: | | |
mkdir -p /__w/tmp | |
echo "TMPDIR=/__w/tmp" >> $GITHUB_ENV | |
- name: Configure container storage | |
run: | | |
sed -i 's/graphroot = .*/graphroot = "\/__w\/container_storage"/' /etc/containers/storage.conf | |
mkdir -p /__w/container_storage | |
- name: Login to DockerHub | |
if: ${{ github.event_name != 'pull_request' }} | |
uses: redhat-actions/podman-login@v1 | |
with: | |
registry: docker.io | |
username: ${{ vars.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Login to GitHub Container Registry | |
if: ${{ github.event_name != 'pull_request' }} | |
uses: redhat-actions/podman-login@v1 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Generate metadata for base image | |
id: meta_base | |
uses: docker/metadata-action@v5 | |
with: | |
images: | | |
${{ env.DOCKERHUB_BASE }}/${{ env.BASE_IMAGE_NAME }} | |
${{ env.GHCR_BASE }}/${{ env.BASE_IMAGE_NAME }} | |
flavor: | | |
latest=false | |
tags: | | |
type=ref,event=branch | |
type=ref,event=tag | |
type=raw,value=latest,enable={{is_default_branch}} | |
- name: Generate metadata for CI image | |
id: meta_ci | |
uses: docker/metadata-action@v5 | |
with: | |
images: | | |
${{ env.DOCKERHUB_BASE }}/${{ env.CI_IMAGE_NAME }} | |
${{ env.GHCR_BASE }}/${{ env.CI_IMAGE_NAME }} | |
flavor: | | |
latest=false | |
tags: | | |
type=ref,event=branch | |
type=ref,event=tag | |
type=raw,value=latest,enable={{is_default_branch}} | |
- name: Generate metadata for Developer image | |
id: meta_developer | |
uses: docker/metadata-action@v5 | |
with: | |
images: | | |
${{ env.DOCKERHUB_BASE }}/${{ env.DEVELOPER_IMAGE_NAME }} | |
${{ env.GHCR_BASE }}/${{ env.DEVELOPER_IMAGE_NAME }} | |
flavor: | | |
latest=false | |
tags: | | |
type=ref,event=branch | |
type=ref,event=tag | |
type=raw,value=latest,enable={{is_default_branch}} | |
- name: Create multi-architecture image | |
run: | | |
archs=(amd64 arm64) | |
base_image="${{ env.GHCR_BASE }}/${{ env.BASE_IMAGE_NAME }}:${{ steps.meta_base.outputs.version }}" | |
ci_image="${{ env.GHCR_BASE }}/${{ env.CI_IMAGE_NAME }}:${{ steps.meta_ci.outputs.version }}" | |
developer_image="${{ env.GHCR_BASE }}/${{ env.DEVELOPER_IMAGE_NAME }}:${{ steps.meta_developer.outputs.version }}" | |
base_image_tags="${{ steps.meta_base.outputs.tags }}" | |
ci_image_tags="${{ steps.meta_ci.outputs.tags }}" | |
developer_image_tags="${{ steps.meta_developer.outputs.tags }}" | |
# Pull architecture-specific images. | |
for arch in ${archs[@]}; do | |
podman pull ${base_image}-${arch} | |
podman pull ${ci_image}-${arch} | |
podman pull ${developer_image}-${arch} | |
done | |
# Create multi-architecture images. | |
for arch in ${archs[@]}; do | |
base_image_amend_flags+="--amend ${base_image}-${arch} " | |
ci_image_amend_flags+="--amend ${ci_image}-${arch} " | |
developer_image_amend_flags+="--amend ${developer_image}-${arch} " | |
done | |
podman manifest create ${base_image} ${base_image_amend_flags} | |
podman manifest create ${ci_image} ${ci_image_amend_flags} | |
podman manifest create ${developer_image} ${developer_image_amend_flags} | |
# Create base image tags. | |
for tag in ${base_image_tags}; do | |
podman tag ${base_image} ${tag} | |
done | |
# Create CI image tags. | |
for tag in ${ci_image_tags}; do | |
podman tag ${ci_image} ${tag} | |
done | |
# Create developer image tags. | |
for tag in ${developer_image_tags}; do | |
podman tag ${developer_image} ${tag} | |
done | |
- name: Push base image | |
uses: redhat-actions/push-to-registry@v2 | |
with: | |
tags: ${{ steps.meta_base.outputs.tags }} | |
- name: Push CI image | |
uses: redhat-actions/push-to-registry@v2 | |
with: | |
tags: ${{ steps.meta_ci.outputs.tags }} | |
- name: Push Developer image | |
uses: redhat-actions/push-to-registry@v2 | |
with: | |
tags: ${{ steps.meta_developer.outputs.tags }} |