name: Release Build on: push: tags: - 'v*' workflow_dispatch: permissions: contents: write jobs: build-and-release: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v5 with: go-version: '1.24' cache: true - name: Get Version id: get_version run: | if [[ $GITHUB_REF == refs/tags/* ]]; then VERSION=${GITHUB_REF#refs/tags/v} else VERSION="0.0.0-dev" fi echo "Detected Version: $VERSION" echo "VERSION=$VERSION" >> $GITHUB_ENV - name: Update Version in Files run: | echo "Updating version in PrintCleaner.manifest to ${VERSION}.0" # Update Manifest (Format: 1.0.0.0) sed -i "s/version=\"[0-9]*\\.[0-9]*\\.[0-9]*\\.[0-9]*\"/version=\"${VERSION}.0\"/" PrintCleaner.manifest echo "Updating version in PrintCleaner.ps1 to ${VERSION}" # Update PowerShell Script sed -i "s/\$AppVersion = \"0.0.0\"/\$AppVersion = \"${VERSION}\"/" PrintCleaner.ps1 - name: Generate Resources (Icon & Manifest) run: | # Install rsrc dependency if not present (handled by go.mod, but go run ensures it) go run github.com/akavel/rsrc -manifest PrintCleaner.manifest -ico icon.ico -arch amd64 -o rsrc.syso - name: Build run: | output_name="PrintCleaner_v${VERSION}.exe" echo "Building $output_name..." GOOS=windows GOARCH=amd64 go build -o "$output_name" main.go echo "ARTIFACT_NAME=$output_name" >> $GITHUB_ENV - name: Create Release uses: softprops/action-gh-release@v2 if: startsWith(github.ref, 'refs/tags/') with: files: ${{ env.ARTIFACT_NAME }} draft: false prerelease: false generate_release_notes: true