-
Notifications
You must be signed in to change notification settings - Fork 7
90 lines (82 loc) · 3.05 KB
/
reusable-git-check.yml
File metadata and controls
90 lines (82 loc) · 3.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
name: Reusable - Git check
on:
workflow_call:
inputs:
app-folders:
description: "Application folders separated by commas"
type: string
required: false
default: "src test"
is-pull-request:
description: "Identify if build part of a PR"
required: false
type: boolean
default: false
outputs:
app_changed:
description: "Whether application files changed (in src or test folder)"
value: ${{ jobs.git-check.outputs.app_changed }}
version_major_minor:
description: "Version \"Major.Minor\" read from Directory.Build.props file"
value: ${{ jobs.git-check.outputs.version_major_minor }}
jobs:
git-check:
name: Check
runs-on: ubuntu-latest
outputs:
app_changed: ${{ steps.git-diff.outputs.app_changed }}
environment_slug: ${{ steps.get-slug.outputs.environment_slug }}
version_major_minor: ${{ steps.extract-version.outputs.version_major_minor }}
steps:
- name: Clone repository
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Determine BEFORE commit for diff
id: set-before
run: |
if ${{ inputs.is-pull-request }}; then
BEFORE="${{ github.event.pull_request.base.sha }}"
else
BEFORE="${{ github.event.before }}"
BEFORE="${BEFORE:-$(git rev-parse HEAD~1 2>/dev/null || echo '')}"
fi
if [[ -z "$BEFORE" ]]; then
echo "No usable before commit → assuming changed"
echo "before=invalid" >> $GITHUB_OUTPUT
echo "app_changed=true" >> $GITHUB_OUTPUT
else
echo "before=$BEFORE" >> $GITHUB_OUTPUT
fi
- name: Check git diff
id: git-diff
run: |
BEFORE="${{ steps.set-before.outputs.before }}"
if [[ "$BEFORE" == "invalid" ]]; then
echo "app_changed=true" >> $GITHUB_OUTPUT
exit 0
fi
echo "Comparing:"
echo " from : $BEFORE"
echo " to : ${{ github.sha }}"
if git diff --quiet "$BEFORE" ${{ github.sha }} -- $APP_FOLDERS ; then
echo "No relevant changes"
echo "app_changed=false" >> $GITHUB_OUTPUT
else
echo "Changes detected in $APP_FOLDERS"
git diff --name-status "$BEFORE" ${{ github.sha }} -- $APP_FOLDERS
echo "app_changed=true" >> $GITHUB_OUTPUT
fi
- name: Extract version from Directory.Build.props
id: extract-version
run: |
VERSION_PREFIX=$(grep -oP '(?<=<VersionPrefix>).*?(?=</VersionPrefix>)' Directory.Build.props | tr -d ' \t\n\r')
if [ -z "$VERSION_PREFIX" ]; then
echo "Error: Could not find VersionPrefix in Directory.Build.props"
exit 1
fi
MAJOR_MINOR=$(echo "$VERSION_PREFIX" | cut -d'.' -f1-2)
echo "Major.Minor: $MAJOR_MINOR"
echo "version_major_minor=$MAJOR_MINOR" >> "$GITHUB_OUTPUT"
env:
APP_FOLDERS: ${{ inputs.app-folders }}