@@ -51,16 +51,43 @@ jobs:
5151 $commitId = git rev-list --no-merges -n 1 HEAD
5252 $tagName = "v$version"
5353
54- # Check if tag already exists
54+ # Set error action preference to continue on error
55+ $ErrorActionPreference = "Continue"
56+
57+ # Check if tag already exists locally
5558 $existingTag = git tag -l $tagName
56- if (-not $existingTag) {
59+
60+ # Check if GitHub release already exists
61+ $existingRelease = $null
62+ try {
63+ $existingRelease = gh release view $tagName 2>$null
64+ } catch {
65+ # Release doesn't exist, which is fine
66+ }
67+
68+ if (-not $existingTag -and -not $existingRelease) {
69+ Write-Host "Creating new tag and release: $tagName"
70+
71+ # Create and push tag
5772 git tag $tagName $commitId
58- git push origin $tagName
73+ $tagResult = git push origin $tagName
5974
60- # Create GitHub release
61- gh release create $tagName .\x64\Release\OpenCppCoverage.exe --title "OpenCppCoverage $version" --notes "Release $version"
62- } else {
63- Write-Host "Tag $tagName already exists, skipping release creation"
75+ if ($LASTEXITCODE -eq 0) {
76+ # Create GitHub release
77+ $releaseResult = gh release create $tagName .\x64\Release\OpenCppCoverage.exe --title "OpenCppCoverage $version" --notes "Release $version"
78+
79+ if ($LASTEXITCODE -eq 0) {
80+ Write-Host "Successfully created release $tagName"
81+ } else {
82+ Write-Host "Failed to create GitHub release for $tagName, but tag was created"
83+ }
84+ } else {
85+ Write-Host "Failed to push tag $tagName"
86+ }
87+ } elseif ($existingTag) {
88+ Write-Host "Tag $tagName already exists locally, skipping release creation"
89+ } elseif ($existingRelease) {
90+ Write-Host "Release $tagName already exists on GitHub, skipping release creation"
6491 }
6592 env :
6693 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments