diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f9a6e4d..5352c10 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,6 +2,9 @@ name: Build on: push: + branches: master + tags: + - "v*" workflow_dispatch: jobs: @@ -16,7 +19,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: '1.24' + go-version: "1.24" - name: Install Task uses: arduino/setup-task@v2 @@ -30,8 +33,7 @@ jobs: - name: Get Version id: get_version run: | - VERSION=$(cat VERSION.txt 2>/dev/null | tr -d '\r\n' | xargs) - [ -n "$VERSION" ] || { echo "VERSION could not be acquired" && exit 1; } + VERSION=$(git describe --tags --abbrev=0 2>/dev/null || echo 'unknown') echo "VERSION=$VERSION" >> $GITHUB_OUTPUT echo "BINARY_NAME=HATray-linux-amd64-$VERSION" >> $GITHUB_OUTPUT @@ -56,7 +58,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: '1.24' + go-version: "1.24" - name: Install Task uses: arduino/setup-task@v2 @@ -71,13 +73,16 @@ jobs: id: get_version_win shell: pwsh run: | - # Extract the version, assert it's not null/empty - $version = Get-Content VERSION.txt -ErrorAction SilentlyContinue - if ([string]::IsNullOrWhiteSpace($version)) { throw "VERSION could not be acquired" } + # Extract the version using git tags, fallback to 'unknown' if it fails + try { + $version = git describe --tags --abbrev=0 2>$null + if ([string]::IsNullOrWhiteSpace($version)) { $version = 'unknown' } + } catch { + $version = 'unknown' + } - # Do not append the extension, as we're creating both an .exe and an .msi - echo "VERSION=$($version.Trim())" >> $env:GITHUB_OUTPUT # not used, but who cares - echo "BINARY_NAME=HATray-windows-amd64-$($version.Trim())" >> $env:GITHUB_OUTPUT + echo "VERSION=$($version.Trim())" >> $env:GITHUB_OUTPUT + echo "BINARY_NAME=HATray-windows-amd64-$($version.Trim())" >> $env:GITHUB_OUTPUT - name: Rename Windows Binary with Version shell: pwsh @@ -89,11 +94,11 @@ jobs: name: ${{ steps.get_version_win.outputs.BINARY_NAME }}.exe path: bin/${{ steps.get_version_win.outputs.BINARY_NAME }}.exe if-no-files-found: error - + - name: Set up .NET for WiX uses: actions/setup-dotnet@v4 with: - dotnet-version: '8.0.x' + dotnet-version: "8.0.x" - name: Install WiX Toolset run: dotnet tool install --global wix @@ -115,4 +120,4 @@ jobs: with: name: ${{ steps.get_version_win.outputs.BINARY_NAME }}.msi path: bin/${{ steps.get_version_win.outputs.BINARY_NAME }}.msi - if-no-files-found: error \ No newline at end of file + if-no-files-found: error diff --git a/VERSION.txt b/VERSION.txt deleted file mode 100644 index 8a9ecc2..0000000 --- a/VERSION.txt +++ /dev/null @@ -1 +0,0 @@ -0.0.1 \ No newline at end of file diff --git a/tasks/Taskfile_linux.yml b/tasks/Taskfile_linux.yml index 6321803..2e5781f 100644 --- a/tasks/Taskfile_linux.yml +++ b/tasks/Taskfile_linux.yml @@ -1,12 +1,12 @@ -version: '3' +version: "3" vars: - BINARY_NAME: '{{.APP_NAME}}' + BINARY_NAME: "{{.APP_NAME}}" tasks: build: cmds: - - go build -ldflags "-X main.Version=$(cat VERSION.txt) -X main.Commit=$(git rev-parse --short HEAD) -X 'main.BuildDate=$(date -u +%Y-%m-%dT%H:%M:%SZ)'" -o ./bin/{{.BINARY_NAME}} ./cmd/main.go + - go build -ldflags "-X main.Version=$(git describe --tags --abbrev=0 2>/dev/null || echo 'unknown') -X main.Commit=$(git rev-parse --short HEAD) -X 'main.BuildDate=$(date -u +%Y-%m-%dT%H:%M:%SZ)'" -o ./bin/{{.BINARY_NAME}} ./cmd/main.go service: desc: "Install the service" @@ -30,4 +30,4 @@ tasks: tail: desc: "Tail the log file" cmds: - - journalctl --user-unit HATray.service -ef \ No newline at end of file + - journalctl --user-unit HATray.service -ef diff --git a/tasks/Taskfile_windows.yml b/tasks/Taskfile_windows.yml index 3287058..108398a 100644 --- a/tasks/Taskfile_windows.yml +++ b/tasks/Taskfile_windows.yml @@ -1,9 +1,9 @@ -version: '3' +version: "3" vars: - BINARY_NAME: '{{.APP_NAME}}.exe' + BINARY_NAME: "{{.APP_NAME}}.exe" VERSION: - sh: powershell -Command "Get-Content VERSION.txt" + sh: powershell -Command "try { agit describe --tags --abbrev=0 } catch { 'unknown' }" COMMIT: sh: git rev-parse --short HEAD @@ -34,7 +34,7 @@ tasks: - cmd: pwsh -c 'Copy-Item -Force -Path .\\bin\\{{.BINARY_NAME}} -Destination $env:USERPROFILE\\AppData\\Local\\HATray\\{{.BINARY_NAME}}' # Start the service - cmd: pwsh -c 'sc start HATray' - + status: desc: "Show the status of the service" cmds: @@ -44,11 +44,11 @@ tasks: desc: "Tail the log file" cmds: - cmd: pwsh -c 'Get-Content -Path $env:LOCALAPPDATA\\HATray\\current.log -Tail 10 -Wait' - + package: desc: "Package the application as a MSI" deps: [build] cmds: - wix extension add WixToolset.Util.wixext - wix extension add WixToolset.UI.wixext - - wix build -ext WixToolset.Util.wixext -ext WixToolset.UI.wixext -o ./bin/{{.APP_NAME}}.msi build/msi/HATray.wxs -arch x64 -d VERSION={{.VERSION}} -d SOURCE=./bin/{{.BINARY_NAME}} \ No newline at end of file + - wix build -ext WixToolset.Util.wixext -ext WixToolset.UI.wixext -o ./bin/{{.APP_NAME}}.msi build/msi/HATray.wxs -arch x64 -d VERSION={{.VERSION}} -d SOURCE=./bin/{{.BINARY_NAME}}