Update main.yml #56
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: .NET Core Desktop Build and Release | |
on: | |
push: | |
branches: | |
- 'Pre-Master' | |
- 'master' | |
env: | |
Solution_Name: vrcosc-magicchatbox.sln | |
Project_Path: vrcosc-magicchatbox\vrcosc_magicchatbox.csproj | |
jobs: | |
build-and-release: | |
runs-on: windows-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
- name: Setup .NET Core | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: 6.0.x | |
- name: Restore Dependencies | |
run: dotnet restore ${{ env.Solution_Name }} | |
- name: Build Solution | |
run: dotnet build ${{ env.Solution_Name }} --configuration Release --no-restore -p:Platform="Any CPU" | |
- name: Extract Version from csproj | |
id: get_version | |
run: | | |
$csproj = "vrcosc-magicchatbox\MagicChatbox.csproj" | |
$pattern = '<Version>(.*)<\/Version>' | |
$content = Get-Content $csproj -Raw | |
$match = [regex]::Match($content, $pattern) | |
if ($match.Success -and $match.Groups.Count -gt 1) { | |
$version = $match.Groups[1].Value | |
echo "VERSION=$version" | Out-File -Append -Encoding utf8 $Env:GITHUB_ENV | |
echo "::set-output name=VERSION::$version" | |
} else { | |
echo "Error: Version not found in csproj file." | |
exit 1 | |
} | |
shell: pwsh | |
env: | |
Solution_Name: vrcosc-magicchatbox.sln | |
Project_Path: vrcosc-magicchatbox\MagicChatbox.csproj | |
- name: Create Zip File | |
run: | | |
Compress-Archive -Path vrcosc-magicchatbox/bin/Release/net6.0-windows10.0.22000.0/* -DestinationPath "MagicChatbox-${{ steps.get_version.outputs.VERSION }}.zip" | |
- name: Upload and Scan with VirusTotal | |
id: virustotal_scan | |
run: | | |
$file_path = "./MagicChatbox-${{ steps.get_version.outputs.VERSION }}.zip" | |
$api_key = "${{ secrets.VIRUSTOTAL_API_KEY }}" | |
$response = Invoke-RestMethod -Uri "https://www.virustotal.com/api/v3/files" -Method Post -Headers @{ | |
"x-apikey" = $api_key | |
} -Form @{ | |
"file" = Get-Item $file_path | |
} | |
$scan_id = $response.data.id | |
echo "::set-output name=SCAN_ID::$scan_id" | |
- name: Get VirusTotal Scan Report | |
id: virustotal_report | |
run: | | |
$api_key = "${{ secrets.VIRUSTOTAL_API_KEY }}" | |
$scan_id = "${{ steps.virustotal_scan.outputs.SCAN_ID }}" | |
$response = Invoke-RestMethod -Uri "https://www.virustotal.com/api/v3/analyses/$scan_id" -Headers @{ | |
"x-apikey" = $api_key | |
} | |
$report_url = "https://www.virustotal.com/gui/file/$($response.meta.file_info.sha256)/detection" | |
echo "::set-output name=REPORT_URL::$report_url" | |
- name: Determine Release Type | |
id: determine_release_type | |
run: | | |
if ($GITHUB_REF -eq 'refs/heads/master') { | |
echo "PRE_RELEASE=false" | Out-File -Append -Encoding utf8 $Env:GITHUB_ENV | |
echo "::set-output name=PRE_RELEASE::false" | |
} else { | |
echo "PRE_RELEASE=true" | Out-File -Append -Encoding utf8 $Env:GITHUB_ENV | |
echo "::set-output name=PRE_RELEASE::true" | |
} | |
shell: pwsh | |
- name: Get Commits Since Last Release | |
id: get_commits | |
run: | | |
$previousTag = git describe --tags --abbrev=0 | |
$commits = git log $previousTag..HEAD --oneline | |
$formattedCommits = $commits | ForEach-Object { | |
$shortCommit = ($_ -split ' ')[1..10] -join ' ' + " ... " + ($_ -split ' ')[-5..-1] -join ' ' | |
$commitHash = ($_ -split ' ')[0] | |
"$shortCommit ([commit](https://github.com/BoiHanny/vrcosc-magicchatbox/commit/$commitHash))" | |
} | |
$formattedCommits -join "`n" | Out-File -FilePath commits.md -Encoding utf8 | |
echo "::set-output name=COMMITS::$(cat commits.md)" | |
shell: pwsh | |
- name: Create Release | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.MY_PAT }} | |
with: | |
tag_name: v${{ steps.get_version.outputs.VERSION }} | |
release_name: v${{ steps.get_version.outputs.VERSION }} | |
draft: false | |
prerelease: ${{ steps.determine_release_type.outputs.PRE_RELEASE }} | |
body: | | |
<div align="center"> | |
<h1>MagicChatbox v${{ steps.get_version.outputs.VERSION }}</h1> | |
<img src="https://img.shields.io/github/downloads/BoiHanny/vrcosc-magicchatbox/v${{ steps.get_version.outputs.VERSION }}/total?color=%23AB3BFF&label=Version%20downloads&logo=%20&style=plastic" alt="Version downloads"> | |
<p> | |
<a href="https://github.com/BoiHanny/vrcosc-magicchatbox/releases/download/v${{ steps.get_version.outputs.VERSION }}/MagicChatbox-${{ steps.get_version.outputs.VERSION }}.zip"> | |
<img src="https://custom-icon-badges.herokuapp.com/badge/-Download-%23512BD4?style=for-the-badge&logo=download&logoColor=white" alt="Download"> | |
</a> | |
<a href="${{ steps.virustotal_report.outputs.REPORT_URL }}"> | |
<img src="https://custom-icon-badges.herokuapp.com/badge/-Scan%20at%20VirusTotal-blue?style=for-the-badge&logo=virustotal&logoColor=white" alt="VirusTotal"> | |
</a> | |
</p> | |
</div> | |
<hr> | |
<div align="center"> | |
<h2>Download and Installation</h2> | |
<p>Follow these steps to download and install the latest version of MagicChatbox.</p> | |
</div> | |
<ol> | |
<li>Download the .zip file from the link above.</li> | |
<li>Ensure you have <a href="https://dotnet.microsoft.com/en-us/download">.NET 6</a> installed.</li> | |
<li>Right-click on the downloaded .zip file and select <b>Extract All</b>.</li> | |
<li>The extracted content will be in a new folder in your downloads directory (or your chosen location).</li> | |
<li>Open the newly created folder.</li> | |
<li>Run <code>MagicChatbox.exe</code> to start the application.</li> | |
</ol> | |
<hr> | |
<div align="center"> | |
<h2>Release Notes</h2> | |
<p>Details about the changes and improvements in this version.</p> | |
</div> | |
<ul> | |
${{ steps.get_commits.outputs.COMMITS }} | |
</ul> | |
<hr> | |
<div align="center"> | |
<h2>Contact and Support</h2> | |
<p>If you encounter any issues or have questions, feel free to reach out:</p> | |
<ul> | |
<li>GitHub Issues: <a href="https://github.com/BoiHanny/vrcosc-magicchatbox/issues">Report a problem</a></li> | |
<li>Email: <a href="mailto:support@magicchatbox.com">support@magicchatbox.com</a></li> | |
</ul> | |
</div> | |
- name: Upload Release Asset | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.MY_PAT }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./MagicChatbox-${{ steps.get_version.outputs.VERSION }}.zip | |
asset_name: MagicChatbox-${{ steps.get_version.outputs.VERSION }}.zip | |
asset_content_type: application/zip |