aboutsummaryrefslogtreecommitdiffstats
path: root/.github
diff options
context:
space:
mode:
authorChristian Marangi <ansuelsmth@gmail.com>2023-01-10 23:20:07 +0100
committerChristian Marangi <ansuelsmth@gmail.com>2023-01-11 14:28:41 +0100
commit04ada8bc4118b390cceca9dc67e7a593f7dc77b0 (patch)
tree69bd75ba19ff92423972879113ac014abd897775 /.github
parent895f38ca1efeb46f0cd3029c732e6156d4589eb0 (diff)
downloadupstream-04ada8bc4118b390cceca9dc67e7a593f7dc77b0.tar.gz
upstream-04ada8bc4118b390cceca9dc67e7a593f7dc77b0.tar.bz2
upstream-04ada8bc4118b390cceca9dc67e7a593f7dc77b0.zip
CI: kernel: build only changed targets
Detect changes in commit and build only changed targets. If a change is related to the generic target, build test each target. The matrix json is split. For target check patch only the first subtarget is selected, for build test each target subtarget is built. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/kernel.yml59
1 files changed, 46 insertions, 13 deletions
diff --git a/.github/workflows/kernel.yml b/.github/workflows/kernel.yml
index d886002ed1..6cff102091 100644
--- a/.github/workflows/kernel.yml
+++ b/.github/workflows/kernel.yml
@@ -16,7 +16,7 @@ on:
- '.github/workflows/kernel.yml'
- 'include/kernel*'
- 'package/kernel/**'
- - 'target/linux/generic/**'
+ - 'target/linux/**'
permissions:
contents: read
@@ -26,33 +26,66 @@ jobs:
name: Set targets
runs-on: ubuntu-latest
outputs:
- target: ${{ steps.find_targets.outputs.target }}
+ 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
+ with:
+ since_last_remote_commit: true
- name: Set targets
id: find_targets
run: |
+ export TARGETS_SUBTARGETS="$(perl ./scripts/dump-target-info.pl targets 2>/dev/null \
+ | sort -u -t '/' -k1 \
+ | awk '{ print $1 }')"
+
export TARGETS="$(perl ./scripts/dump-target-info.pl targets 2>/dev/null \
| sort -u -t '/' -k1,1 \
| awk '{ print $1 }')"
- JSON='['
+ JSON_TARGETS_SUBTARGETS='['
+ FIRST=1
+ for TARGET in $TARGETS_SUBTARGETS; do
+ if echo ${{ steps.changed-files.outputs.all_changed_files }} | grep -q target/linux/generic ||
+ echo ${{ steps.changed-files.outputs.all_changed_files }} | grep -q $(echo $TARGET | cut -d "/" -f 1); then
+ [[ $FIRST -ne 1 ]] && JSON_TARGETS_SUBTARGETS="$JSON_TARGETS_SUBTARGETS"','
+ JSON_TARGETS_SUBTARGETS="$JSON_TARGETS_SUBTARGETS"'"'"${TARGET}"'"'
+ FIRST=0
+ fi
+ done
+ JSON_TARGETS_SUBTARGETS="$JSON_TARGETS_SUBTARGETS"']'
+
+ JSON_TARGETS='['
FIRST=1
for TARGET in $TARGETS; do
- [[ $FIRST -ne 1 ]] && JSON="$JSON"','
- JSON="$JSON"'"'"${TARGET}"'"'
- FIRST=0
+ if echo ${{ steps.changed-files.outputs.all_changed_files }} | grep -q target/linux/generic ||
+ echo ${{ steps.changed-files.outputs.all_changed_files }} | grep -q $(echo $TARGET | cut -d "/" -f 1); then
+ [[ $FIRST -ne 1 ]] && JSON_TARGETS="$JSON_TARGETS"','
+ JSON_TARGETS="$JSON_TARGETS"'"'"${TARGET}"'"'
+ FIRST=0
+ fi
done
- JSON="$JSON"']'
+ 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 ----\n"
- echo "$JSON"
- echo -e "\n---- targets ----\n"
+ echo -e "\n---- targets to check patch ----\n"
+ echo "$JSON_TARGETS"
+ echo -e "\n---- targets to check patch ----\n"
- echo "target=$JSON" >> $GITHUB_OUTPUT
+ echo "targets_subtargets=$JSON_TARGETS_SUBTARGETS" >> $GITHUB_OUTPUT
+ echo "targets=$JSON_TARGETS" >> $GITHUB_OUTPUT
build:
name: Build Kernel with external toolchain
@@ -63,7 +96,7 @@ jobs:
strategy:
fail-fast: False
matrix:
- target: ${{fromJson(needs.determine_targets.outputs.target)}}
+ target: ${{fromJson(needs.determine_targets.outputs.targets_subtargets)}}
uses: ./.github/workflows/build.yml
with:
target: ${{ matrix.target }}
@@ -79,7 +112,7 @@ jobs:
strategy:
fail-fast: False
matrix:
- target: ${{fromJson(needs.determine_targets.outputs.target)}}
+ target: ${{fromJson(needs.determine_targets.outputs.targets)}}
uses: ./.github/workflows/check-kernel-patches.yml
with:
target: ${{ matrix.target }}