CI: migrate each workflow to use reusable workflow from dedicated repo
Migrate each workflow to use reusable workflow from dedicated repo to skip pushing CI related commits to openwrt and better track versioning of CI workflow. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
This commit is contained in:
119
.github/workflows/label-kernel.yml
vendored
119
.github/workflows/label-kernel.yml
vendored
@@ -7,123 +7,10 @@ on:
|
||||
- labeled
|
||||
|
||||
jobs:
|
||||
set_target:
|
||||
if: startsWith(github.event.label.name, 'ci:kernel:')
|
||||
name: Set target
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
targets_subtargets: ${{ steps.set_target.outputs.targets_subtargets }}
|
||||
targets: ${{ steps.set_target.outputs.targets }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Parse label
|
||||
id: parse_label
|
||||
env:
|
||||
CI_EVENT_LABEL_NAME: ${{ github.event.label.name }}
|
||||
run: |
|
||||
echo "$CI_EVENT_LABEL_NAME" | sed -n 's/ci:kernel:\([^:]*\):\([^:]*\):*\([^:]*\)$/target=\1/p' | tee --append $GITHUB_OUTPUT
|
||||
echo "$CI_EVENT_LABEL_NAME" | sed -n 's/ci:kernel:\([^:]*\):\([^:]*\):*\([^:]*\)$/subtarget=\2/p' | tee --append $GITHUB_OUTPUT
|
||||
echo "$CI_EVENT_LABEL_NAME" | sed -n 's/ci:kernel:\([^:]*\):\([^:]*\):*\([^:]*\)$/testing=\3/p' | tee --append $GITHUB_OUTPUT
|
||||
|
||||
- name: Set targets
|
||||
id: set_target
|
||||
run: |
|
||||
ALL_TARGETS="$(perl ./scripts/dump-target-info.pl kernels 2>/dev/null)"
|
||||
|
||||
TARGETS_SUBTARGETS="$(echo "$ALL_TARGETS" | sort -u -t '/' -k1)"
|
||||
TARGETS="$(echo "$ALL_TARGETS" | sort -u -t '/' -k1,1)"
|
||||
|
||||
[ "${{ steps.parse_label.outputs.subtarget }}" = "first" ] && TARGETS_SUBTARGETS=$TARGETS
|
||||
|
||||
JSON_TARGETS_SUBTARGETS='['
|
||||
FIRST=1
|
||||
while IFS= read -r line; do
|
||||
TARGET_SUBTARGET=$(echo $line | cut -d " " -f 1)
|
||||
TARGET=$(echo $TARGET_SUBTARGET | cut -d "/" -f 1)
|
||||
SUBTARGET=$(echo $TARGET_SUBTARGET | cut -d "/" -f 2)
|
||||
|
||||
[ "${{ steps.parse_label.outputs.target }}" != "all" ] && [ "${{ steps.parse_label.outputs.target }}" != "$TARGET" ] && continue
|
||||
[ "${{ steps.parse_label.outputs.subtarget }}" != "all" ] && [ "${{ steps.parse_label.outputs.subtarget }}" != "first" ] &&
|
||||
[ "${{ steps.parse_label.outputs.subtarget }}" != $SUBTARGET ] && continue
|
||||
if [ "${{ steps.parse_label.outputs.testing }}" = "testing" ]; then
|
||||
TESTING_KERNEL_VER=$(echo $line | cut -d " " -f 3)
|
||||
[ -z "$TESTING_KERNEL_VER" ] && continue
|
||||
fi
|
||||
|
||||
TUPLE='{"target":"'"$TARGET"'","subtarget":"'"$SUBTARGET"'","testing":"'"$TESTING_KERNEL_VER"'"}'
|
||||
[[ $FIRST -ne 1 ]] && JSON_TARGETS_SUBTARGETS="$JSON_TARGETS_SUBTARGETS"','
|
||||
JSON_TARGETS_SUBTARGETS="$JSON_TARGETS_SUBTARGETS""$TUPLE"
|
||||
FIRST=0
|
||||
done <<< "$TARGETS_SUBTARGETS"
|
||||
JSON_TARGETS_SUBTARGETS="$JSON_TARGETS_SUBTARGETS"']'
|
||||
|
||||
JSON_TARGETS='['
|
||||
FIRST=1
|
||||
while IFS= read -r line; do
|
||||
TARGET_SUBTARGET=$(echo $line | cut -d " " -f 1)
|
||||
TARGET=$(echo $TARGET_SUBTARGET | cut -d "/" -f 1)
|
||||
SUBTARGET=$(echo $TARGET_SUBTARGET | cut -d "/" -f 2)
|
||||
|
||||
[ "${{ steps.parse_label.outputs.target }}" != "all" ] && [ "${{ steps.parse_label.outputs.target }}" != $TARGET ] && continue
|
||||
if [ "${{ steps.parse_label.outputs.testing }}" = "testing" ]; then
|
||||
TESTING_KERNEL_VER=$(echo $line | cut -d " " -f 3)
|
||||
[ -z "$TESTING_KERNEL_VER" ] && continue
|
||||
fi
|
||||
|
||||
TUPLE='{"target":"'"$TARGET"'","subtarget":"'"$SUBTARGET"'","testing":"'"$TESTING_KERNEL_VER"'"}'
|
||||
[[ $FIRST -ne 1 ]] && JSON_TARGETS="$JSON_TARGETS"','
|
||||
JSON_TARGETS="$JSON_TARGETS""$TUPLE"
|
||||
FIRST=0
|
||||
done <<< "$TARGETS"
|
||||
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_kernel:
|
||||
name: Build Kernel with external toolchain
|
||||
needs: set_target
|
||||
build-kernels-label:
|
||||
name: Build all affected Kernels from defined label
|
||||
permissions:
|
||||
contents: read
|
||||
packages: read
|
||||
actions: write
|
||||
uses: ./.github/workflows/build.yml
|
||||
strategy:
|
||||
fail-fast: False
|
||||
matrix:
|
||||
include: ${{fromJson(needs.set_target.outputs.targets_subtargets)}}
|
||||
with:
|
||||
container_name: toolchain
|
||||
target: ${{ matrix.target }}
|
||||
subtarget: ${{ matrix.subtarget }}
|
||||
testing: ${{ matrix.testing != '' && true }}
|
||||
build_kernel: true
|
||||
build_all_kmods: true
|
||||
|
||||
check-kernel-patches:
|
||||
name: Check Kernel patches
|
||||
needs: set_target
|
||||
permissions:
|
||||
contents: read
|
||||
packages: read
|
||||
actions: write
|
||||
strategy:
|
||||
fail-fast: False
|
||||
matrix:
|
||||
include: ${{fromJson(needs.set_target.outputs.targets)}}
|
||||
uses: ./.github/workflows/check-kernel-patches.yml
|
||||
with:
|
||||
target: ${{ matrix.target }}
|
||||
subtarget: ${{ matrix.subtarget }}
|
||||
testing: ${{ matrix.testing != '' && true }}
|
||||
uses: openwrt/actions-shared-workflows/.github/workflows/label-kernel.yml@main
|
||||
|
||||
Reference in New Issue
Block a user