@@ -11,33 +11,33 @@ jobs:
11
11
permissions :
12
12
contents : write
13
13
pull-requests : read
14
-
14
+
15
15
steps :
16
16
- name : Checkout code
17
17
uses : actions/checkout@v5
18
18
with :
19
19
fetch-depth : 0
20
20
persist-credentials : false
21
-
21
+
22
22
- name : Extract tag information
23
23
id : tag_info
24
24
run : |
25
25
TAG=${GITHUB_REF#refs/tags/}
26
26
echo "tag=$TAG" >> $GITHUB_OUTPUT
27
-
27
+
28
28
IFS='/' read -ra PARTS <<< "$TAG"
29
29
NAMESPACE="${PARTS[1]}"
30
30
MODULE="${PARTS[2]}"
31
31
VERSION="${PARTS[3]}"
32
-
32
+
33
33
echo "namespace=$NAMESPACE" >> $GITHUB_OUTPUT
34
34
echo "module=$MODULE" >> $GITHUB_OUTPUT
35
35
echo "version=$VERSION" >> $GITHUB_OUTPUT
36
36
echo "module_path=registry/$NAMESPACE/modules/$MODULE" >> $GITHUB_OUTPUT
37
-
37
+
38
38
RELEASE_TITLE="$NAMESPACE/$MODULE $VERSION"
39
39
echo "release_title=$RELEASE_TITLE" >> $GITHUB_OUTPUT
40
-
40
+
41
41
- name : Find previous tag
42
42
id : prev_tag
43
43
env :
@@ -46,15 +46,15 @@ jobs:
46
46
CURRENT_TAG : ${{ steps.tag_info.outputs.tag }}
47
47
run : |
48
48
PREV_TAG=$(git tag -l "release/$NAMESPACE/$MODULE/v*" | sort -V | grep -B1 "$CURRENT_TAG" | head -1)
49
-
49
+
50
50
if [ -z "$PREV_TAG" ] || [ "$PREV_TAG" = "$CURRENT_TAG" ]; then
51
51
echo "No previous tag found, using initial commit"
52
52
PREV_TAG=$(git rev-list --max-parents=0 HEAD)
53
53
fi
54
-
54
+
55
55
echo "prev_tag=$PREV_TAG" >> $GITHUB_OUTPUT
56
56
echo "Previous tag: $PREV_TAG"
57
-
57
+
58
58
- name : Generate changelog
59
59
id : changelog
60
60
env :
@@ -64,15 +64,15 @@ jobs:
64
64
CURRENT_TAG : ${{ steps.tag_info.outputs.tag }}
65
65
run : |
66
66
echo "Generating changelog for $MODULE_PATH between $PREV_TAG and $CURRENT_TAG"
67
-
67
+
68
68
COMMITS=$(git log --oneline --no-merges "$PREV_TAG..$CURRENT_TAG" -- "$MODULE_PATH")
69
-
69
+
70
70
if [ -z "$COMMITS" ]; then
71
71
echo "No commits found for this module"
72
72
echo "changelog=No changes found for this module." >> $GITHUB_OUTPUT
73
73
exit 0
74
74
fi
75
-
75
+
76
76
if [[ "$PREV_TAG" == release/* ]]; then
77
77
FULL_CHANGELOG=$(gh api repos/:owner/:repo/releases/generate-notes \
78
78
--field tag_name="$CURRENT_TAG" \
@@ -82,11 +82,11 @@ jobs:
82
82
echo "New module detected, skipping GitHub API"
83
83
FULL_CHANGELOG=""
84
84
fi
85
-
85
+
86
86
MODULE_COMMIT_SHAS=$(git log --format="%H" --no-merges "$PREV_TAG..$CURRENT_TAG" -- "$MODULE_PATH")
87
-
87
+
88
88
FILTERED_CHANGELOG="## What's Changed\n\n"
89
-
89
+
90
90
for sha in $MODULE_COMMIT_SHAS; do
91
91
SHORT_SHA=${sha:0:7}
92
92
@@ -100,11 +100,11 @@ jobs:
100
100
FILTERED_CHANGELOG="${FILTERED_CHANGELOG}* $COMMIT_MSG by @$AUTHOR\n"
101
101
fi
102
102
done
103
-
103
+
104
104
echo "changelog<<EOF" >> $GITHUB_OUTPUT
105
105
echo -e "$FILTERED_CHANGELOG" >> $GITHUB_OUTPUT
106
106
echo "EOF" >> $GITHUB_OUTPUT
107
-
107
+
108
108
- name : Create Release
109
109
env :
110
110
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
@@ -114,4 +114,4 @@ jobs:
114
114
run : |
115
115
gh release create "$TAG_NAME" \
116
116
--title "$RELEASE_TITLE" \
117
- --notes "$CHANGELOG"
117
+ --notes "$CHANGELOG"
0 commit comments