17e0e3c0cSAndrew Geissler# SPDX-FileCopyrightText: Andrei Gherzan <andrei.gherzan@huawei.com>
27e0e3c0cSAndrew Geissler#
37e0e3c0cSAndrew Geissler# SPDX-License-Identifier: MIT
47e0e3c0cSAndrew Geissler
5db4c27eeSPatrick Williams---
6db4c27eeSPatrick Williams
77e0e3c0cSAndrew Geisslername: Builds
87e0e3c0cSAndrew Geissler
97e0e3c0cSAndrew Geissleron:
107e0e3c0cSAndrew Geissler  pull_request:
117e0e3c0cSAndrew Geissler
127e0e3c0cSAndrew Geisslerjobs:
137e0e3c0cSAndrew Geissler  build:
147e0e3c0cSAndrew Geissler    strategy:
157e0e3c0cSAndrew Geissler      fail-fast: true
167e0e3c0cSAndrew Geissler      matrix:
177e0e3c0cSAndrew Geissler        machine:
187e0e3c0cSAndrew Geissler          - raspberrypi
197e0e3c0cSAndrew Geissler          - raspberrypi0-2w-64
207e0e3c0cSAndrew Geissler          - raspberrypi0-2w
217e0e3c0cSAndrew Geissler          - raspberrypi0
227e0e3c0cSAndrew Geissler          - raspberrypi0-wifi
237e0e3c0cSAndrew Geissler          - raspberrypi2
247e0e3c0cSAndrew Geissler          - raspberrypi3-64
257e0e3c0cSAndrew Geissler          - raspberrypi3
267e0e3c0cSAndrew Geissler          - raspberrypi4-64
277e0e3c0cSAndrew Geissler          - raspberrypi4
28*f52e3ddeSPatrick Williams          - raspberrypi5
297e0e3c0cSAndrew Geissler          - raspberrypi-cm3
307e0e3c0cSAndrew Geissler          - raspberrypi-cm
3187f5cff0SAndrew Geissler          - raspberrypi-armv7
3287f5cff0SAndrew Geissler          - raspberrypi-armv8
3303907ee1SPatrick Williams        image: [rpi-test-image]
347e0e3c0cSAndrew Geissler        distro: [poky]
357e0e3c0cSAndrew Geissler    runs-on: [self-hosted, Linux]
367e0e3c0cSAndrew Geissler    name: ${{ matrix.machine }}/${{ matrix.image }}/poky/systemd
377e0e3c0cSAndrew Geissler    env:
387e0e3c0cSAndrew Geissler      DL_DIR: /var/lib/ci/yocto/downloads
397e0e3c0cSAndrew Geissler      SSTATE_DIR: /var/lib/ci/yocto/sstate
407e0e3c0cSAndrew Geissler    steps:
417e0e3c0cSAndrew Geissler      - name: Checkout the code
427784c429SPatrick Williams        uses: actions/checkout@v3
437e0e3c0cSAndrew Geissler        with:
447e0e3c0cSAndrew Geissler          fetch-depth: 0
45db4c27eeSPatrick Williams      - name: Define Yocto build files
46db4c27eeSPatrick Williams        id: changed-files-specific
47db4c27eeSPatrick Williams        uses: tj-actions/changed-files@v24
48db4c27eeSPatrick Williams        with:
49db4c27eeSPatrick Williams          files: |
50db4c27eeSPatrick Williams            .github/actions/**
51db4c27eeSPatrick Williams            .github/workflows/docker-images/yocto-builder/**
52db4c27eeSPatrick Williams            .github/workflows/docker-images/*.sh
53db4c27eeSPatrick Williams            .github/workflows/yocto-builds.yml
542194f503SPatrick Williams            classes/**
55db4c27eeSPatrick Williams            conf/**
56db4c27eeSPatrick Williams            dynamic-layers/**
57db4c27eeSPatrick Williams            files/**
58db4c27eeSPatrick Williams            lib/**
59db4c27eeSPatrick Williams            recipes-**
60db4c27eeSPatrick Williams            wic/**
617e0e3c0cSAndrew Geissler      - name: Build a temporary yocto-builder image
627e0e3c0cSAndrew Geissler        uses: ./.github/actions/docker-build
637e0e3c0cSAndrew Geissler        with:
647e0e3c0cSAndrew Geissler          docker_image: yocto-builder
657e0e3c0cSAndrew Geissler          id: ${{ github.event.number }}
66db4c27eeSPatrick Williams        if: steps.changed-files-specific.outputs.any_changed == 'true'
677e0e3c0cSAndrew Geissler      - name: Build the image
687e0e3c0cSAndrew Geissler        run: |
697e0e3c0cSAndrew Geissler          docker run --rm \
707e0e3c0cSAndrew Geissler            -v "$GITHUB_WORKSPACE:/work:ro" \
717e0e3c0cSAndrew Geissler            -v "$DL_DIR:$DL_DIR:rw" \
727e0e3c0cSAndrew Geissler            -v "$SSTATE_DIR:$SSTATE_DIR:rw" \
737e0e3c0cSAndrew Geissler            --env "BASE_REF=$GITHUB_BASE_REF" \
747e0e3c0cSAndrew Geissler            --env "MACHINE=${{ matrix.machine }}" \
757e0e3c0cSAndrew Geissler            --env "DISTRO=${{ matrix.distro }}" \
767e0e3c0cSAndrew Geissler            --env "IMAGE=${{ matrix.image }}" \
777e0e3c0cSAndrew Geissler            --env "DL_DIR=$DL_DIR" \
787e0e3c0cSAndrew Geissler            --env "SSTATE_DIR=$SSTATE_DIR" \
797e0e3c0cSAndrew Geissler            "yocto-builder-${{ github.event.number }}" \
807e0e3c0cSAndrew Geissler            /entrypoint-build.sh
81db4c27eeSPatrick Williams        if: steps.changed-files-specific.outputs.any_changed == 'true'
827e0e3c0cSAndrew Geissler      - name: Cleanup temporary docker image
837e0e3c0cSAndrew Geissler        uses: ./.github/actions/docker-clean-image
847e0e3c0cSAndrew Geissler        with:
857e0e3c0cSAndrew Geissler          docker_image: yocto-builder-${{ github.event.number }}
867e0e3c0cSAndrew Geissler        if: always()
877e0e3c0cSAndrew Geissler      - name: Cleanup dangling docker images
887e0e3c0cSAndrew Geissler        uses: ./.github/actions/docker-clean-dangling
897e0e3c0cSAndrew Geissler        if: always()
90