Skip to content

ci: Update to Zephyr SDK 0.17.0 #334

ci: Update to Zephyr SDK 0.17.0

ci: Update to Zephyr SDK 0.17.0 #334

Workflow file for this run

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 }}