2024 10 21 master next python crt 2 #135
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: | |
jobs: | |
changed: | |
name: Get changed recipes | |
runs-on: ubuntu-latest | |
outputs: | |
recipes: ${{ steps.diff.outputs.recipes }} | |
diff: ${{ steps.diff.outputs.diff }} | |
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 '\n' ' ' )" >> $GITHUB_OUTPUT | |
- name: get yocto release name | |
id: get-yocto-release-name | |
run: | | |
export RELEASE=$(echo ${{github.event.pull_request.base.ref}} | cut -d- -f1) | |
echo "$RELEASE" | |
echo "release=${RELEASE:-master}" >> $GITHUB_OUTPUT | |
build-test: | |
name: Build, Test ${{ matrix.machine }} ${{ needs.changed.outputs.release }} | |
needs: changed | |
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.outputs.release }} | |
- name: Checkout poky | |
run: | | |
git clone git://git.yoctoproject.org/poky --single-branch ${{ github.workspace }}/poky -b ${{ needs.changed.outputs.release }} | |
- name: Get changed Recipes or defaults | |
id: recipes_to_build_test | |
shell: bash | |
run: | | |
echo diff: | |
echo ${{ needs.changed.outputs.diff }} | |
if [ " " == "${{ needs.changed.outputs.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* " | |
if [ ${{ matrix.machine }} == "qemuarm" ]; then | |
THINGS_TO_EXCLUDE+="! -name amazon-kvs-webrtc-sdk*" | |
fi | |
export RECIPES=$(find meta-aws/ -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" | |
export RECIPES=$( echo "${{ needs.changed.outputs.diff }}" | tr ' ' '\n' | grep '\.bb.*$' | sed 's!.*/!!' | sed 's!.bb!!' | sed 's!_.*!!' | sort | uniq | sed -z $'s/\\\n/ /g') | |
fi | |
echo RECIPES to build, test: $RECIPES | |
echo THINGS_TO_EXCLUDE: $THINGS_TO_EXCLUDE | |
echo "recipes=$RECIPES" >> $GITHUB_OUTPUT | |
- name: Run build | |
env: | |
RECIPES: ${{ steps.recipes_to_build_test.outputs.recipes }} | |
run: | | |
echo RECIPES to build: $RECIPES | |
chown yoctouser /sstate-cache | |
chown yoctouser /downloads | |
chown -R yoctouser . | |
sysctl vm.mmap_min_addr=65536 | |
sudo RECIPES="$RECIPES" -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 | |
cat 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 $RECIPES -f -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 | |
echo RECIPES to build: $RECIPES' | |
- 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 | |
env: | |
RECIPES: ${{ steps.recipes_to_build_test.outputs.recipes }} | |
run: | | |
sudo RECIPES="$RECIPES" -u yoctouser bash -c ' | |
cd ${{ github.workspace }} | |
source poky/oe-init-build-env build | |
# PUT = package under test | |
for recipe in $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 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 | |
echo RECIPES to test:$RECIPES ' | |
- 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 |