# SPDX-FileCopyrightText: Andrei Gherzan <andrei.gherzan@huawei.com>
#
# SPDX-License-Identifier: MIT

---

name: Builds

on:
  pull_request:

jobs:
  build:
    strategy:
      fail-fast: true
      matrix:
        machine:
          - raspberrypi
          - raspberrypi0-2w-64
          - raspberrypi0-2w
          - raspberrypi0
          - raspberrypi0-wifi
          - raspberrypi2
          - raspberrypi3-64
          - raspberrypi3
          - raspberrypi4-64
          - raspberrypi4
          - raspberrypi-cm3
          - raspberrypi-cm
          - raspberrypi-armv7
          - raspberrypi-armv8
        image: [rpi-test-image]
        distro: [poky]
    runs-on: [self-hosted, Linux]
    name: ${{ matrix.machine }}/${{ matrix.image }}/poky/systemd
    env:
      DL_DIR: /var/lib/ci/yocto/downloads
      SSTATE_DIR: /var/lib/ci/yocto/sstate
    steps:
      - name: Checkout the code
        uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - name: Define Yocto build files
        id: changed-files-specific
        uses: tj-actions/changed-files@v24
        with:
          files: |
            .github/actions/**
            .github/workflows/docker-images/yocto-builder/**
            .github/workflows/docker-images/*.sh
            .github/workflows/yocto-builds.yml
            classes/**
            conf/**
            dynamic-layers/**
            files/**
            lib/**
            recipes-**
            wic/**
      - name: Build a temporary yocto-builder image
        uses: ./.github/actions/docker-build
        with:
          docker_image: yocto-builder
          id: ${{ github.event.number }}
        if: steps.changed-files-specific.outputs.any_changed == 'true'
      - name: Build the image
        run: |
          docker run --rm \
            -v "$GITHUB_WORKSPACE:/work:ro" \
            -v "$DL_DIR:$DL_DIR:rw" \
            -v "$SSTATE_DIR:$SSTATE_DIR:rw" \
            --env "BASE_REF=$GITHUB_BASE_REF" \
            --env "MACHINE=${{ matrix.machine }}" \
            --env "DISTRO=${{ matrix.distro }}" \
            --env "IMAGE=${{ matrix.image }}" \
            --env "DL_DIR=$DL_DIR" \
            --env "SSTATE_DIR=$SSTATE_DIR" \
            "yocto-builder-${{ github.event.number }}" \
            /entrypoint-build.sh
        if: steps.changed-files-specific.outputs.any_changed == 'true'
      - name: Cleanup temporary docker image
        uses: ./.github/actions/docker-clean-image
        with:
          docker_image: yocto-builder-${{ github.event.number }}
        if: always()
      - name: Cleanup dangling docker images
        uses: ./.github/actions/docker-clean-dangling
        if: always()
