2024-12-27_01-35-17_master-next_python3-botocore #1190
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: | |
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: | | |
if [ $GITHUB_BASE_REF ]; then | |
# Pull Request | |
# Fetch the base ref | |
git fetch origin ${{ github.base_ref }}:${{ github.base_ref }} | |
# For forks, we need to fetch from the head repository | |
if [ "${{ github.event.pull_request.head.repo.full_name }}" != "${{ github.repository }}" ]; then | |
git remote add fork ${{ github.event.pull_request.head.repo.clone_url }} | |
git fetch fork ${{ github.head_ref }} | |
else | |
git fetch origin ${{ github.head_ref }}:${{ github.head_ref }} | |
fi | |
# Determine the merge base | |
FORK_POINT=$(git merge-base ${{ github.base_ref }} ${{ github.event.pull_request.head.sha }}) | |
LATEST_COMMIT_IN_PR=${{ github.event.pull_request.head.sha }} | |
# Get the diff | |
DIFF=$(git diff --name-only $FORK_POINT $LATEST_COMMIT_IN_PR) | |
echo "Diff between $FORK_POINT and $LATEST_COMMIT_IN_PR" | |
else | |
# Push to a branch | |
BEFORE_SHA=${{ github.event.before }} | |
AFTER_SHA=${{ github.event.after }} | |
DIFF=$(git diff --name-only $BEFORE_SHA $AFTER_SHA) | |
echo "Diff between $BEFORE_SHA and $AFTER_SHA" | |
fi | |
echo "$DIFF" | |
echo "diff=$( echo "$DIFF" | tr '\n' ' ' )" >> $GITHUB_OUTPUT | |
- name: Get Yocto release name | |
id: get-yocto-release-name | |
run: | | |
if [[ "${{ github.event_name }}" == "pull_request" ]]; then | |
RELEASE=$(echo "${{ github.event.pull_request.base.ref }}" | cut -d- -f1) | |
else | |
RELEASE=$(echo "${{ github.ref_name }}" | cut -d- -f1) | |
fi | |
echo "Determined release: $RELEASE" | |
echo "release=${RELEASE}" >> $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 || 'meta-aws' }}-${{ 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 }} | |
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') | |
if [ "" == "$RECIPES" ]; 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* ! -name aws-iot-device-sdk-cpp-v2-samples-fleet-provisoning* " | |
if [ ${{ matrix.machine }} == "qemuarm" ]; then | |
THINGS_TO_EXCLUDE+="! -name amazon-kvs-webrtc-sdk* ! -name amazon-kvs-producer-pic*" | |
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') | |
echo THINGS_TO_EXCLUDE: $THINGS_TO_EXCLUDE | |
fi | |
echo RECIPES to build, test: "$RECIPES" | |
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 | |
echo DISTRO = \"poky-altcfg\" >> 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' | |
set -e | |
echo RECIPES to build: $RECIPES | |
test -e build/${{ matrix.machine }}-build.log && ! grep -A3 " failed" build/${{ matrix.machine }}-build.log | |
test -e build/${{ matrix.machine }}-build.log && ! grep -A3 " ERROR:" build/${{ matrix.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 | |
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' | |
set -e | |
echo RECIPES to test: $RECIPES | |
test -e build/tmp/log/oeqa/testresults.json && ! grep -B3 "\"FAILED\"" build/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 |