Skip to content

ci: release 0.0.4

ci: release 0.0.4 #20

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 }}