Build #8
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 | |
on: | |
push: | |
branches: [ main ] | |
workflow_dispatch: | |
env: | |
VERSION: 1.0.7 | |
jobs: | |
setup: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Setup Git user | |
run: | | |
git config --local user.name "GitHub Actions" | |
git config --local user.email "<>" | |
- name: Cancel Previous Runs | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
build-windows: | |
needs: setup | |
runs-on: windows-latest | |
permissions: | |
contents: write | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v1 | |
with: | |
dotnet-version: 8.0.x | |
- name: Restore dependencies | |
run: dotnet restore ./Windows/CaptureWolf.sln | |
- name: Setup VS Dev Environment | |
uses: seanmiddleditch/gha-setup-vsdevenv@v4 | |
- name: Update version in .vdproj file | |
run: | | |
$content = Get-Content -Path ./Windows/CaptureWolf.Installer/CaptureWolf.Installer.vdproj -Raw | |
$content = $content -replace '(?<=ProductVersion" = "8:)\d+\.\d+\.\d+', '${{ env.VERSION }}' | |
Set-Content -Path ./Windows/CaptureWolf.Installer/CaptureWolf.Installer.vdproj -Value $content | |
shell: pwsh | |
- name: Build | |
run: dotnet build --configuration Release --no-restore ./Windows/CaptureWolf.Form/CaptureWolf.UI.csproj | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v2 | |
with: | |
name: windows-standalone | |
path: ./Windows/CaptureWolf.Form/bin/Release/ | |
- name: Build Installer | |
run: devenv.com ./Windows/CaptureWolf.Installer/CaptureWolf.Installer.vdproj /build "Release|Any CPU" | |
- name: Upload Installer | |
uses: actions/upload-artifact@v2 | |
with: | |
name: windows-installer | |
path: ./Windows/CaptureWolf.Installer/Release/ | |
- name: Commit version bump | |
run: | | |
git config --local user.email "[email protected]" | |
git config --local user.name "GitHub Action" | |
git add ./Windows/CaptureWolf.Installer/CaptureWolf.Installer.vdproj | |
git commit -m "Bump version to ${{ env.VERSION }}" | |
shell: bash | |
build-osx: | |
needs: setup | |
runs-on: macos-14 | |
defaults: | |
run: | |
working-directory: ${{ github.workspace }}/OSX | |
permissions: | |
contents: write | |
steps: | |
- name: Checkout files | |
uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 21 | |
- name: List Xcode installations | |
run: sudo ls -1 /Applications | grep "Xcode" | |
- name: Select XCode version | |
uses: maxim-lobanov/[email protected] | |
with: | |
xcode-version: '15.2.0' | |
- name: Create Cert folder | |
run: mkdir -p cert | |
- name: Decode signing certificate into a file | |
env: | |
CERTIFICATE_BASE64: ${{ secrets.SIGNING_CERT }} | |
run: echo $CERTIFICATE_BASE64 | base64 --decode > ./cert/signing-cert.cer | |
- name: Decode signing key into a file | |
env: | |
KEY_BASE64: ${{ secrets.SIGNING_KEY }} | |
run: echo $KEY_BASE64 | base64 --decode > ./cert/signing-key.p12 | |
- name: Install dependencies | |
run: bundle install | |
- name: Bump ios version | |
uses: yanamura/ios-bump-version@v1 | |
with: | |
version: ${{ env.VERSION }} | |
project-path: OSX | |
- name: Deploy app | |
run: bundle exec fastlane mac release --verbose | |
env: | |
SIGNING_CERT_PASSWORD: ${{ secrets.SIGNING_CERT_PASSWORD }} | |
SIGNING_CERT_FILE_PATH: ./cert/signing-cert.cer | |
SIGNING_KEY_FILE_PATH: ./cert/signing-key.p12 | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v2 | |
with: | |
name: osx-installer | |
path: ./OSX/release/ | |
- name: Commit changes | |
uses: stefanzweifel/git-auto-commit-action@v5 | |
create-release: | |
needs: [build-windows, build-osx] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Download all workflow run artifacts | |
uses: actions/download-artifact@v2 | |
- name: Generate release notes | |
id: release_notes | |
run: | | |
PREV_VERSION=$(awk -F. -v version="${{ env.VERSION }}" 'BEGIN { OFS = "."; } { $NF--; print $0; }' <<< version) | |
echo "::set-output name=body::**Full Changelog**: https://github.com/galadril/CaptureWolf/compare/v${PREV_VERSION}...v${{ env.VERSION }}\n\n### ⬇️ Downloads:\n**Windows**\n* [🖥️ Standalone](https://github.com/galadril/CaptureWolf/files/${{ steps.create_release.outputs.id }}/windows-standalone.zip)\n* [💾 Installer](https://github.com/galadril/CaptureWolf/files/${{ steps.create_release.outputs.id }}/windows-installer.zip)\n\n**macOS**\n* [🍎 Installer](https://github.com/galadril/CaptureWolf/files/${{ steps.create_release.outputs.id }}/osx-installer.zip)" | |
shell: bash | |
- name: Create Release | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ env.VERSION }} | |
release_name: Release ${{ env.VERSION }} | |
draft: false | |
prerelease: false | |
body: ${{ steps.release_notes.outputs.body }} | |
- name: Upload Release Asset (Windows Standalone) | |
id: upload-release-asset-windows-standalone | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ${{ github.workspace }}/windows-standalone.zip | |
asset_name: windows-standalone.zip | |
asset_content_type: application/zip | |
- name: Upload Release Asset (Windows Installer) | |
id: upload-release-asset-windows-installer | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ${{ github.workspace }}/windows-installer.zip | |
asset_name: windows-installer.zip | |
asset_content_type: application/zip | |
- name: Upload Release Asset | |
id: upload-release-asset-osx | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ${{ github.workspace }}/osx-installer.zip | |
asset_name: osx-installer.zip | |
asset_content_type: application/zip | |