[WIP] .github: workflows: Use buildah #52
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: | |
- 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 }} |