@@ -28,9 +28,12 @@ outputs:
2828 new_release_version :
2929 description : " New TAG attached to the Semantic Release version"
3030 value : ${{ steps.semantic-release.outputs.new_release_version }}
31+ new_release_published :
32+ description : " Whether a new release was published"
33+ value : ${{ steps.semantic-release.outputs.new_release_published }}
3134 new_release_notes :
3235 description : " Release notes for Semantic Release"
33- value : ${{ env .new_release_notes }}
36+ value : ${{ steps.export-released-notes.outputs .new_release_notes }}
3437
3538runs :
3639 using : " composite"
@@ -45,18 +48,43 @@ runs:
4548 # populating project specific template for the semantic release
4649 envsubst '${PROJECT_NAME_UPPER} ${PROJECT_NAME_LOWER}' < ${{ inputs.TEMPLATE_FILE }} > ${{ inputs.PROJECT_DIRECTORY }}/.releaserc.json
4750
51+ # Verify the template was created successfully
52+ if [ ! -f "${{ inputs.PROJECT_DIRECTORY }}/.releaserc.json" ]; then
53+ echo "::error::Failed to create .releaserc.json template"
54+ exit 1
55+ fi
56+
57+ # Show the generated template for debugging
58+ echo "Generated semantic-release config:"
59+ cat ${{ inputs.PROJECT_DIRECTORY }}/.releaserc.json
60+
4861 - name : " Setup Node"
4962 uses : actions/setup-node@v3
5063 with :
51- node-version : 14
64+ node-version : 16
5265
5366 - name : " Configure Git user"
5467 shell : bash
5568 run : |
5669 git config user.email "actions@github.com"
5770 git config user.name "GitHub Actions"
5871
59- - name : " Semantic Release"
72+ - name : " Install semantic-release dependencies"
73+ shell : bash
74+ run : |
75+ echo "Installing semantic-release dependencies..."
76+ cd ${{ inputs.PROJECT_DIRECTORY }}
77+ npm install --no-package-lock --no-save \
78+ semantic-release@21.0.7 \
79+ @semantic-release/commit-analyzer \
80+ @semantic-release/release-notes-generator \
81+ @semantic-release/changelog \
82+ @semantic-release/github \
83+ @semantic-release/git \
84+ @semantic-release/exec \
85+ conventional-changelog-conventionalcommits@5.0.0
86+
87+ - name : " Run Semantic Release"
6088 id : semantic-release
6189 uses : cycjimmy/semantic-release-action@v3.4.1
6290 env :
@@ -71,44 +99,42 @@ runs:
7199 @semantic-release/changelog
72100 @semantic-release/github
73101 @semantic-release/git
102+ @semantic-release/exec
74103 conventional-changelog-conventionalcommits@5.0.0
75104
76- - name : " export released version"
105+ - name : " Export released version"
77106 id : export-released-version
78107 shell : bash
79108 run : |
80- if [ "${{ steps.semantic-release.outputs.new_release_version }}" != "" ] ;
81- then echo "new_release_version=${{ steps.semantic-release.outputs.new_release_version }}" >> $GITHUB_OUTPUT ;
82- else if [ " ${{ steps.semantic-release.outputs.new_release_version }}" != "" ] ;
83- then echo "new_release_version=${{ steps.semantic-release.outputs.new_release_version }}" >> $GITHUB_OUTPUT ;
84- fi ;
109+ if [ "${{ steps.semantic-release.outputs.new_release_version }}" != "" ]; then
110+ echo "new_release_version=${{ steps.semantic-release.outputs.new_release_version }}" >> $GITHUB_OUTPUT
111+ echo "New release version: ${{ steps.semantic-release.outputs.new_release_version }}"
112+ else
113+ echo "No new version released"
85114 fi
86115
87- - name : " export release notes"
116+ - name : " Export release notes"
88117 id : export-released-notes
89118 shell : bash
90119 run : |
91- if [ "${{ steps.semantic-release.outputs.new_release_notes }}" != "" ] ; then
92- RELEASE_NOTES="${{ steps.semantic-release.outputs.new_release_notes }}"
93- RELEASE_NOTES="${RELEASE_NOTES//'%'/'%25'}"
94- RELEASE_NOTES="${RELEASE_NOTES//$'\r'/'%0D'}"
95- RELEASE_NOTES="$(echo "$RELEASE_NOTES" | sed -z 's/\n/\\n/g')"
96- echo "new_release_notes=${RELEASE_NOTES}" >> $GITHUB_OUTPUT ;
97- else if [ "${{ steps.semantic-release.outputs.new_release_notes }}" != "" ] ; then
120+ if [ "${{ steps.semantic-release.outputs.new_release_notes }}" != "" ]; then
98121 RELEASE_NOTES="${{ steps.semantic-release.outputs.new_release_notes }}"
99122 RELEASE_NOTES="${RELEASE_NOTES//'%'/'%25'}"
100123 RELEASE_NOTES="${RELEASE_NOTES//$'\r'/'%0D'}"
101- RELEASE_NOTES="$(echo "$RELEASE_NOTES" | sed -z 's/\n/\\n/g')"
102- echo "new_release_notes=${RELEASE_NOTES}" >> $GITHUB_OUTPUT ;
103- fi ;
124+ RELEASE_NOTES="${RELEASE_NOTES//$'\n'/'%0A'}"
125+ echo "new_release_notes=${RELEASE_NOTES}" >> $GITHUB_OUTPUT
126+ echo "Release notes captured successfully"
127+ else
128+ echo "No release notes available"
129+ echo "new_release_notes=No release notes available" >> $GITHUB_OUTPUT
104130 fi
105131
106- - name : " Do something else when a new release published "
132+ - name : " Release summary "
107133 if : steps.semantic-release.outputs.new_release_published == 'true'
108134 shell : bash
109135 run : |
110- echo ${{ steps.semantic- release.outputs.new_release_version }}
111- echo ${{ steps.semantic-release.outputs.new_release_major_version }}
112- echo ${{ steps.semantic-release.outputs.new_release_minor_version }}
113- echo ${{ steps.semantic-release.outputs.new_release_patch_version }}
114- echo ${{ steps.semantic-release.outputs.new_release_patch_version }}
136+ echo "A new release has been published!"
137+ echo "Version: ${{ steps.semantic-release.outputs.new_release_version }}"
138+ echo "Major: ${{ steps.semantic-release.outputs.new_release_major_version }}"
139+ echo "Minor: ${{ steps.semantic-release.outputs.new_release_minor_version }}"
140+ echo "Patch: ${{ steps.semantic-release.outputs.new_release_patch_version }}"
0 commit comments