Skip to content

Build

Build #8

Workflow file for this run

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