Skip to content

Merge pull request #432 from TheYoctoJester/qemuarm64_runqemu #3

Merge pull request #432 from TheYoctoJester/qemuarm64_runqemu

Merge pull request #432 from TheYoctoJester/qemuarm64_runqemu #3

name: build_validation
on:
workflow_dispatch:
push:
schedule:
# * is a special character in YAML so you have to quote this string
- cron: '5 2 * * 6'
env:
BUILDDIR: validation
jobs:
prepare:
runs-on: [self-hosted, linux, x64, builder]
outputs:
artifact_path: ${{ steps.artifact_path.outputs.artifact_path }}
artifact_latest: ${{ steps.artifact_latest.outputs.artifact_latest }}
steps:
- name: Clean up
run: rm -fR $BUILDDIR
- uses: actions/checkout@v4
- id: artifact_path
name: generate artifact output directory name
run: echo "artifact_path=${{ vars.ARTIFACT_OUTPUT_DIR }}/$GITHUB_REPOSITORY/$GITHUB_REF_NAME/$GITHUB_WORKFLOW/$GITHUB_RUN_NUMBER-$GITHUB_RUN_ATTEMPT" >> $GITHUB_OUTPUT
- id: artifact_latest
name: generate latest artifact symlink name
run: echo "artifact_latest=${{ vars.ARTIFACT_OUTPUT_DIR }}/$GITHUB_REPOSITORY/$GITHUB_REF_NAME/$GITHUB_WORKFLOW/latest" >> $GITHUB_OUTPUT
build:
needs: [prepare]
strategy:
fail-fast: false
matrix:
board: [
beaglebone,
beaglebone-uboot,
raspberrypi3,
raspberrypi3-64,
raspberrypi4,
raspberrypi4-64,
raspberrypi5,
]
subpath: [.]
runs-on: [self-hosted, linux, x64, builder]
container:
# the container image needs to be effectively hardcoded, it seems.
image: ghcr.io/theyoctojester/devcontainer-base-yoep:main
volumes:
- ${{ vars.PERSISTENT_DIR }}/downloads:${{ vars.BUILD_DL_DIR }}
- ${{ vars.PERSISTENT_DIR }}/sstate-cache:${{ vars.BUILD_SSTATE_DIR }}
- ${{ vars.PERSISTENT_DIR }}/layers:${{ vars.BUILD_LAYERCACHE_DIR }}
- ${{ vars.PERSISTENT_DIR }}/assets:${{ vars.BUILD_ASSETS_DIR }}
options: --user ${{ vars.KAS_UID }}:${{ vars.KAS_GID }}
steps:
- name: enter build dir and build
env:
DL_DIR: ${{ vars.BUILD_DL_DIR}}
SSTATE_DIR: ${{ vars.BUILD_SSTATE_DIR}}
KAS_REPO_REF_DIR: ${{ vars.BUILD_LAYERCACHE_DIR}}
run: >
mkdir -p $BUILDDIR/${{ matrix.board }} &&
cd $BUILDDIR/${{ matrix.board }} &&
kas checkout ../../kas/${{ matrix.subpath }}/${{ matrix.board }}.yml &&
if [ -f "${{ vars.BUILD_ASSETS_DIR }}/site.conf" ]; then
cp ${{ vars.BUILD_ASSETS_DIR }}/site.conf build/conf/site.conf;
fi &&
kas build ../../kas/${{ matrix.subpath }}/${{ matrix.board }}.yml:../../kas/include/validation.yml
collect:
needs: [prepare, build]
runs-on: [self-hosted, linux, x64, builder]
steps:
- name: collect artifacts
env:
ARTIFACT_PATH: ${{ needs.prepare.outputs.artifact_path }}
run: ./ci/collect_artifacts.sh
- name: mark latest
run: >
rm -fR ${{ needs.prepare.outputs.artifact_latest }};
echo "using artifact path ${{ needs.prepare.outputs.artifact_path }}, latest ${{ needs.prepare.outputs.artifact_latest }}" &&
ln -s ${{ needs.prepare.outputs.artifact_path }} ${{ needs.prepare.outputs.artifact_latest }}