release-on-tag.yml: fixed pwsh array usage #10
Workflow file for this run
This file contains 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: ReleaseOnTag | |
on: | |
push: | |
tags: | |
- 'v[0-9]+.[0-9]+.[0-9]+' | |
- 'v[0-9]+.[0-9]+.[0-9]-*' | |
env: | |
# Pre-declare variables defined by step id: build-vars | |
REPO_OWNER: '' | |
REPO_NAME: '' | |
VERSION: '' | |
PRERELEASE: '' | |
HAS_PRERELEASE: '' | |
RELEASE_ZIP: '' | |
jobs: | |
build: | |
runs-on: windows-latest | |
permissions: | |
contents: write | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Define build variables | |
id: build-vars | |
run: | | |
####################################################### | |
# REPO_OWNER and REPO_NAME | |
####################################################### | |
echo "GITHUB_REPOSITORY: $env:GITHUB_REPOSITORY" | |
$REPO_PATTERN = '^(.*)/(.*)$' | |
if ($env:GITHUB_REPOSITORY -match $REPO_PATTERN) { | |
$REPO_OWNER = $matches[1] | |
$REPO_NAME = $matches[2] | |
} else { | |
throw "Unsupported repository format: $env:GITHUB_REPOSITORY" | |
} | |
echo "REPO_OWNER=$REPO_OWNER" >> $env:GITHUB_ENV | |
echo "REPO_NAME=$REPO_NAME" >> $env:GITHUB_ENV | |
####################################################### | |
# VERSION, PRERELEASE, HAS_PRERELEASE | |
####################################################### | |
echo "GITHUB_REF_NAME: $env:GITHUB_REF_NAME" | |
$VERSION_PATTERN = '^v?(\d+\.\d+\.\d+)(?:-(.*))?$' | |
$REPO_PATTERN = '^(.*)/(.*)$' | |
if ($env:GITHUB_REF_NAME -match $VERSION_PATTERN) { | |
$VERSION = $matches[1] | |
$PRERELEASE = $matches[2] | |
$HAS_PRERELEASE = $PRERELEASE ? "true" : "false" | |
} else { | |
throw "Unsupported version format: $env:GITHUB_REF_NAME" | |
} | |
echo "VERSION=$VERSION" >> $env:GITHUB_ENV | |
echo "PRERELEASE=$PRERELEASE" >> $env:GITHUB_ENV | |
echo "HAS_PRERELEASE=$HAS_PRERELEASE" >> $env:GITHUB_ENV | |
####################################################### | |
# RELEASE_ZIP | |
####################################################### | |
$RELEASE_ZIP = "$REPO_NAME-$VERSION.zip" | |
echo "RELEASE_ZIP=$RELEASE_ZIP" >> $env:GITHUB_ENV | |
####################################################### | |
# Display newly defined variables | |
####################################################### | |
Get-Content $env:GITHUB_ENV | |
- name: Set version in AssemblyInfo.cs files | |
id: set-assembly-version | |
uses: secondbounce/assemblyinfo-update@v2 | |
with: | |
version: ${{ env.VERSION }} | |
filename: 'AssemblyInfo.cs' | |
- name: Display assembly version | |
run: | | |
echo "Assembly version: ${{steps.set-assembly-version.outputs.version}}" | |
- name: Build | |
run: | | |
dotnet build --configuration Release "${env:REPO_NAME}.sln" | |
- name: Create release zip | |
run: | | |
$filesToZip = @() | |
$filesToZip += Get-ChildItem -Recurse -Filter *.exe | Where-Object { $_ -match 'bin\\(Debug|Release)\\[^\\]+\.exe' } | |
if (Test-Path README.md) { | |
$filesToZip += Get-Item README.md | |
} else { | |
Write-Host "README.md not found, skipping." | |
} | |
Compress-Archive -Force -CompressionLevel Optimal -Path $filesToZip -DestinationPath $env:RELEASE_ZIP | |
- name: Create Release | |
uses: softprops/action-gh-release@v2 | |
with: | |
files: ${{ env.RELEASE_ZIP }} | |
tag_name: ${{ github.ref_name }} | |
body: ${{ github.ref_name }} | |
draft: false | |
prerelease: ${{ env.HAS_PRERELEASE }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |