Skip to content

Commit

Permalink
action: add check if rebuild required module
Browse files Browse the repository at this point in the history
Import check-if-rebuild-requires module from nnstreamer.git

Signed-off-by: MyungJoo Ham <[email protected]>
  • Loading branch information
myungjoo committed Jun 13, 2024
1 parent 2a414a5 commit e36c30b
Show file tree
Hide file tree
Showing 2 changed files with 103 additions and 0 deletions.
20 changes: 20 additions & 0 deletions .github/actions/check-rebuild/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Check if rebuild required
description:

inputs:
mode:
description: build mode to be checked
required: false
default: build

runs:
using: composite
steps:
- run: |
tmpfile=$(mktemp)
git show --pretty="format:" --name-only --diff-filter=AMRC ${{ github.event.pull_request.head.sha}} -${{ github.event.pull_request.commits }} | sort | uniq | awk NF > ${tmpfile}
echo "changed_file_list=${tmpfile}" >> "$GITHUB_ENV"
rebuild=`bash .github/actions/check-rebuild/check_if_rebuild_requires.sh ${tmpfile} ${{ inputs.mode }} | grep "REBUILD=YES" | wc -l`
echo "Rebuild required: ${rebuild}"
echo "rebuild=${rebuild}" >> "$GITHUB_ENV"
shell: sh
83 changes: 83 additions & 0 deletions .github/actions/check-rebuild/check_if_rebuild_requires.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
#!/usr/bin/env bash

##
# Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved.
#
# @file: check_if_rebuild_requires.sh
# @brief Check if rebuild & unit-test is required with the given PR.
# @see https://github.com/nnstreamer/nnstreamer
# @author MyungJoo Ham <[email protected]>
#
# Argument 1 ($1): the file containing list of files to be checked.
# Argument 2 ($2): build mode to be checked
# gbs: check if Tizen GBS build is required
# debian: check if pdebuild is required
# android: check if jni rebuild is required
# build (default): check if general meson rebuild is required.

if [ -z $1 ]; then
echo "::error The argument (file path) is not given."
exit 1
fi

if [ -z $2 ]; then
mode="build"
else
mode=$2
fi

rebuild=0
regbs=0
redebian=0
reandroid=0

for file in `cat $1`; do
case $file in
*.md|*.png|*.webp|*.css|*.html )
;;
packaging/* )
regbs='1'
;;
debian/* )
redebian='1'
;;
jni/* )
reandroid='1'
;;
* )
rebuild='1'
regbs='1'
redebian='1'
reandroid='1'
;;
esac
done

case $mode in
gbs)
if [[ "$regbs" == "1" ]]; then
echo "REBUILD=YES"
exit 0
fi
;;
debian)
if [[ "$redebian" == "1" ]]; then
echo "REBUILD=YES"
exit 0
fi
;;
android)
if [[ "$reandroid" == "1" ]]; then
echo "REBUILD=YES"
exit 0
fi
;;
*)
if [[ "$rebuild" == "1" ]]; then
echo "REBUILD=YES"
exit 0
fi
;;
esac

echo "REBUILD=NO"

0 comments on commit e36c30b

Please sign in to comment.