Merge pull request #5 from achiez/pre-release #4
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: Build and Release | |
on: | |
push: | |
tags: | |
- '*' | |
jobs: | |
build: | |
if: github.ref == 'refs/heads/master' | |
runs-on: windows-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v1 | |
with: | |
dotnet-version: "8.x" | |
- name: Restore dependencies | |
run: dotnet restore NebulaAuth.sln | |
- name: Build | |
run: dotnet build NebulaAuth.sln --configuration Release | |
- name: Get version from assembly | |
id: get-version | |
shell: pwsh | |
run: | | |
$content = Get-Content -Path "NebulaAuth/NebulaAuth.csproj" -Raw | |
$version = [regex]::Match($content, '<AssemblyVersion>(.*?)<\/AssemblyVersion>').Groups[1].Value | |
Write-Output "VERSION=$version" >> $env:GITHUB_ENV | |
- name: Check if tag exists | |
id: tag_exists | |
run: | | |
if (git tag -l | Select-String -Pattern "^${env:VERSION}$") { | |
Write-Output "Version $env:VERSION already exists." | |
exit 1 | |
} | |
- name: Check changelog | |
run: | | |
if (-not (Test-Path "changelog/${env:VERSION}.html")) { | |
Write-Output "Changelog file changelog/${env:VERSION}.html does not exist." | |
exit 1 | |
} | |
- name: Insert date into changelog | |
run: | | |
$date = Get-Date -Format "dd.MM.yyyy" | |
(Get-Content "changelog/${env:VERSION}.html") -replace '(?<=<div class="date">).*?(?=</div>)', $date | Set-Content "changelog/${env:VERSION}.html" | |
- name: Extract changelog description | |
id: extract_description | |
run: | | |
$description = (Get-Content "changelog/${env:VERSION}.html" | Select-String -Pattern '(?<=<div class="description">).*?(?=</div>)' | ForEach-Object { $_.Matches.Value }) -replace '<br\/>', "`n" | |
Write-Output "DESCRIPTION=$description" >> $env:GITHUB_ENV | |
- name: Create ZIP | |
run: | | |
New-Item -ItemType Directory -Path release -Force | |
Compress-Archive -Path NebulaAuth/bin/Release -DestinationPath release/NebulaAuth.${env:VERSION}.zip | |
- name: Create GitHub Release | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ env.VERSION }} | |
release_name: NebulaAuth ${{ env.VERSION }} | |
body: | | |
${{ env.DESCRIPTION }} | |
draft: false | |
prerelease: false | |
- name: Upload Release Asset | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: release/NebulaAuth.${{ env.VERSION }}.zip | |
asset_name: NebulaAuth.${{ env.VERSION }}.zip | |
asset_content_type: application/zip | |
- name: Update XML and Changelog html | |
shell: pwsh | |
run: | | |
$xmlContent = @" | |
<?xml version="1.0" encoding="UTF-8"?> | |
<item> | |
<version>${env:VERSION}.0</version> | |
<url>https://github.com/${env:GITHUB_REPOSITORY}/releases/download/${env:VERSION}/NebulaAuth.${env:VERSION}.zip</url> | |
<changelog>https://achiez.github.io/NebulaAuth-Steam-Desktop-Authenticator-by-Achies/changelog/${env:VERSION}.html</changelog> | |
<mandatory>false</mandatory> | |
</item> | |
"@ | |
$xmlContent | Out-File -FilePath update.xml -Encoding UTF8 -Force | |
git config --global user.name 'github-actions' | |
git config --global user.email 'github-actions@github.com' | |
git add changelog/${env:VERSION}.html update.xml | |
git commit -m "Update version to ${env:VERSION} and add changelog" | |
git push origin master |