Skip to content

Update main.yml

Update main.yml #56

Workflow file for this run

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