diff --git a/.github/workflows/apps_version_check.yaml b/.github/workflows/apps_version_check.yaml new file mode 100644 index 000000000..808e82600 --- /dev/null +++ b/.github/workflows/apps_version_check.yaml @@ -0,0 +1,12 @@ +name: Check Apps Version + +on: [pull_request] + +jobs: + check_deps_integrity: + runs-on: ubuntu-20.04 + + steps: + - uses: actions/checkout@v1 + - name: Check apps version + run: ./scripts/apps-version-check.sh diff --git a/scripts/apps-version-check.sh b/scripts/apps-version-check.sh new file mode 100755 index 000000000..94b3c775e --- /dev/null +++ b/scripts/apps-version-check.sh @@ -0,0 +1,34 @@ +#!/bin/bash +set -euo pipefail + +latest_release=$(git describe --tags "$(git rev-list --tags --max-count=1)") + +bad_app_count=0 + +while read -r app; do + if [ "$app" != "emqx" ]; then + app_path="$app" + else + app_path="." + fi + src_file="$app_path/src/$(basename "$app").app.src" + old_app_version="$(git show "$latest_release":"$src_file" | grep vsn | grep -oE '"[0-9]+.[0-9]+.[0-9]+"' | tr -d '"')" + now_app_version=$(grep -E 'vsn' "$src_file" | grep -oE '"[0-9]+\.[0-9]+\.[0-9]+"' | tr -d '"') + if [ "$old_app_version" = "$now_app_version" ]; then + changed="$(git diff --name-only "$latest_release"...HEAD \ + -- "$app_path/etc" \ + -- "$app_path/src" \ + -- "$app_path/priv" \ + -- "$app_path/c_src" | wc -l)" + if [ "$changed" -gt 0 ]; then + echo "$src_file needs a vsn bump" + bad_app_count=$(( bad_app_count + 1)) + fi + fi +done < <(./scripts/find-apps.sh) + +if [ $bad_app_count -gt 0 ]; then + exit 1 +else + echo "apps version check successfully" +fi