Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
281 changes: 140 additions & 141 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,19 +42,19 @@ on:
workflow_dispatch:
inputs:
sourcebranch:
description: 'Source branch'
description: "Source branch"
required: true
default: 'main'
default: "main"
releasetitle:
description: 'Release name'
description: "Release name"
required: true
releasetag:
description: "Release tag"
required: true
prerelease:
description: 'Is this a pre-release?'
description: "Is this a pre-release?"
required: true
default: 'true'
default: "true"
#push:
# branches: [ "main" ]
# tags:
Expand All @@ -70,157 +70,156 @@ jobs:
#configuration: [Debug, Release]
configuration: [Release]

runs-on: windows-latest # For a list of available runner types, refer to
# https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on
runs-on:
windows-latest # For a list of available runner types, refer to
# https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on

env:
Solution_Name: src/HASS.Agent.sln # Replace with your solution name, i.e. MyWpfApp.sln.
Solution_Name: src/HASS.Agent.sln # Replace with your solution name, i.e. MyWpfApp.sln.
#Test_Project_Path: your-test-project-path # Replace with the path to your test project, i.e. MyWpfApp.Tests\MyWpfApp.Tests.csproj.
#Wap_Project_Directory: your-wap-project-directory-name # Replace with the Wap project directory relative to the solution, i.e. MyWpfApp.Package.
#Wap_Project_Path: your-wap-project-path # Replace with the path to your Wap project, i.e. MyWpf.App.Package\MyWpfApp.Package.wapproj.

steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event.inputs.sourcebranch }}

# Install the .NET Core workload
- name: Install .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.0.x

# Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild
#- name: Setup MSBuild.exe
# uses: microsoft/setup-msbuild@v1.3.1
# Execute all unit tests in the solution
#- name: Execute unit tests
# run: dotnet test

# Restore the application to populate the obj folder with RuntimeIdentifiers
#- name: Restore the Nuget Packages
# run: |
# nuget restore src/HASS.Agent.sln
# msbuild src/HASS.Agent.sln #/t:Restore /p:Configuration=$env:Configuration
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event.inputs.sourcebranch }}

# Install the .NET Core workload
- name: Install .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.0.x

# Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild
#- name: Setup MSBuild.exe
# uses: microsoft/setup-msbuild@v1.3.1

# Execute all unit tests in the solution
#- name: Execute unit tests
# run: dotnet test

# Restore the application to populate the obj folder with RuntimeIdentifiers
#- name: Restore the Nuget Packages
# run: |
# nuget restore src/HASS.Agent.sln
# msbuild src/HASS.Agent.sln #/t:Restore /p:Configuration=$env:Configuration
#env:
# Configuration: ${{ matrix.configuration }}

- name: Restore / Install dependencies
run: |
dotnet restore "src\\HASS.Agent\\HASS.Agent\\HASS.Agent.csproj"
dotnet restore "src\\HASS.Agent\\HASS.Agent.Satellite.Service\\HASS.Agent.Satellite.Service.csproj"
- name: Build & Publish HASS.Agent
working-directory: "D:\\a\\HASS.Agent\\HASS.Agent\\src\\HASS.Agent\\HASS.Agent"
run: "dotnet publish -c Release -f net6.0-windows10.0.19041.0 -o bin\\Publish-x64\\Release\\ --no-self-contained -r win-x64 -p:Platform=x64"
- name: Build & Publish HASS.Agent.Satellite.Service
working-directory: "D:\\a\\HASS.Agent\\HASS.Agent\\src\\HASS.Agent\\HASS.Agent.Satellite.Service"
run: "dotnet publish -c Release -f net6.0-windows10.0.19041.0 -o bin\\Publish-x64\\Release\\ --no-self-contained -r win-x64 -p:Platform=x64"

- name: Compile InnoSetup Installer - Satellite Service
working-directory: "D:\\a\\HASS.Agent\\HASS.Agent\\src\\HASS.Agent.Installer"
run: |
& "${Env:ProgramFiles(x86)}\\Inno Setup 6\\iscc.exe" InstallerScript-Service.iss

- name: Compile InnoSetup Installer - Client
working-directory: "D:\\a\\HASS.Agent\\HASS.Agent\\src\\HASS.Agent.Installer"
run: |
& "${Env:ProgramFiles(x86)}\\Inno Setup 6\\iscc.exe" InstallerScript.iss

- name: Decode the pfx
working-directory: "D:\\a\\HASS.Agent\\HASS.Agent\\src\\HASS.Agent.Installer"
run: |
$pfxBytes = [System.Convert]::FromBase64String("${{ secrets.BASE64_ENCODED_PFX }}")
$certificatePath = [IO.Path]::GetFullPath(".\\HASS.Agent.Installer.pfx")
[IO.File]::WriteAllBytes($certificatePath, $pfxBytes)

- name: Sign the installer
working-directory: "D:\\a\\HASS.Agent\\HASS.Agent\\src\\HASS.Agent.Installer"
run: |
$certificatePassword = ConvertTo-SecureString "${{ secrets.BASE64_ENCODED_PFX_PASSWORD }}" -AsPlainText -Force
$certificate = Get-PfxCertificate -FilePath ".\\HASS.Agent.Installer.pfx" -Password $certificatePassword
Set-AuthenticodeSignature -FilePath ".\\bin\\HASS.Agent.Installer.exe" -Certificate $certificate -HashAlgorithm SHA256 -TimestampServer http://timestamp.digicert.com
- name: Remove the pfx
working-directory: "D:\\a\\HASS.Agent\\HASS.Agent\\src\\HASS.Agent.Installer"
run: Remove-Item -path ".\\HASS.Agent.Installer.pfx"

#Upload project artifacts: https://github.com/marketplace/actions/upload-a-build-artifact
- name: Upload build artifacts (HASS Agent)
uses: actions/upload-artifact@v4.6.0
with:
name: HASS.Agent
path: "src\\HASS.Agent\\HASS.Agent\\bin\\Publish-x64\\Release"

- name: Upload build artifacts (HASS Agent Satellite Service)
uses: actions/upload-artifact@v4.6.0
with:
name: HASS.Agent.Satellite.Service
path: "src\\HASS.Agent\\HASS.Agent.Satellite.Service\\bin\\Publish-x64\\Release"

- name: Upload build artifacts (HASS Agent Installer)
uses: actions/upload-artifact@v4.6.0
with:
name: HASS.Agent.Installer
path: "src\\HASS.Agent.Installer\\bin\\HASS.Agent.Installer.exe"
# Configuration: ${{ matrix.configuration }}

- name: Restore / Install dependencies
run: |
dotnet restore "src\\HASS.Agent\\HASS.Agent\\HASS.Agent.csproj"
dotnet restore "src\\HASS.Agent\\HASS.Agent.Satellite.Service\\HASS.Agent.Satellite.Service.csproj"

- name: Build & Publish HASS.Agent
working-directory: "D:\\a\\HASS.Agent\\HASS.Agent\\src\\HASS.Agent\\HASS.Agent"
run: "dotnet publish -c Release -f net6.0-windows10.0.19041.0 -o bin\\Publish-x64\\Release\\ --no-self-contained -r win-x64 -p:Platform=x64"

- name: Build & Publish HASS.Agent.Satellite.Service
working-directory: "D:\\a\\HASS.Agent\\HASS.Agent\\src\\HASS.Agent\\HASS.Agent.Satellite.Service"
run: "dotnet publish -c Release -f net6.0-windows10.0.19041.0 -o bin\\Publish-x64\\Release\\ --no-self-contained -r win-x64 -p:Platform=x64"

- name: Compile InnoSetup Installer - Satellite Service
working-directory: "D:\\a\\HASS.Agent\\HASS.Agent\\src\\HASS.Agent.Installer"
run: |
& "${Env:ProgramFiles(x86)}\\Inno Setup 6\\iscc.exe" InstallerScript-Service.iss

- name: Compile InnoSetup Installer - Client
working-directory: "D:\\a\\HASS.Agent\\HASS.Agent\\src\\HASS.Agent.Installer"
run: |
& "${Env:ProgramFiles(x86)}\\Inno Setup 6\\iscc.exe" InstallerScript.iss

- name: Decode the pfx
working-directory: "D:\\a\\HASS.Agent\\HASS.Agent\\src\\HASS.Agent.Installer"
run: |
$pfxBytes = [System.Convert]::FromBase64String("${{ secrets.BASE64_ENCODED_PFX }}")
$certificatePath = [IO.Path]::GetFullPath(".\\HASS.Agent.Installer.pfx")
[IO.File]::WriteAllBytes($certificatePath, $pfxBytes)

- name: Sign the installer
working-directory: "D:\\a\\HASS.Agent\\HASS.Agent\\src\\HASS.Agent.Installer"
run: |
$certificatePassword = ConvertTo-SecureString "${{ secrets.BASE64_ENCODED_PFX_PASSWORD }}" -AsPlainText -Force
$certificate = Get-PfxCertificate -FilePath ".\\HASS.Agent.Installer.pfx" -Password $certificatePassword
Set-AuthenticodeSignature -FilePath ".\\bin\\HASS.Agent.Installer.exe" -Certificate $certificate -HashAlgorithm SHA256 -TimestampServer http://timestamp.digicert.com

- name: Remove the pfx
working-directory: "D:\\a\\HASS.Agent\\HASS.Agent\\src\\HASS.Agent.Installer"
run: Remove-Item -path ".\\HASS.Agent.Installer.pfx"

#Upload project artifacts: https://github.com/marketplace/actions/upload-a-build-artifact
- name: Upload build artifacts (HASS Agent)
uses: actions/upload-artifact@v4.6.0
with:
name: HASS.Agent
path: "src\\HASS.Agent\\HASS.Agent\\bin\\Publish-x64\\Release"

- name: Upload build artifacts (HASS Agent Satellite Service)
uses: actions/upload-artifact@v4.6.0
with:
name: HASS.Agent.Satellite.Service
path: "src\\HASS.Agent\\HASS.Agent.Satellite.Service\\bin\\Publish-x64\\Release"

- name: Upload build artifacts (HASS Agent Installer)
uses: actions/upload-artifact@v4.6.0
with:
name: HASS.Agent.Installer
path: "src\\HASS.Agent.Installer\\bin\\HASS.Agent.Installer.exe"

#- name: Debugging artifact paths
# run: |
# Set-Location src\HASS.Agent
# Get-Childitem
# Get-Childitem

#draft a release, https://github.com/actions/create-release
#draft a release, https://github.com/actions/create-release
publish:
runs-on: ubuntu-latest
needs: [build]
permissions:
contents: write
steps:
- name: Create directories for Build Artifacts to download
run: |
mkdir HASS.Agent
mkdir HASS.Agent.Satellite.Service
mkdir HASS.Agent.Installer
ls -la

- name: Download Build Artifacts (HASS Agent)
uses: actions/download-artifact@v4.1.8
with:
name: HASS.Agent
path: HASS.Agent

- name: Download Build Artifacts (HASS Agent Satellite Service)
uses: actions/download-artifact@v4.1.8
with:
name: HASS.Agent.Satellite.Service
path: HASS.Agent.Satellite.Service

- name: Download Build Artifacts (HASS Agent Installer)
uses: actions/download-artifact@v4.1.8
with:
name: HASS.Agent.Installer
path: HASS.Agent.Installer


- name: Compress HASS Agent directories for manual install
run: |
cd HASS.Agent
ls -la
zip -r HASS.Agent.zip ./
cd ../
cd HASS.Agent.Satellite.Service
ls -la
zip -r HASS.Agent.Satellite.Service.zip ./

- name: Create Draft Release and Upload Build Artifacts
uses: ncipollo/release-action@v1.10.0
with:
name: ${{ github.event.inputs.releasetitle }}
draft: true
prerelease: ${{ github.event.inputs.prerelease }}
tag: ${{ github.event.inputs.releasetag }}
artifacts:
HASS.Agent/HASS.Agent.zip,HASS.Agent.Satellite.Service/HASS.Agent.Satellite.Service.zip,HASS.Agent.Installer/HASS.Agent.Installer.exe
- name: Create directories for Build Artifacts to download
run: |
mkdir HASS.Agent
mkdir HASS.Agent.Satellite.Service
mkdir HASS.Agent.Installer
ls -la

- name: Download Build Artifacts (HASS Agent)
uses: actions/download-artifact@v4.1.8
with:
name: HASS.Agent
path: HASS.Agent

- name: Download Build Artifacts (HASS Agent Satellite Service)
uses: actions/download-artifact@v4.1.8
with:
name: HASS.Agent.Satellite.Service
path: HASS.Agent.Satellite.Service

- name: Download Build Artifacts (HASS Agent Installer)
uses: actions/download-artifact@v4.1.8
with:
name: HASS.Agent.Installer
path: HASS.Agent.Installer

- name: Compress HASS Agent directories for manual install
run: |
cd HASS.Agent
ls -la
zip -r HASS.Agent.zip ./
cd ../
cd HASS.Agent.Satellite.Service
ls -la
zip -r HASS.Agent.Satellite.Service.zip ./

- name: Create Draft Release and Upload Build Artifacts
uses: ncipollo/release-action@v1.10.0
with:
name: ${{ github.event.inputs.releasetitle }}
draft: true
prerelease: ${{ github.event.inputs.prerelease }}
tag: ${{ github.event.inputs.releasetag }}
artifacts: HASS.Agent/HASS.Agent.zip,HASS.Agent.Satellite.Service/HASS.Agent.Satellite.Service.zip,HASS.Agent.Installer/HASS.Agent.Installer.exe
Loading