ci: release 0.0.4 #20
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: build Release | |
| on: [push] | |
| jobs: | |
| build: | |
| name: build Release | |
| runs-on: windows-latest | |
| permissions: | |
| security-events: write | |
| actions: read | |
| contents: write # Required for creating releases and pushing tags | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - language: c-cpp | |
| build-mode: manual | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v2 | |
| # Initializes the CodeQL tools for scanning. | |
| - name: Initialize CodeQL | |
| uses: github/codeql-action/init@v3 | |
| with: | |
| languages: ${{ matrix.language }} | |
| build-mode: ${{ matrix.build-mode }} | |
| - name: Install third party libraries | |
| run: ./InstallThirdPartyLibraries.ps1 | |
| - name: Setup MSBuild | |
| uses: microsoft/setup-msbuild@v2 | |
| - name: Build solution | |
| run: msbuild /m CppCoverage.sln /t:OpenCppCoverage /p:Configuration=Release /p:Platform=x64 | |
| - name: Perform CodeQL Analysis | |
| uses: github/codeql-action/analyze@v3 | |
| with: | |
| category: "/language:${{matrix.language}}" | |
| - name: compress release package | |
| run: Compress-Archive -Path .\x64\Release\* -DestinationPath .\OpenCppCoverage.zip | |
| - name: release package | |
| shell: pwsh | |
| run: | | |
| # Configure git to use the GitHub token for authentication | |
| git config --global user.name "github-actions[bot]" | |
| git config --global user.email "github-actions[bot]@github.com" | |
| $version = Get-Content .\VERSION.txt | |
| $commitId = git rev-list --no-merges -n 1 HEAD | |
| $tagName = "v$version" | |
| # Set error action preference to continue on error | |
| $ErrorActionPreference = "Continue" | |
| # Check if tag already exists locally | |
| $existingTag = git tag -l $tagName | |
| # Check if GitHub release already exists | |
| $existingRelease = $null | |
| try { | |
| $existingRelease = gh release view $tagName 2>$null | |
| } catch { | |
| # Release doesn't exist, which is fine | |
| } | |
| if (-not $existingTag -and -not $existingRelease) { | |
| Write-Host "Creating new tag and release: $tagName" | |
| # Create and push tag | |
| git tag $tagName $commitId | |
| $tagResult = git push origin $tagName | |
| if ($LASTEXITCODE -eq 0) { | |
| # Create GitHub release | |
| $releaseResult = gh release create $tagName .\OpenCppCoverage.zip --title "OpenCppCoverage $version" --notes "Release $version" | |
| if ($LASTEXITCODE -eq 0) { | |
| Write-Host "Successfully created release $tagName" | |
| } else { | |
| Write-Host "Failed to create GitHub release for $tagName, but tag was created" | |
| } | |
| } else { | |
| Write-Host "Failed to push tag $tagName" | |
| } | |
| } elseif ($existingTag) { | |
| Write-Host "Tag $tagName already exists locally, skipping release creation" | |
| } elseif ($existingRelease) { | |
| Write-Host "Release $tagName already exists on GitHub, skipping release creation" | |
| } | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |