Skip to content

Mocale Release

Mocale Release #44

name: Mocale Release
on:
workflow_dispatch:
inputs:
artifact-name:
type: string
description: The name of the artifact.
default: drop
artifacts:
type: string
description: The path to the artifacts.
default: "Artifacts/**/*.nupkg"
release-notes:
type: string
description: The notes for the release.
default: "Notes..."
required: true
artifactErrorsFailBuild:
type: boolean
description: Whether to fail the build if there are errors in the artifact.
default: true
jobs:
github-release:
runs-on: ubuntu-latest
env:
IS_PRERELEASE: true
RELEASE_TITLE: v0.0.1
VERSION_NAME: 0.0.1
steps:
- uses: actions/checkout@v3
- name: Download artifacts
id: download-artifact
uses: dawidd6/action-download-artifact@v2
with:
name: ${{ inputs.artifact-name }}
repo: Axemasta/Mocale
workflow: mocale-ci.yml
path: Artifacts/
search_artifacts: true
- name: Process NuGet Version
shell: pwsh
working-directory: Artifacts/
id: process-version
run: |
$Artifact = Get-ChildItem -Recurse | Where-Object { $_.Name.EndsWith('.nupkg') -and $_.Name.StartsWith('Mocale.') } | Select-Object -First 1
$ArtifactName = $Artifact.Name
$Pattern = '\b\d+\.\d+\.\d+(-\w+)?\b'
$Match = [regex]::Match($ArtifactName, $Pattern)
if (!$Match.Success) {
Write-Host "Unable to parse version number for artifact: $($ArtifactName)"
exit
}
$ArtifactName = $Match.Value
$IsPreRelease = $false
if ($ArtifactName.EndsWith("-pre")) {
$IsPreRelease = $true
}
if ($IsPreRelease) {
echo "IS_PRERELEASE=true" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
} else {
echo "IS_PRERELEASE=false" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
}
echo "action_state=$ArtifactName" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
echo "VERSION_NAME=$ArtifactName" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
echo "RELEASE_TITLE=v$ArtifactName" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
Write-Host "ArtifactName = $ArtifactName"
Write-Host "Is PreRelease = $IsPreRelease"
- name: Bump version and push tag
id: tag_version
uses: mathieudutour/github-tag-action@v6.1
with:
custom_tag: ${{ env.VERSION_NAME }}
github_token: ${{ secrets.GITHUB_TOKEN }}
- uses: ncipollo/release-action@main
name: Create Release
with:
artifacts: ${{ inputs.artifacts }}
artifactErrorsFailBuild: ${{ inputs.artifactErrorsFailBuild }}
draft: true
generateReleaseNotes: true
name: ${{ env.RELEASE_TITLE }}
tag: ${{ env.VERSION_NAME }}
prerelease: ${{ env.IS_PRERELEASE }}
body: ${{ inputs.release-notes }}
- name: Publish NuGet
run: nuget push ${{ inputs.artifacts }} -Source 'https://api.nuget.org/v3/index.json' -ApiKey ${{ secrets.NUGET_API_KEY }} -SkipDuplicate