mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 02:29:01 +00:00
f5a5ce8822
Due to problem with migrating from master to main as the default branch and downstream project still requiring the master branch to be present, we currently have for push events double CI runs, one for main and one for master. To solve this ignore any push event to the master branch for every workflow that react on push events. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
135 lines
4.4 KiB
YAML
135 lines
4.4 KiB
YAML
name: Build Kernel
|
|
|
|
on:
|
|
pull_request:
|
|
paths:
|
|
- '.github/workflows/check-kernel-patches.yml'
|
|
- '.github/workflows/build.yml'
|
|
- '.github/workflows/kernel.yml'
|
|
- 'include/kernel*'
|
|
- 'package/kernel/**'
|
|
- 'target/linux/**'
|
|
push:
|
|
paths:
|
|
- '.github/workflows/check-kernel-patches.yml'
|
|
- '.github/workflows/build.yml'
|
|
- '.github/workflows/kernel.yml'
|
|
- 'include/kernel*'
|
|
- 'package/kernel/**'
|
|
- 'target/linux/**'
|
|
branches-ignore:
|
|
- master
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
|
|
jobs:
|
|
determine_targets:
|
|
name: Set targets
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
targets_subtargets: ${{ steps.find_targets.outputs.targets_subtargets }}
|
|
targets: ${{ steps.find_targets.outputs.targets }}
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 2
|
|
|
|
- name: Get changed files
|
|
id: changed-files
|
|
uses: tj-actions/changed-files@v35
|
|
|
|
- name: Set targets
|
|
id: find_targets
|
|
run: |
|
|
ALL_TARGETS="$(perl ./scripts/dump-target-info.pl targets 2>/dev/null)"
|
|
CHANGED_FILES="$(echo ${{ steps.changed-files.outputs.all_changed_files }} | tr ' ' '\n')"
|
|
|
|
TARGETS_SUBTARGETS="$(echo "$ALL_TARGETS" | sort -u -t '/' -k1 | awk '{ print $1 }')"
|
|
TARGETS="$(echo "$ALL_TARGETS" | sort -u -t '/' -k1,1 | awk '{ print $1 }')"
|
|
|
|
# On testing non-specific target, skip testing each subtarget
|
|
if echo "$CHANGED_FILES" | grep -v -q target/linux ||
|
|
echo "$CHANGED_FILES" | grep -q target/linux/generic; then
|
|
TARGETS_SUBTARGETS=$TARGETS
|
|
fi
|
|
|
|
JSON_TARGETS_SUBTARGETS='['
|
|
FIRST=1
|
|
for TARGET in $TARGETS_SUBTARGETS; do
|
|
if echo "$CHANGED_FILES" | grep -v -q target/linux ||
|
|
echo "$CHANGED_FILES" | grep -q target/linux/generic ||
|
|
echo "$CHANGED_FILES" | grep -q $(echo $TARGET | cut -d "/" -f 1); then
|
|
TUPLE='{"target":"'"$(echo $TARGET | cut -d "/" -f 1)"'","subtarget":"'"$(echo $TARGET | cut -d "/" -f 2)"'"}'
|
|
[[ $FIRST -ne 1 ]] && JSON_TARGETS_SUBTARGETS="$JSON_TARGETS_SUBTARGETS"','
|
|
JSON_TARGETS_SUBTARGETS="$JSON_TARGETS_SUBTARGETS""$TUPLE"
|
|
FIRST=0
|
|
fi
|
|
done
|
|
JSON_TARGETS_SUBTARGETS="$JSON_TARGETS_SUBTARGETS"']'
|
|
|
|
JSON_TARGETS='['
|
|
FIRST=1
|
|
for TARGET in $TARGETS; do
|
|
if echo "$CHANGED_FILES" | grep -v -q target/linux ||
|
|
echo "$CHANGED_FILES" | grep -q target/linux/generic ||
|
|
echo "$CHANGED_FILES" | grep -q $(echo $TARGET | cut -d "/" -f 1); then
|
|
TUPLE='{"target":"'"$(echo $TARGET | cut -d "/" -f 1)"'","subtarget":"'"$(echo $TARGET | cut -d "/" -f 2)"'"}'
|
|
[[ $FIRST -ne 1 ]] && JSON_TARGETS="$JSON_TARGETS"','
|
|
JSON_TARGETS="$JSON_TARGETS""$TUPLE"
|
|
FIRST=0
|
|
fi
|
|
done
|
|
JSON_TARGETS="$JSON_TARGETS"']'
|
|
|
|
echo -e "\n---- targets to build ----\n"
|
|
echo "$JSON_TARGETS_SUBTARGETS"
|
|
echo -e "\n---- targets to build ----\n"
|
|
|
|
echo -e "\n---- targets to check patch ----\n"
|
|
echo "$JSON_TARGETS"
|
|
echo -e "\n---- targets to check patch ----\n"
|
|
|
|
echo "targets_subtargets=$JSON_TARGETS_SUBTARGETS" >> $GITHUB_OUTPUT
|
|
echo "targets=$JSON_TARGETS" >> $GITHUB_OUTPUT
|
|
|
|
build:
|
|
name: Build Kernel with external toolchain
|
|
needs: determine_targets
|
|
permissions:
|
|
contents: read
|
|
packages: read
|
|
strategy:
|
|
fail-fast: False
|
|
matrix:
|
|
include: ${{fromJson(needs.determine_targets.outputs.targets_subtargets)}}
|
|
uses: ./.github/workflows/build.yml
|
|
with:
|
|
container_name: toolchain
|
|
target: ${{ matrix.target }}
|
|
subtarget: ${{ matrix.subtarget }}
|
|
build_kernel: true
|
|
build_all_kmods: true
|
|
|
|
check-kernel-patches:
|
|
name: Check Kernel patches
|
|
needs: determine_targets
|
|
permissions:
|
|
contents: read
|
|
packages: read
|
|
strategy:
|
|
fail-fast: False
|
|
matrix:
|
|
include: ${{fromJson(needs.determine_targets.outputs.targets)}}
|
|
uses: ./.github/workflows/check-kernel-patches.yml
|
|
with:
|
|
target: ${{ matrix.target }}
|
|
subtarget: ${{ matrix.subtarget }}
|
|
|