[Backport styhead-next] 2024-10-18_01-35-23_master-next_python3-boto3 #20
Workflow file for this run
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: build-test-recipe | |
on: | |
workflow_dispatch: | |
pull_request: | |
paths: | |
- '**.bb' | |
- '**.inc' | |
jobs: | |
changed-recipes: | |
name: Get changed recipes | |
runs-on: ubuntu-latest | |
outputs: | |
recipes: ${{ steps.diff.outputs.recipes }} | |
release: ${{ steps.get-yocto-release-name.outputs.release }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Diff files and set variables | |
id: diff | |
run: | | |
# See https://github.community/t/check-pushed-file-changes-with-git-diff-tree-in-github-actions/17220/10 | |
if [ $GITHUB_BASE_REF ]; then | |
# Pull Request | |
git fetch origin $GITHUB_BASE_REF --depth=1 | |
export DIFF=$( git diff --name-only origin/$GITHUB_BASE_REF $GITHUB_SHA ) | |
echo "Diff between origin/$GITHUB_BASE_REF and $GITHUB_SHA" | |
else | |
# Push | |
git fetch origin ${{ github.event.before }} --depth=1 | |
export DIFF=$( git diff --name-only ${{ github.event.before }} $GITHUB_SHA ) | |
echo "Diff between ${{ github.event.before }} and $GITHUB_SHA" | |
fi | |
echo "$DIFF" | |
echo "diff=$( echo "$DIFF" | tr -d '\n' )" >> $GITHUB_OUTPUT | |
# Get recipe names | |
export RECIPES=$( echo "$DIFF" | sed 's!.*/!!' | sed 's!.bb!!' | sed 's!_.*!!' | sort | uniq | sed -z $'s/\\\n/ /g') | |
if [ -z "$DIFF" ]; then | |
echo "No changed recipes, adding everything with a ptest to test, build" | |
THINGS_TO_EXCLUDE="! -name aws-lc* ! -name neo-ai-tv* ! -name corretto-17-bin* ! -name corretto-21-bin* ! -name corretto-8-bin* ! -name firecracker-bin* ! -name jailer-bin* ! -name amazon-kvs-producer-sdk-c* ! -name aws-cli-v2*" | |
RECIPES=$(find . -name *.bb -type f \( ${THINGS_TO_EXCLUDE} \) -print | xargs grep -l 'inherit.*ptest.*'| sed 's!.*/!!' | sed 's!.bb!!' | sed 's!_.*!!' | sort | uniq | sed -z $'s/\\\n/ /g') | |
else | |
echo "Changed recipes" | |
fi | |
echo "$RECIPES" | |
echo "recipes=$( echo "$RECIPES" | tr -d '\n' )" >> $GITHUB_OUTPUT | |
- name: get yocto release name | |
id: get-yocto-release-name | |
run: | | |
RELEASE=$(echo ${{github.event.pull_request.base.ref}} | cut -d- -f1) | |
# this is deprecated, but replacement does not seem to work now? | |
echo "$RELEASE" | |
echo "release=${RELEASE:-master}" >> $GITHUB_OUTPUT | |
build-test: | |
name: Build, Test ${{ matrix.machine }} ${{ needs.changed-recipes.outputs.release }} | |
needs: changed-recipes | |
strategy: | |
fail-fast: false | |
matrix: | |
machine: | |
- qemuarm | |
- qemuarm64 | |
- qemux86-64 | |
runs-on: codebuild-${{ vars.CODEBUILD_RUNNER_NAME }}-${{ github.run_id }}-${{ github.run_attempt }} | |
steps: | |
- name: Checkout meta-aws | |
uses: actions/checkout@v4 | |
with: | |
path: ${{ github.workspace }}/meta-aws | |
- name: Checkout meta-oe | |
uses: actions/checkout@v4 | |
with: | |
repository: openembedded/meta-openembedded | |
path: ${{ github.workspace }}/meta-openembedded | |
ref: ${{ needs.changed-recipes.outputs.release }} | |
- name: Checkout poky | |
run: | | |
git clone git://git.yoctoproject.org/poky --single-branch ${{ github.workspace }}/poky -b ${{ needs.changed-recipes.outputs.release }} | |
- name: Run build | |
run: | | |
chown yoctouser /sstate-cache | |
chown yoctouser /downloads | |
chown -R yoctouser . | |
sysctl vm.mmap_min_addr=65536 | |
sudo -u yoctouser bash -c ' | |
cd ${{ github.workspace }} | |
source poky/oe-init-build-env build | |
echo QEMU_USE_KVM = \"\" >> conf/local.conf | |
# set to the same as core-image-ptest | |
echo QB_MEM = \"-m 1024\" >> conf/local.conf | |
# use slirp networking instead of TAP interface (require root rights) | |
echo QEMU_USE_SLIRP = \"1\" >> conf/local.conf | |
echo TEST_RUNQEMUPARAMS += \"slirp\" >> conf/local.conf | |
echo TEST_SERVER_IP = \"127.0.0.1\" >> conf/local.conf | |
echo DISTRO_FEATURES += \"ptest\" >> conf/local.conf | |
# this will specify what test should run when running testimage cmd - oeqa layer tests + ptests: | |
# Ping and SSH are not required, but do help in debugging. ptest will discover all ptest packages. | |
echo TEST_SUITES = \" ping ssh ptest\" >> conf/local.conf | |
# this will allow - running testimage cmd: bitbake core-image-minimal -c testimage | |
echo IMAGE_CLASSES += \"testimage\" >> conf/local.conf | |
bitbake-layers add-layer ../meta-openembedded/meta-oe | |
bitbake-layers add-layer ../meta-openembedded/meta-python | |
bitbake-layers add-layer ../meta-openembedded/meta-networking | |
bitbake-layers add-layer ../meta-openembedded/meta-multimedia | |
bitbake-layers add-layer ../meta-aws | |
export SSTATE_DIR=/sstate-cache | |
export DL_DIR=/downloads | |
export MACHINE=${{ matrix.machine }} | |
export BB_ENV_PASSTHROUGH_ADDITIONS="$BB_ENV_PASSTHROUGH_ADDITIONS SSTATE_DIR DL_DIR" | |
bitbake ${{ needs.changed-recipes.outputs.recipes }} -k | tee -a $MACHINE-build.log | |
test -e $MACHINE-build.log && ! grep -A3 " failed" $MACHINE-build.log | |
test -e $MACHINE-build.log && ! grep -A3 " ERROR:" $MACHINE-build.log' | |
- name: Save ${{ matrix.machine }}-build.log | |
if: '!cancelled()' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.machine }}-build.log | |
path: build/${{ matrix.machine }}-build.log | |
- name: Run test | |
run: | | |
sudo -u yoctouser bash -c ' | |
cd ${{ github.workspace }} | |
source poky/oe-init-build-env build | |
# PUT = package under test | |
for recipe in ${{ needs.changed-recipes.outputs.recipes }}; do PUT+="${recipe}-ptest "; done | |
echo IMAGE_INSTALL:append = \" ptest-runner ssh ${PUT}\" >> conf/local.conf | |
export SSTATE_DIR=/sstate-cache | |
export DL_DIR=/downloads | |
export MACHINE=${{ matrix.machine }} | |
export BB_ENV_PASSTHROUGH_ADDITIONS="$BB_ENV_PASSTHROUGH_ADDITIONS SSTATE_DIR DL_DIR" | |
bitbake core-image-minimal | |
bitbake core-image-minimal -c testimage | |
resulttool log tmp/log/oeqa/testresults.json --raw-ptest | |
resulttool report tmp/log/oeqa/testresults.json | tee -a ${{ matrix.machine }}-resulttool_report.txt | |
test -e tmp/log/oeqa/testresults.json && ! grep -B3 "\"FAILED\"" tmp/log/oeqa/testresults.json' | |
- name: Save resulttool_report.txt | |
if: '!cancelled()' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.machine }}-resulttool_report.txt | |
path: build/${{ matrix.machine }}-resulttool_report.txt |