Skip to content

[WIP] .github: workflows: Use buildah #52

[WIP] .github: workflows: Use buildah

[WIP] .github: workflows: Use buildah #52

Workflow file for this run

name: CI
on:
push:
branches:
- testing-main
- v*-branch
tags:
- v*
pull_request:
branches:
- testing-main
- v*-branch
permissions:
packages: write
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
jobs:
build:
name: Build (${{ matrix.variant.platform }})
runs-on:
group: ${{ matrix.variant.builder }}
container:
image: quay.io/buildah/stable:v1.35.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: Checkout
uses: actions/checkout@v3
- name: Set up container build environment
run: |
# CONF_DIR="$HOME/.config/containers"
# mkdir -p $CONF_DIR
# Use VFS storage driver because FUSE is not available inside
# unprivileged runner containers.
sed -i 's/drivers = .*/drivers = "vfs"/' /etc/containers/storage.conf
# - name: Set up buildah
# run: |
# # Add subuids and subgids to runner user for rootless operation.
# sudo usermod \
# --add-subuids 100000-165535 \
# --add-subgids 100000-165535 \
# $(whoami)
# # Install buildah package.
# sudo apt-get -y update
# sudo apt-get -y install buildah
# - name: DEBUG
# run: |
# sudo cat /etc/subuid
# sudo cat /etc/subgid
# - name: Generate local metadata for base image
# id: meta_ci_base
# uses: docker/metadata-action@v4
# with:
# images: |
# localhost:5000/zephyrproject-rtos/ci-base-testing
# - name: Generate local metadata for CI image
# id: meta_ci
# uses: docker/metadata-action@v4
# with:
# images: |
# localhost:5000/zephyrproject-rtos/ci-testing
# - name: Generate local metadata for Developer image
# id: meta_developer
# uses: docker/metadata-action@v4
# with:
# images: |
# localhost:5000/zephyrproject-rtos/zephyr-build-testing
- name: Generate push metadata for base image
if: ${{ github.event_name != 'pull_request' }}
id: meta_ci_base_push
uses: docker/metadata-action@v4
with:
images: |
docker.io/zephyrprojectrtos/ci-base-testing
ghcr.io/zephyrproject-rtos/ci-base-testing
flavor: |
latest=false
suffix=-${{ matrix.variant.arch }}
tags: |
type=ref,event=branch
type=ref,event=tag
- name: Generate push metadata for CI image
if: ${{ github.event_name != 'pull_request' }}
id: meta_ci_push
uses: docker/metadata-action@v4
with:
images: |
docker.io/zephyrprojectrtos/ci-testing
ghcr.io/zephyrproject-rtos/ci-testing
flavor: |
latest=false
suffix=-${{ matrix.variant.arch }}
tags: |
type=ref,event=branch
type=ref,event=tag
- name: Generate push metadata for Developer image
if: ${{ github.event_name != 'pull_request' }}
id: meta_developer_push
uses: docker/metadata-action@v4
with:
images: |
docker.io/zephyrprojectrtos/zephyr-build-testing
ghcr.io/zephyrproject-rtos/zephyr-build-testing
flavor: |
latest=false
suffix=-${{ matrix.variant.arch }}
tags: |
type=ref,event=branch
type=ref,event=tag
# - name: Build base docker image
# uses: docker/build-push-action@v3
# with:
# context: .
# file: Dockerfile.base
# platforms: ${{ matrix.variant.platform }}
# push: true
# tags: ${{ steps.meta_ci_base.outputs.tags }}
# labels: ${{ steps.meta_ci_base.outputs.labels }}
- name: Build base image
uses: redhat-actions/buildah-build@v2
with:
context: .
containerfiles: Dockerfile.base
tags: ${{ steps.meta_ci_base_push.outputs.tags }}
labels: ${{ steps.meta_ci_base_push.outputs.labels }}
# extra-args: |
# --storage-driver vfs
# - name: Build CI docker image
# uses: docker/build-push-action@v3
# with:
# context: .
# file: Dockerfile.ci
# platforms: ${{ matrix.variant.platform }}
# push: true
# tags: ${{ steps.meta_ci.outputs.tags }}
# labels: ${{ steps.meta_ci.outputs.labels }}
# build-args: |
# BASE_IMAGE=localhost:5000/zephyrproject-rtos/ci-base-testing:${{ steps.meta_ci_base.outputs.version }}
# - name: Build Developer docker image
# uses: docker/build-push-action@v3
# with:
# context: .
# file: Dockerfile.devel
# platforms: ${{ matrix.variant.platform }}
# push: true
# tags: ${{ steps.meta_developer.outputs.tags }}
# labels: ${{ steps.meta_developer.outputs.labels }}
# build-args: |
# BASE_IMAGE=localhost:5000/zephyrproject-rtos/ci-testing:${{ steps.meta_ci.outputs.version }}
# - name: Login to DockerHub
# if: ${{ github.event_name != 'pull_request' }}
# uses: docker/login-action@v2
# with:
# registry: docker.io
# username: ${{ secrets.DOCKERHUB_USERNAME }}
# password: ${{ secrets.DOCKERHUB_TOKEN }}
# - name: Login to GitHub Container Registry
# if: ${{ github.event_name != 'pull_request' }}
# uses: docker/login-action@v2
# with:
# registry: ghcr.io
# username: ${{ github.repository_owner }}
# password: ${{ secrets.GITHUB_TOKEN }}
# - name: Push base docker image
# if: ${{ github.event_name != 'pull_request' }}
# uses: stephanosio/[email protected]
# with:
# src: localhost:5000/zephyrproject-rtos/ci-base-testing:${{ steps.meta_ci_base.outputs.version }}
# dst: ${{ steps.meta_ci_base_push.outputs.tags }}
# - name: Push CI docker image
# if: ${{ github.event_name != 'pull_request' }}
# uses: stephanosio/[email protected]
# with:
# src: localhost:5000/zephyrproject-rtos/ci-testing:${{ steps.meta_ci.outputs.version }}
# dst: ${{ steps.meta_ci_push.outputs.tags }}
# - name: Push Developer docker image
# if: ${{ github.event_name != 'pull_request' }}
# uses: stephanosio/[email protected]
# with:
# src: localhost:5000/zephyrproject-rtos/zephyr-build-testing:${{ steps.meta_developer.outputs.version }}
# dst: ${{ steps.meta_developer_push.outputs.tags }}
# merge:
# name: Merge
# runs-on:
# group: zephyr-runner-v2-linux-x64-4xlarge
# needs: build
# if: ${{ github.event_name != 'pull_request' }}
# steps:
# - name: Login to DockerHub
# uses: docker/login-action@v2
# with:
# registry: docker.io
# username: ${{ secrets.DOCKERHUB_USERNAME }}
# password: ${{ secrets.DOCKERHUB_TOKEN }}
# - name: Login to GitHub Container Registry
# uses: docker/login-action@v2
# with:
# registry: ghcr.io
# username: ${{ github.repository_owner }}
# password: ${{ secrets.GITHUB_TOKEN }}
# - name: Generate push metadata for base docker image
# id: meta_ci_base_push
# uses: docker/metadata-action@v4
# with:
# images: |
# docker.io/zephyrprojectrtos/ci-base-testing
# ghcr.io/zephyrproject-rtos/ci-base-testing
# flavor: |
# latest=false
# tags: |
# type=ref,event=branch
# type=ref,event=tag
# type=raw,value=latest,enable={{is_default_branch}}
# - name: Generate push metadata for CI image
# id: meta_ci_push
# uses: docker/metadata-action@v4
# with:
# images: |
# docker.io/zephyrprojectrtos/ci-testing
# ghcr.io/zephyrproject-rtos/ci-testing
# flavor: |
# latest=false
# tags: |
# type=ref,event=branch
# type=ref,event=tag
# type=raw,value=latest,enable={{is_default_branch}}
# - name: Generate push metadata for Developer image
# id: meta_developer_push
# uses: docker/metadata-action@v4
# with:
# images: |
# docker.io/zephyrprojectrtos/zephyr-build-testing
# ghcr.io/zephyrproject-rtos/zephyr-build-testing
# 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)
# ci_base_image="ghcr.io/zephyrproject-rtos/ci-base-testing:${{ steps.meta_ci_base_push.outputs.version }}"
# ci_image="ghcr.io/zephyrproject-rtos/ci-testing:${{ steps.meta_ci_push.outputs.version }}"
# developer_image="ghcr.io/zephyrproject-rtos/zephyr-build-testing:${{ steps.meta_developer_push.outputs.version }}"
# # Pull architecture-specific images
# for arch in ${archs[@]}; do
# docker pull ${ci_base_image}-${arch}
# docker pull ${ci_image}-${arch}
# docker pull ${developer_image}-${arch}
# done
# # Create multi-architecture image
# for arch in ${archs[@]}; do
# ci_base_image_amend_flags+="--amend ${ci_base_image}-${arch} "
# ci_image_amend_flags+="--amend ${ci_image}-${arch} "
# developer_image_amend_flags+="--amend ${developer_image}-${arch} "
# done
# docker manifest create ${ci_base_image} ${ci_base_image_amend_flags}
# docker manifest create ${ci_image} ${ci_image_amend_flags}
# docker manifest create ${developer_image} ${developer_image_amend_flags}
# docker manifest push ${ci_base_image}
# docker manifest push ${ci_image}
# docker manifest push ${developer_image}
# - name: Push base docker image
# uses: stephanosio/[email protected]
# with:
# src: ghcr.io/zephyrproject-rtos/ci-base-testing:${{ steps.meta_ci_base_push.outputs.version }}
# dst: ${{ steps.meta_ci_base_push.outputs.tags }}
# - name: Push CI docker image
# uses: stephanosio/[email protected]
# with:
# src: ghcr.io/zephyrproject-rtos/ci-testing:${{ steps.meta_ci_push.outputs.version }}
# dst: ${{ steps.meta_ci_push.outputs.tags }}
# - name: Push Developer docker image
# uses: stephanosio/[email protected]
# with:
# src: ghcr.io/zephyrproject-rtos/zephyr-build-testing:${{ steps.meta_developer_push.outputs.version }}
# dst: ${{ steps.meta_developer_push.outputs.tags }}