Skip to content

release-on-tag.yml: fixed pwsh array usage #10

release-on-tag.yml: fixed pwsh array usage

release-on-tag.yml: fixed pwsh array usage #10

Workflow file for this run

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