Skip to content

.github/workflows: add beaglebone build and switch rpi to forrest runner #44

.github/workflows: add beaglebone build and switch rpi to forrest runner

.github/workflows: add beaglebone build and switch rpi to forrest runner #44

name: build meta-rauc-raspberrypi
on:
push:
branches:
- master
paths:
- '.github/workflows/meta-rauc-raspberrypi.yml'
- 'meta-rauc-raspberrypi/**'
pull_request:
branches:
- master
paths:
- '.github/workflows/meta-rauc-raspberrypi.yml'
- 'meta-rauc-raspberrypi/**'
# allow rebuilding without a push
workflow_dispatch: {}
jobs:
build:
name: meta-rauc-raspberrypi Build
# run on self-hosted runner for the main repo or if vars.BUILD_RUNS_ON is set
runs-on: >-
${{
(vars.BUILD_RUNS_ON != '' && fromJSON(vars.BUILD_RUNS_ON)) ||
(github.repository == 'rauc/meta-rauc-community' && fromJSON('["self-hosted", "forrest", "build"]')) ||
'ubuntu-20.04'
}}
steps:
- name: Install required packages
run: |
sudo apt-get -q -y --no-install-recommends install diffstat tree
- name: Checkout
uses: actions/checkout@v4
- name: Clone poky
run: git clone --shared --reference-if-able /srv/shared-git/poky.git -b master https://github.com/yoctoproject/poky.git
- name: Clone meta-rauc
run: git clone --shared --reference-if-able /srv/shared-git/meta-rauc.git -b master https://github.com/rauc/meta-rauc.git
- name: Clone meta-raspberrypi
run: git clone --shared --reference-if-able /srv/shared-git/meta-raspberrypi.git -b master https://github.com/agherzan/meta-raspberrypi.git
- name: Initialize build directory
run: |
source poky/oe-init-build-env build
bitbake-layers add-layer ../meta-rauc
bitbake-layers add-layer ../meta-raspberrypi
bitbake-layers add-layer ../meta-rauc-raspberrypi
if [ -f ~/.yocto/auto.conf ]; then
cp ~/.yocto/auto.conf conf/
echo 'SOURCE_MIRROR_URL = "http://10.0.2.2/rauc-community/downloads"' >> conf/auto.conf
else
echo 'SSTATE_MIRRORS = "file://.* https://github-runner.pengutronix.de/rauc-community/sstate-cache/PATH"' >> conf/auto.conf
echo 'BB_SIGNATURE_HANDLER = "OEBasicHash"' >> conf/auto.conf
echo 'BB_HASHSERVE = ""' >> conf/auto.conf
echo 'OPKGBUILDCMD = "opkg-build -Z gzip -a -1n"' >> conf/auto.conf
echo 'INHERIT += "rm_work"' >> conf/auto.conf
fi
echo 'DISTRO_FEATURES:remove = "alsa bluetooth usbgadget usbhost wifi nfs zeroconf pci 3g nfc x11 opengl ptest wayland vulkan"' >> conf/local.conf
echo 'MACHINE = "raspberrypi4"' >> conf/local.conf
echo 'DISTRO_FEATURES:append = " rauc"' >> conf/local.conf
echo 'IMAGE_INSTALL:append = " rauc"' >> conf/local.conf
echo 'IMAGE_FSTYPES = "ext4 wic.zst"' >> conf/local.conf
echo 'WKS_FILE = "sdimage-dual-raspberrypi.wks.in"' >> conf/local.conf
- name: Show configuration files
run: |
cd build/conf
rgrep . *.conf
- name: Test bitbake parsing
run: |
source poky/oe-init-build-env build
bitbake -p
- name: Build rauc, rauc-native
run: |
source poky/oe-init-build-env build
bitbake rauc rauc-native
- name: Build core-image-minimal
run: |
source poky/oe-init-build-env build
bitbake core-image-minimal
- name: Build RAUC Bundle
run: |
source poky/oe-init-build-env build
bitbake update-bundle
- name: Cache Data
env:
CACHE_KEY: ${{ secrets.YOCTO_CACHE_KEY }}
if: ${{ env.CACHE_KEY }}
run: |
mkdir -p ~/.ssh
echo "$CACHE_KEY" >> ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
rsync -rvx --ignore-existing build/downloads rauc-community-cache: || true
rsync -rvx --ignore-existing build/sstate-cache rauc-community-cache: || true
- name: Show Artifacts
run: |
source poky/oe-init-build-env build
tree --du -h tmp/deploy/images || true
- name: Upload Artifacts
uses: jluebbe/forrest-upload-artifact@summary
with:
path: |
build/tmp/deploy/images/raspberrypi4/core-image-minimal-raspberrypi4.rootfs.ext4
build/tmp/deploy/images/raspberrypi4/core-image-minimal-raspberrypi4.rootfs.manifest
build/tmp/deploy/images/raspberrypi4/core-image-minimal-raspberrypi4.rootfs.spdx.json
build/tmp/deploy/images/raspberrypi4/core-image-minimal-raspberrypi4.rootfs.testdata.json
build/tmp/deploy/images/raspberrypi4/update-bundle-raspberrypi4.raucb