[WIP] .github: workflows: Use buildah #62
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 build environment | |
run: | | |
# Install Podman. | |
dnf -y install podman | |
# Set XDG_RUNTIME_DIR to ensure that Podman correctly resolves temporary | |
# directory path. | |
export XDG_RUNTIME_DIR="/tmp/users/$(id -u)" | |
echo "XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR" >> $GITHUB_ENV | |
# Use VFS storage driver because FUSE is not available inside | |
# unprivileged runner containers. | |
sed -i 's/driver = .*/driver = "vfs"/' /etc/containers/storage.conf | |
# - name: Login to DockerHub | |
# if: ${{ github.event_name != 'pull_request' }} | |
# run: | | |
# buildah login -v \ | |
# docker.io \ | |
# -u ${{ secrets.DOCKERHUB_USERNAME }} \ | |
# -p ${{ secrets.DOCKERHUB_TOKEN }} | |
# - name: Login to GitHub Container Registry | |
# if: ${{ github.event_name != 'pull_request' }} | |
# run: | | |
# buildah login -v \ | |
# ghcr.io \ | |
# -u ${{ github.repository_owner }} \ | |
# -p ${{ secrets.GITHUB_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 | |
if: ${{ github.event_name != 'pull_request' }} | |
id: meta_ci_base | |
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 metadata for CI image | |
if: ${{ github.event_name != 'pull_request' }} | |
id: meta_ci | |
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 metadata for Developer image | |
if: ${{ github.event_name != 'pull_request' }} | |
id: meta_developer | |
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 image | |
uses: redhat-actions/buildah-build@v2 | |
with: | |
context: . | |
containerfiles: Dockerfile.base | |
tags: ${{ steps.meta_ci_base.outputs.tags }} | |
labels: ${{ steps.meta_ci_base.outputs.labels }} | |
# - 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: Push base image | |
uses: redhat-actions/push-to-registry@v2 | |
with: | |
tags: ${{ steps.meta_ci_base.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 }} |