From a003db77e4f7b392d42c70d161378ac53aa9adbd Mon Sep 17 00:00:00 2001 From: JustArchi Date: Fri, 31 Jul 2020 20:35:28 +0200 Subject: [PATCH] Move github releases publishing from AppVeyor to GitHub actions --- .github/RELEASE_TEMPLATE.md | 17 ++++++ .github/workflows/ci.yml | 115 ++++++++++++++++++++++++++++++++++-- appveyor.yml | 30 ++-------- 3 files changed, 130 insertions(+), 32 deletions(-) create mode 100644 .github/RELEASE_TEMPLATE.md diff --git a/.github/RELEASE_TEMPLATE.md b/.github/RELEASE_TEMPLATE.md new file mode 100644 index 000000000..aef9ab3f5 --- /dev/null +++ b/.github/RELEASE_TEMPLATE.md @@ -0,0 +1,17 @@ +### Notice + +**Pre-releases are experimental versions that often contain unpatched bugs, work-in-progress features or rewritten implementations. If you don't consider yourself advanced user, please download **[latest stable release](https://github.com/JustArchiNET/ArchiSteamFarm/releases/latest)** instead. Pre-release versions are dedicated to users who know how to report bugs, deal with issues and give feedback - no technical support will be given. Check out ASF **[release cycle](https://github.com/JustArchiNET/ArchiSteamFarm/wiki/Release-cycle)** if you'd like to learn more.** + +--- + +### Changelog + +This is automated GitHub deployment, human-readable changelog should be available soon. In the meantime please refer to **[GitHub commits](https://github.com/JustArchiNET/ArchiSteamFarm/commits/master)**. + +--- + +### Support + +ASF is available for free, this release was made possible thanks to the people that decided to support the project. If you're grateful for what we're doing, please consider donating. Developing ASF requires massive amount of time and knowledge, especially when it comes to Steam (and its problems). Even $1 is highly appreciated and shows that you care. Thank you! + +[![GitHub sponsor](https://img.shields.io/badge/GitHub-sponsor-yellow.svg?logo=github)](https://github.com/sponsors/JustArchi) [![Patreon support](https://img.shields.io/badge/Patreon-support-yellow.svg?logo=patreon)](https://www.patreon.com/JustArchi) [![PayPal.me donate](https://img.shields.io/badge/PayPal.me-donate-yellow.svg?logo=paypal)](https://www.paypal.me/JustArchi/5eur) [![PayPal donate](https://img.shields.io/badge/PayPal-donate-yellow.svg?logo=paypal)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=HD2P2P3WGS5Y4) [![Bitcoin donate](https://img.shields.io/badge/Bitcoin-donate-yellow.svg?logo=bitcoin)](https://blockstream.info/address/bc1q8archy9jneaqw6s3cs44azt6duyqdt8c6quml0) [![Steam donate](https://img.shields.io/badge/Steam-donate-yellow.svg?logo=steam)](https://steamcommunity.com/tradeoffer/new/?partner=46697991&token=0ix2Ruv_) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6ce3b914c..f44cb5004 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,7 @@ env: STEAM_TOKEN_DUMPER_TOKEN: ${{ secrets.STEAM_TOKEN_DUMPER_TOKEN }} jobs: - build: + main: strategy: matrix: os: [macos-latest, ubuntu-latest, windows-latest] @@ -204,14 +204,28 @@ jobs: Copy-Item "out\$env:STEAM_TOKEN_DUMPER_NAME\$targetFramework\$env:STEAM_TOKEN_DUMPER_NAME.dll" "out\$variant\plugins\$env:STEAM_TOKEN_DUMPER_NAME" } - # Until https://github.com/dotnet/cli/issues/3267 happens, we'll hack dotnet binary icon on Windows and include .ico file on other platforms - if ($targetFramework -ne "$env:NET_FRAMEWORK_VERSION") { - if (!(Test-Path "out\$variant\ArchiSteamFarm.exe" -PathType Leaf)) { - Copy-Item 'resources\ASF.ico' "out\$variant\ArchiSteamFarm.ico" + # Icon is available only in .NET Framework and .NET Core Windows build, we'll bundle the .ico file for other flavours + if (($targetFramework -eq "$env:NET_CORE_VERSION") -and !(Test-Path "out\$variant\ArchiSteamFarm.exe" -PathType Leaf)) { + Copy-Item 'resources\ASF.ico' "out\$variant\ArchiSteamFarm.ico" + } + + # By default use fastest compression + $compressionArgs = '-mx=1' + + # Include extra logic for builds marked for release + if ($env:GITHUB_REF -like 'refs/tags/*') { + $tag = $env:GITHUB_REF.Substring(10) + + # Tweak compression args for release publishing + $compressionArgs = '-mx=9', '-mfb=258', '-mpass=15' + + # Update link in Changelog.html accordingly + if (Test-Path "out\$variant\Changelog.html" -PathType Leaf) { + (Get-Content "out\$variant\Changelog.html").Replace('ArchiSteamFarm/commits/master', "ArchiSteamFarm/releases/tag/$tag") | Set-Content "out\$variant\Changelog.html" } } - 7z a -bd -slp -tzip -mm=Deflate -mx=1 "out\ASF-$variant.zip" "$env:GITHUB_WORKSPACE\out\$variant\*" + 7z a -bd -slp -tzip -mm=Deflate $compressionArgs "out\ASF-$variant.zip" "$env:GITHUB_WORKSPACE\out\$variant\*" if ($LastExitCode -ne 0) { throw "Last command failed." @@ -272,3 +286,92 @@ jobs: with: name: ${{ matrix.os }}_ASF-win-x64 path: out/ASF-win-x64.zip + + - name: Create ArchiSteamFarm GitHub release + id: github_release + if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && startsWith(matrix.os, 'windows-') }} + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: ArchiSteamFarm V${{ github.ref }} + body_path: .github/RELEASE_TEMPLATE.md + prerelease: true + + - name: Upload ASF-generic to GitHub release + if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && startsWith(matrix.os, 'windows-') }} + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.github_release.outputs.upload_url }} + asset_path: out/ASF-generic.zip + asset_name: ASF-generic.zip + asset_content_type: application/zip + + - name: Upload ASF-generic-netf to GitHub release + if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && startsWith(matrix.os, 'windows-') }} + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.github_release.outputs.upload_url }} + asset_path: out/ASF-generic-netf.zip + asset_name: ASF-generic-netf.zip + asset_content_type: application/zip + + - name: Upload ASF-linux-arm to GitHub release + if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && startsWith(matrix.os, 'windows-') }} + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.github_release.outputs.upload_url }} + asset_path: out/ASF-linux-arm.zip + asset_name: ASF-linux-arm.zip + asset_content_type: application/zip + + - name: Upload ASF-linux-arm64 to GitHub release + if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && startsWith(matrix.os, 'windows-') }} + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.github_release.outputs.upload_url }} + asset_path: out/ASF-linux-arm64.zip + asset_name: ASF-linux-arm64.zip + asset_content_type: application/zip + + - name: Upload ASF-linux-x64 to GitHub release + if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && startsWith(matrix.os, 'windows-') }} + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.github_release.outputs.upload_url }} + asset_path: out/ASF-linux-x64.zip + asset_name: ASF-linux-x64.zip + asset_content_type: application/zip + + - name: Upload ASF-osx-x64 to GitHub release + if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && startsWith(matrix.os, 'windows-') }} + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.github_release.outputs.upload_url }} + asset_path: out/ASF-osx-x64.zip + asset_name: ASF-osx-x64.zip + asset_content_type: application/zip + + - name: Upload ASF-win-x64 to GitHub release + if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && startsWith(matrix.os, 'windows-') }} + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.github_release.outputs.upload_url }} + asset_path: out/ASF-win-x64.zip + asset_name: ASF-win-x64.zip + asset_content_type: application/zip diff --git a/appveyor.yml b/appveyor.yml index 5af2c85c6..da00c7337 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -234,11 +234,9 @@ after_test: Copy-Item "out\$env:STEAM_TOKEN_DUMPER_NAME\$targetFramework\$env:STEAM_TOKEN_DUMPER_NAME.dll" "out\$variant\plugins\$env:STEAM_TOKEN_DUMPER_NAME" } - # Until https://github.com/dotnet/cli/issues/3267 happens, we'll hack dotnet binary icon on Windows and include .ico file on other platforms - if ($targetFramework -ne "$env:NET_FRAMEWORK_VERSION") { - if (!(Test-Path "out\$variant\ArchiSteamFarm.exe" -PathType Leaf)) { - Copy-Item 'resources\ASF.ico' "out\$variant\ArchiSteamFarm.ico" - } + # Icon is available only in .NET Framework and .NET Core Windows build, we'll bundle the .ico file for other flavours + if (($targetFramework -eq "$env:NET_CORE_VERSION") -and !(Test-Path "out\$variant\ArchiSteamFarm.exe" -PathType Leaf)) { + Copy-Item 'resources\ASF.ico' "out\$variant\ArchiSteamFarm.ico" } # By default use fastest compression @@ -250,11 +248,6 @@ after_test: if (Test-Path "out\$variant\Changelog.html" -PathType Leaf) { (Get-Content "out\$variant\Changelog.html").Replace('ArchiSteamFarm/commits/master', "ArchiSteamFarm/releases/tag/$env:APPVEYOR_REPO_TAG_NAME") | Set-Content "out\$variant\Changelog.html" } - - # If this build is going to be deployed further, prefer maximum compression - if ($env:APPVEYOR_BUILD_WORKER_IMAGE -eq 'Visual Studio 2019') { - $compressionArgs = '-mx=9', '-mfb=258', '-mpass=15' - } } 7z a -bd -slp -tzip -mm=Deflate $compressionArgs "out\ASF-$variant.zip" "$env:APPVEYOR_BUILD_FOLDER\out\$variant\*" @@ -285,22 +278,7 @@ after_test: Remove-Item 'tools\ArchiCrowdin\crowdin_identity.yml' } } -deploy: -- provider: GitHub - tag: $(appveyor_repo_tag_name) - release: ArchiSteamFarm V$(appveyor_repo_tag_name) - description: '### Notice\n\n**Pre-releases are experimental versions that often contain unpatched bugs, work-in-progress features or rewritten implementations. If you don''t consider yourself advanced user, please download **[latest stable release](https://github.com/JustArchiNET/ArchiSteamFarm/releases/latest)** instead. Pre-release versions are dedicated to users who know how to report bugs, deal with issues and give feedback - no technical support will be given. Check out ASF **[release cycle](https://github.com/JustArchiNET/ArchiSteamFarm/wiki/Release-cycle)** if you''d like to learn more.**\n\n---\n\n### Changelog\n\nThis is automated AppVeyor GitHub deployment, human-readable changelog should be available soon. In the meantime please refer to **[GitHub commits](https://github.com/JustArchiNET/ArchiSteamFarm/commits/$(appveyor_repo_tag_name))**.\n\n---\n\n### Support\n\nASF is available for free, this release was made possible thanks to the people that decided to support the project. If you''re grateful for what we''re doing, please consider donating. Developing ASF requires massive amount of time and knowledge, especially when it comes to Steam (and its problems). Even $1 is highly appreciated and shows that you care. Thank you!\n\n [![GitHub sponsor](https://img.shields.io/badge/GitHub-sponsor-yellow.svg?logo=github)](https://github.com/sponsors/JustArchi) [![Patreon support](https://img.shields.io/badge/Patreon-support-yellow.svg?logo=patreon)](https://www.patreon.com/JustArchi) [![PayPal.me donate](https://img.shields.io/badge/PayPal.me-donate-yellow.svg?logo=paypal)](https://www.paypal.me/JustArchi/5eur) [![PayPal donate](https://img.shields.io/badge/PayPal-donate-yellow.svg?logo=paypal)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=HD2P2P3WGS5Y4) [![Bitcoin donate](https://img.shields.io/badge/Bitcoin-donate-yellow.svg?logo=bitcoin)](https://blockstream.info/address/bc1q8archy9jneaqw6s3cs44azt6duyqdt8c6quml0) [![Steam donate](https://img.shields.io/badge/Steam-donate-yellow.svg?logo=steam)](https://steamcommunity.com/tradeoffer/new/?partner=46697991&token=0ix2Ruv_)' - auth_token: - secure: uYK1wf3znNdkuQqImXR6rZ94ESgzF1vJHCAcJ75Y+m+/pc/Ro6cikzy6O7DVZ39T - artifact: /.*/ - draft: false - prerelease: true - force_update: false - on: - branch: master - configuration: Release - appveyor_build_worker_image: Visual Studio 2019 - appveyor_repo_tag: true +deploy: off notifications: - provider: Webhook url: