@@ -86,28 +86,66 @@ runs:
8686
8787 - name : " Run Semantic Release"
8888 id : semantic-release
89- uses : cycjimmy/semantic-release-action@v3.4.1
89+ shell : bash
9090 env :
9191 GITHUB_TOKEN : ${{ inputs.GITHUB_TOKEN }}
92- with :
93- branches : ${{ inputs.BRANCHES }}
94- dry_run : ${{ inputs.DRY_RUN }}
95- working_directory : ${{ inputs.PROJECT_DIRECTORY }}
96- extra_plugins : |
97- @semantic-release/commit-analyzer
98- @semantic-release/release-notes-generator
99- @semantic-release/changelog
100- @semantic-release/github
101- @semantic-release/git
102- @semantic-release/exec
103- conventional-changelog-conventionalcommits@7.0.2
92+ run : |
93+ cd ${{ inputs.PROJECT_DIRECTORY }}
94+
95+ # Run semantic-release
96+ DRY_RUN_FLAG=""
97+ if [ "${{ inputs.DRY_RUN }}" = "true" ]; then
98+ DRY_RUN_FLAG="--dry-run"
99+ fi
100+
101+ # Run semantic-release and capture the output
102+ npx semantic-release $DRY_RUN_FLAG --branches ${{ inputs.BRANCHES }} > semantic-release-output.txt 2>&1 || true
103+
104+ # Display output for debugging
105+ cat semantic-release-output.txt
106+
107+ # Check if a release was created or would be created (in dry-run)
108+ if grep -q "The next release version is" semantic-release-output.txt || grep -q "Published release" semantic-release-output.txt; then
109+ # Try different patterns to extract the version
110+ if grep -q "The next release version is" semantic-release-output.txt; then
111+ NEW_RELEASE_VERSION=$(grep -o "The next release version is [0-9]\+\.[0-9]\+\.[0-9]\+" semantic-release-output.txt | grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+")
112+ else
113+ NEW_RELEASE_VERSION=$(grep -o "Published release [0-9]\+\.[0-9]\+\.[0-9]\+" semantic-release-output.txt | grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+")
114+ fi
115+
116+ echo "new_release_version=$NEW_RELEASE_VERSION" >> $GITHUB_OUTPUT
117+ echo "new_release_published=true" >> $GITHUB_OUTPUT
118+
119+ # Extract major, minor, patch versions
120+ MAJOR=$(echo $NEW_RELEASE_VERSION | cut -d. -f1)
121+ MINOR=$(echo $NEW_RELEASE_VERSION | cut -d. -f2)
122+ PATCH=$(echo $NEW_RELEASE_VERSION | cut -d. -f3)
123+
124+ echo "new_release_major_version=$MAJOR" >> $GITHUB_OUTPUT
125+ echo "new_release_minor_version=$MINOR" >> $GITHUB_OUTPUT
126+ echo "new_release_patch_version=$PATCH" >> $GITHUB_OUTPUT
127+
128+ # Generate a simplified version of the release notes for output
129+ if [ -f "CHANGELOG.md" ]; then
130+ # Extract the latest release notes from the changelog
131+ RELEASE_NOTES=$(awk '/^## / {if (p) exit; p=1} p' CHANGELOG.md | tail -n +2)
132+ echo "new_release_notes<<EOF" >> $GITHUB_OUTPUT
133+ echo "$RELEASE_NOTES" >> $GITHUB_OUTPUT
134+ echo "EOF" >> $GITHUB_OUTPUT
135+ else
136+ echo "new_release_notes=No detailed release notes available" >> $GITHUB_OUTPUT
137+ fi
138+ else
139+ echo "No new version to be released"
140+ echo "new_release_published=false" >> $GITHUB_OUTPUT
141+ echo "new_release_notes=No release notes available" >> $GITHUB_OUTPUT
142+ fi
104143
105144 - name : " Export released version"
106145 id : export-released-version
107146 shell : bash
108147 run : |
109148 if [ "${{ steps.semantic-release.outputs.new_release_version }}" != "" ]; then
110- echo "new_release_version=${{ steps.semantic-release.outputs.new_release_version }}" >> $GITHUB_OUTPUT
111149 echo "New release version: ${{ steps.semantic-release.outputs.new_release_version }}"
112150 else
113151 echo "No new version released"
@@ -118,15 +156,9 @@ runs:
118156 shell : bash
119157 run : |
120158 if [ "${{ steps.semantic-release.outputs.new_release_notes }}" != "" ]; then
121- RELEASE_NOTES="${{ steps.semantic-release.outputs.new_release_notes }}"
122- RELEASE_NOTES="${RELEASE_NOTES//'%'/'%25'}"
123- RELEASE_NOTES="${RELEASE_NOTES//$'\r'/'%0D'}"
124- RELEASE_NOTES="${RELEASE_NOTES//$'\n'/'%0A'}"
125- echo "new_release_notes=${RELEASE_NOTES}" >> $GITHUB_OUTPUT
126159 echo "Release notes captured successfully"
127160 else
128161 echo "No release notes available"
129- echo "new_release_notes=No release notes available" >> $GITHUB_OUTPUT
130162 fi
131163
132164 - name : " Release summary"
0 commit comments