From 771da0e09e3ee26a7790058d3393df9f78a15ab9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Ferr=C3=A3o?= <2031761+viniciusferrao@users.noreply.github.com> Date: Wed, 23 Sep 2026 13:39:05 -0300 Subject: [PATCH] ci(genesis): run the OpenEmbedded check only when its inputs change The OpenEmbedded metadata job ran on every pull request and took about 20 minutes. It reads only xCAT-genesis-builder/oe and xCAT-genesis-scripts, and it pins its upstream sources to fixed commits. A pull request that changes neither directory gets the same result each time. The job moves unchanged to its own workflow, which runs only when those paths or the workflow file change. xcat_pr_test stays in xcat_test.yml and runs on every pull request, because a required check that does not run blocks the merge. --- .github/workflows/genesis_openembedded.yml | 54 ++++++++++++++++++++++ .github/workflows/xcat_test.yml | 46 ------------------ 2 files changed, 54 insertions(+), 46 deletions(-) create mode 100644 .github/workflows/genesis_openembedded.yml diff --git a/.github/workflows/genesis_openembedded.yml b/.github/workflows/genesis_openembedded.yml new file mode 100644 index 000000000..b2ee14521 --- /dev/null +++ b/.github/workflows/genesis_openembedded.yml @@ -0,0 +1,54 @@ +name: genesis_openembedded +on: + pull_request: + paths: + - 'xCAT-genesis-builder/oe/**' + - 'xCAT-genesis-scripts/**' + - '.github/workflows/genesis_openembedded.yml' + workflow_dispatch: +jobs: + genesis_openembedded: + name: OpenEmbedded metadata + runs-on: ubuntu-24.04 + timeout-minutes: 30 + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-python@v6 + with: + python-version: '3.12' + cache: pip + cache-dependency-path: xCAT-genesis-builder/oe/requirements.txt + - name: Install OpenEmbedded host dependencies + run: >- + sudo env DEBIAN_FRONTEND=noninteractive apt-get install -y + --no-install-recommends --no-install-suggests + build-essential chrpath cpio diffstat file gawk git locales + lz4 openssl socat texinfo unzip wget xz-utils zstd + - name: Install KAS + run: python -m pip install -r xCAT-genesis-builder/oe/requirements.txt + - name: Enable BitBake user namespaces + run: sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0 + - name: Validate every architecture configuration + shell: bash + env: + KAS_WORK_DIR: ${{ runner.temp }}/kas-work + run: | + set -euo pipefail + for architecture in x86 x86_64 ppc64 ppc64le armv7hf aarch64 riscv64 s390x; do + export KAS_BUILD_DIR="${RUNNER_TEMP}/kas-build-${architecture}" + configuration="xCAT-genesis-builder/oe/kas/${architecture}.yml" + kas dump "${configuration}" >/dev/null + kas shell "${configuration}" -c 'bitbake -p' + done + - name: Validate the image task graph + shell: bash + env: + KAS_WORK_DIR: ${{ runner.temp }}/kas-work + KAS_BUILD_DIR: ${{ runner.temp }}/kas-build-x86_64 + run: | + set -euo pipefail + kas shell xCAT-genesis-builder/oe/kas/x86_64.yml -c \ + 'bitbake -n xcat-genesis-image xcat-genesis-extension-smoke' + export KAS_BUILD_DIR="${RUNNER_TEMP}/kas-build-s390x" + kas shell xCAT-genesis-builder/oe/kas/s390x.yml -c \ + 'bitbake -n xcat-genesis-image xcat-genesis-extension-smoke' diff --git a/.github/workflows/xcat_test.yml b/.github/workflows/xcat_test.yml index 04d50aff0..d23185138 100644 --- a/.github/workflows/xcat_test.yml +++ b/.github/workflows/xcat_test.yml @@ -10,49 +10,3 @@ jobs: run: sudo env DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests bats build-essential fakeroot reprepro devscripts debhelper libcapture-tiny-perl libfile-slurper-perl libjson-perl libparallel-forkmanager-perl libsoap-lite-perl libdbi-perl libcgi-pm-perl quilt openssh-server dpkg looptools genometools software-properties-common - name: Run tests run: perl github_action_xcat_test.pl - - genesis_openembedded: - name: OpenEmbedded metadata - runs-on: ubuntu-24.04 - timeout-minutes: 30 - steps: - - uses: actions/checkout@v6 - - uses: actions/setup-python@v6 - with: - python-version: '3.12' - cache: pip - cache-dependency-path: xCAT-genesis-builder/oe/requirements.txt - - name: Install OpenEmbedded host dependencies - run: >- - sudo env DEBIAN_FRONTEND=noninteractive apt-get install -y - --no-install-recommends --no-install-suggests - build-essential chrpath cpio diffstat file gawk git locales - lz4 openssl socat texinfo unzip wget xz-utils zstd - - name: Install KAS - run: python -m pip install -r xCAT-genesis-builder/oe/requirements.txt - - name: Enable BitBake user namespaces - run: sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0 - - name: Validate every architecture configuration - shell: bash - env: - KAS_WORK_DIR: ${{ runner.temp }}/kas-work - run: | - set -euo pipefail - for architecture in x86 x86_64 ppc64 ppc64le armv7hf aarch64 riscv64 s390x; do - export KAS_BUILD_DIR="${RUNNER_TEMP}/kas-build-${architecture}" - configuration="xCAT-genesis-builder/oe/kas/${architecture}.yml" - kas dump "${configuration}" >/dev/null - kas shell "${configuration}" -c 'bitbake -p' - done - - name: Validate the image task graph - shell: bash - env: - KAS_WORK_DIR: ${{ runner.temp }}/kas-work - KAS_BUILD_DIR: ${{ runner.temp }}/kas-build-x86_64 - run: | - set -euo pipefail - kas shell xCAT-genesis-builder/oe/kas/x86_64.yml -c \ - 'bitbake -n xcat-genesis-image xcat-genesis-extension-smoke' - export KAS_BUILD_DIR="${RUNNER_TEMP}/kas-build-s390x" - kas shell xCAT-genesis-builder/oe/kas/s390x.yml -c \ - 'bitbake -n xcat-genesis-image xcat-genesis-extension-smoke'