From 1859aba98e71a35ebddf386c756552609b88cc4d Mon Sep 17 00:00:00 2001 From: Philip Ellis Date: Wed, 7 Jan 2026 16:26:31 -0500 Subject: [PATCH 01/14] added temp release --- .github/workflows/release.yml | 1 + .github/workflows/test_release.yml | 97 ++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 .github/workflows/test_release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2d59074d..47642e2c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -69,6 +69,7 @@ jobs: GITHUB_TOKEN: ${{secrets.PUBLISHER_TOKEN}} GORELEASER_CURRENT_TAG: ${{steps.tagName.outputs.tag-name}} CERT_PASSWORD: ${{secrets.WINDOWS_CERT_PASSWORD}} + MallocStackLogging: "0" msi: needs: goreleaser diff --git a/.github/workflows/test_release.yml b/.github/workflows/test_release.yml new file mode 100644 index 00000000..41b37713 --- /dev/null +++ b/.github/workflows/test_release.yml @@ -0,0 +1,97 @@ +name: Test Release + +on: + pull_request: + branches: + - main + workflow_dispatch: + +permissions: + contents: read + +jobs: + test-goreleaser: + runs-on: macOS-15 + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: 1.24.1 + + - name: Install osslsigncode + run: brew install osslsigncode + + - name: Create dummy signing cert (for testing) + run: | + cert="$(mktemp -t cert.XXX)" + # Create a dummy cert file for testing + echo "dummy-cert-content" > "$cert" + echo "CERT_FILE=$cert" >> $GITHUB_ENV + + - name: Create dummy signing key (for testing) + run: | + key="$(mktemp -t key.XXX)" + # Create a dummy key file for testing + echo "dummy-key-content" > "$key" + echo "KEY_FILE=$key" >> $GITHUB_ENV + + - name: Set test version + run: echo "RELEASE_VERSION=0.0.0-test" >> $GITHUB_ENV + + - name: Run GoReleaser in Snapshot Mode + uses: goreleaser/goreleaser-action@v6 + with: + version: "2.8.2" + args: release --snapshot --clean --skip=publish --verbose --timeout 60m + env: + GORELEASER_CURRENT_TAG: "v0.0.0-test" + CERT_PASSWORD: "dummy-password" + MallocStackLogging: "0" + + - name: Upload artifacts for inspection + uses: actions/upload-artifact@v4 + with: + name: test-release-artifacts + path: dist/ + retention-days: 7 + + test-msi-build: + runs-on: windows-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: 1.24.1 + + - name: Build Windows binary + shell: bash + run: | + GOOS=windows GOARCH=amd64 go build -ldflags="-s -w -X main.version=0.0.0-test" -o sail.exe . + + - name: Prepare PATH + id: setupmsbuild + uses: microsoft/setup-msbuild@v1.3.1 + + - name: Test MSI Build + shell: bash + env: + MSBUILD_PATH: ${{ steps.setupmsbuild.outputs.msbuildPath }} + run: | + version="0.0.0" + "${MSBUILD_PATH}\MSBuild.exe" ./build/windows/sail.wixproj -p:SourceDir="$PWD" -p:OutputPath="$PWD" -p:OutputName="test-sail" -p:ProductVersion="$version" + + - name: Upload MSI for inspection + uses: actions/upload-artifact@v4 + with: + name: test-msi + path: "*.msi" + retention-days: 7 + From c25603db6fc9c7c7dd3726e95a4d596d4ce2d0ea Mon Sep 17 00:00:00 2001 From: Philip Ellis Date: Wed, 7 Jan 2026 16:42:41 -0500 Subject: [PATCH 02/14] updated test release --- .github/workflows/test_release.yml | 63 ++++++------------------------ 1 file changed, 13 insertions(+), 50 deletions(-) diff --git a/.github/workflows/test_release.yml b/.github/workflows/test_release.yml index 41b37713..33425f4d 100644 --- a/.github/workflows/test_release.yml +++ b/.github/workflows/test_release.yml @@ -26,19 +26,18 @@ jobs: - name: Install osslsigncode run: brew install osslsigncode - - name: Create dummy signing cert (for testing) + - name: Generate self-signed test certificates run: | - cert="$(mktemp -t cert.XXX)" - # Create a dummy cert file for testing - echo "dummy-cert-content" > "$cert" - echo "CERT_FILE=$cert" >> $GITHUB_ENV - - - name: Create dummy signing key (for testing) - run: | - key="$(mktemp -t key.XXX)" - # Create a dummy key file for testing - echo "dummy-key-content" > "$key" - echo "KEY_FILE=$key" >> $GITHUB_ENV + # Generate a private key + openssl genrsa -out test-key.pem 2048 + + # Generate a self-signed certificate + openssl req -new -x509 -key test-key.pem -out test-cert.pem -days 1 \ + -subj "/C=US/ST=Test/L=Test/O=SailPoint Test/CN=SailPoint CLI Test" + + # Export paths + echo "CERT_FILE=$(pwd)/test-cert.pem" >> $GITHUB_ENV + echo "KEY_FILE=$(pwd)/test-key.pem" >> $GITHUB_ENV - name: Set test version run: echo "RELEASE_VERSION=0.0.0-test" >> $GITHUB_ENV @@ -47,10 +46,10 @@ jobs: uses: goreleaser/goreleaser-action@v6 with: version: "2.8.2" - args: release --snapshot --clean --skip=publish --verbose --timeout 60m + args: release --snapshot --clean --skip=publish --timeout 30m env: GORELEASER_CURRENT_TAG: "v0.0.0-test" - CERT_PASSWORD: "dummy-password" + CERT_PASSWORD: "test" MallocStackLogging: "0" - name: Upload artifacts for inspection @@ -59,39 +58,3 @@ jobs: name: test-release-artifacts path: dist/ retention-days: 7 - - test-msi-build: - runs-on: windows-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up Go - uses: actions/setup-go@v5 - with: - go-version: 1.24.1 - - - name: Build Windows binary - shell: bash - run: | - GOOS=windows GOARCH=amd64 go build -ldflags="-s -w -X main.version=0.0.0-test" -o sail.exe . - - - name: Prepare PATH - id: setupmsbuild - uses: microsoft/setup-msbuild@v1.3.1 - - - name: Test MSI Build - shell: bash - env: - MSBUILD_PATH: ${{ steps.setupmsbuild.outputs.msbuildPath }} - run: | - version="0.0.0" - "${MSBUILD_PATH}\MSBuild.exe" ./build/windows/sail.wixproj -p:SourceDir="$PWD" -p:OutputPath="$PWD" -p:OutputName="test-sail" -p:ProductVersion="$version" - - - name: Upload MSI for inspection - uses: actions/upload-artifact@v4 - with: - name: test-msi - path: "*.msi" - retention-days: 7 - From 9667ef7dd3bf1201381b3bafbee114839638e961 Mon Sep 17 00:00:00 2001 From: Philip Ellis Date: Wed, 7 Jan 2026 16:59:40 -0500 Subject: [PATCH 03/14] tried running on ubuntu instead --- .github/workflows/release.yml | 7 ++++--- .github/workflows/test_release.yml | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 47642e2c..c2079017 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,7 +15,7 @@ env: jobs: goreleaser: - runs-on: macOS-15 + runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 @@ -39,7 +39,9 @@ jobs: echo "tag-name=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT - name: Install osslsigncode - run: brew install osslsigncode + run: | + sudo apt-get update + sudo apt-get install -y osslsigncode - name: Obtain signing cert run: | @@ -69,7 +71,6 @@ jobs: GITHUB_TOKEN: ${{secrets.PUBLISHER_TOKEN}} GORELEASER_CURRENT_TAG: ${{steps.tagName.outputs.tag-name}} CERT_PASSWORD: ${{secrets.WINDOWS_CERT_PASSWORD}} - MallocStackLogging: "0" msi: needs: goreleaser diff --git a/.github/workflows/test_release.yml b/.github/workflows/test_release.yml index 33425f4d..280a052e 100644 --- a/.github/workflows/test_release.yml +++ b/.github/workflows/test_release.yml @@ -11,7 +11,7 @@ permissions: jobs: test-goreleaser: - runs-on: macOS-15 + runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 @@ -24,7 +24,9 @@ jobs: go-version: 1.24.1 - name: Install osslsigncode - run: brew install osslsigncode + run: | + sudo apt-get update + sudo apt-get install -y osslsigncode - name: Generate self-signed test certificates run: | @@ -50,7 +52,6 @@ jobs: env: GORELEASER_CURRENT_TAG: "v0.0.0-test" CERT_PASSWORD: "test" - MallocStackLogging: "0" - name: Upload artifacts for inspection uses: actions/upload-artifact@v4 From b4cb09d60e0a73bad0a45c3f711feaaa51a8c315 Mon Sep 17 00:00:00 2001 From: Philip Ellis Date: Wed, 7 Jan 2026 17:44:41 -0500 Subject: [PATCH 04/14] tried removing the timestamping --- .github/workflows/test_release.yml | 1 + assets/sign-windows-executable.sh | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test_release.yml b/.github/workflows/test_release.yml index 280a052e..36c955c2 100644 --- a/.github/workflows/test_release.yml +++ b/.github/workflows/test_release.yml @@ -52,6 +52,7 @@ jobs: env: GORELEASER_CURRENT_TAG: "v0.0.0-test" CERT_PASSWORD: "test" + TEST_MODE: "true" - name: Upload artifacts for inspection uses: actions/upload-artifact@v4 diff --git a/assets/sign-windows-executable.sh b/assets/sign-windows-executable.sh index e45dd4df..bc1f78b9 100755 --- a/assets/sign-windows-executable.sh +++ b/assets/sign-windows-executable.sh @@ -23,8 +23,17 @@ if [ ! -f "$KEY_FILE" ]; then exit 1 fi -osslsigncode sign -n "SailPoint CLI" -t http://timestamp.digicert.com \ - -certs "$CERT_FILE" -key "$KEY_FILE" \ - -in "$EXE" -out "$EXE"~ +# Determine if we should use timestamping (skip in test mode) +if [ "$TEST_MODE" = "true" ]; then + echo "Signing without timestamp (test mode)" >&2 + osslsigncode sign -n "SailPoint CLI" \ + -certs "$CERT_FILE" -key "$KEY_FILE" \ + -in "$EXE" -out "$EXE"~ +else + echo "Signing with timestamp" >&2 + osslsigncode sign -n "SailPoint CLI" -t http://timestamp.digicert.com \ + -certs "$CERT_FILE" -key "$KEY_FILE" \ + -in "$EXE" -out "$EXE"~ +fi mv "$EXE"~ "$EXE" \ No newline at end of file From f4e8b7ae385e9e3cc6e8d72ce5d4b9a0bca8e678 Mon Sep 17 00:00:00 2001 From: Philip Ellis Date: Thu, 8 Jan 2026 09:03:12 -0500 Subject: [PATCH 05/14] removed windows on arm build --- .github/workflows/test_release.yml | 2 +- .goreleaser.test.yaml | 80 ++++++++++++++++++++++++++++++ assets/sign-windows-executable.sh | 11 +++- 3 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 .goreleaser.test.yaml diff --git a/.github/workflows/test_release.yml b/.github/workflows/test_release.yml index 36c955c2..105f3af6 100644 --- a/.github/workflows/test_release.yml +++ b/.github/workflows/test_release.yml @@ -48,7 +48,7 @@ jobs: uses: goreleaser/goreleaser-action@v6 with: version: "2.8.2" - args: release --snapshot --clean --skip=publish --timeout 30m + args: release --snapshot --clean --skip=publish --timeout 30m --config .goreleaser.test.yaml env: GORELEASER_CURRENT_TAG: "v0.0.0-test" CERT_PASSWORD: "test" diff --git a/.goreleaser.test.yaml b/.goreleaser.test.yaml new file mode 100644 index 00000000..47c70c9c --- /dev/null +++ b/.goreleaser.test.yaml @@ -0,0 +1,80 @@ +project_name: sail + +version: 2 + +release: + prerelease: auto + draft: true + name_template: "SailPoint CLI {{.Version}}" + +before: + hooks: + - go mod tidy + +builds: + - id: windows + goos: [windows] + goarch: [amd64] # Only build for standard x86_64 Windows + env: + - CGO_ENABLED=0 + ldflags: + - -s -w -X main.version={{ .Version }} + hooks: + post: + - cmd: ./assets/sign-windows-executable.sh '{{ .Path }}' + output: true + + - id: linux + goos: [linux] + goarch: [amd64] # Only build for standard x86_64 Linux + env: + - CGO_ENABLED=0 + + - id: macos + binary: bin/sail + main: ./ + goos: [darwin] + goarch: [amd64, arm64] # Keep both Intel and Apple Silicon for Mac + +archives: + - id: nix + ids: [macos, linux] + name_template: >- + {{- .ProjectName }}_ + {{- title .Os }}_ + {{- if eq .Arch "amd64" }}x86_64 + {{- else if eq .Arch "386" }}i386 + {{- else }}{{ .Arch }}{{ end }} + {{- if .Arm }}v{{ .Arm }}{{ end -}} + wrap_in_directory: true + formats: tar.gz + files: + - LICENSE + + - id: windows + ids: [windows] + formats: zip + wrap_in_directory: false + files: + - LICENSE + +brews: + - name: sailpoint-cli + homepage: "https://github.com/sailpoint-oss/sailpoint-cli" + repository: + name: homebrew-tap + owner: sailpoint-oss + commit_author: + name: developer-relations-sp + email: devrel-service@sailpoint.com + +nfpms: + - license: MIT + maintainer: SailPoint + homepage: https://github.com/sailpoint-oss/sailpoint-cli + bindir: /usr + description: The SailPoint Command Line Interface. + formats: + - deb + - rpm + diff --git a/assets/sign-windows-executable.sh b/assets/sign-windows-executable.sh index bc1f78b9..52dfa51a 100755 --- a/assets/sign-windows-executable.sh +++ b/assets/sign-windows-executable.sh @@ -3,6 +3,12 @@ set -e EXE="$1" +echo "=== Windows Code Signing Script Started ===" >&2 +echo "EXE: $EXE" >&2 +echo "CERT_FILE: $CERT_FILE" >&2 +echo "KEY_FILE: $KEY_FILE" >&2 +echo "TEST_MODE: $TEST_MODE" >&2 + if [ -z "$CERT_FILE" ]; then echo "skipping Windows code-signing; CERT_FILE not set" >&2 exit 0 @@ -29,11 +35,14 @@ if [ "$TEST_MODE" = "true" ]; then osslsigncode sign -n "SailPoint CLI" \ -certs "$CERT_FILE" -key "$KEY_FILE" \ -in "$EXE" -out "$EXE"~ + echo "Signing completed successfully" >&2 else echo "Signing with timestamp" >&2 osslsigncode sign -n "SailPoint CLI" -t http://timestamp.digicert.com \ -certs "$CERT_FILE" -key "$KEY_FILE" \ -in "$EXE" -out "$EXE"~ + echo "Signing with timestamp completed successfully" >&2 fi -mv "$EXE"~ "$EXE" \ No newline at end of file +mv "$EXE"~ "$EXE" +echo "=== Windows Code Signing Script Completed ===" >&2 \ No newline at end of file From 9e29291d81204aecc39645d736a556af674813f6 Mon Sep 17 00:00:00 2001 From: Philip Ellis Date: Thu, 8 Jan 2026 09:11:10 -0500 Subject: [PATCH 06/14] added some tests --- .github/workflows/test_release.yml | 9 ++++++++- .goreleaser.test.yaml | 15 +++++++++------ assets/sign-windows-executable.sh | 18 ++++++++++++++---- 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/.github/workflows/test_release.yml b/.github/workflows/test_release.yml index 105f3af6..923c38ac 100644 --- a/.github/workflows/test_release.yml +++ b/.github/workflows/test_release.yml @@ -22,6 +22,13 @@ jobs: uses: actions/setup-go@v5 with: go-version: 1.24.1 + cache: true + + - name: Download Go dependencies + run: | + echo "Downloading Go modules..." + go mod download + echo "Go modules downloaded successfully" - name: Install osslsigncode run: | @@ -48,7 +55,7 @@ jobs: uses: goreleaser/goreleaser-action@v6 with: version: "2.8.2" - args: release --snapshot --clean --skip=publish --timeout 30m --config .goreleaser.test.yaml + args: release --snapshot --clean --skip=publish --timeout 30m --config .goreleaser.test.yaml --debug --parallelism 1 env: GORELEASER_CURRENT_TAG: "v0.0.0-test" CERT_PASSWORD: "test" diff --git a/.goreleaser.test.yaml b/.goreleaser.test.yaml index 47c70c9c..a1b65f74 100644 --- a/.goreleaser.test.yaml +++ b/.goreleaser.test.yaml @@ -29,16 +29,19 @@ builds: goarch: [amd64] # Only build for standard x86_64 Linux env: - CGO_ENABLED=0 + ldflags: + - -s -w -X main.version={{ .Version }} - - id: macos - binary: bin/sail - main: ./ - goos: [darwin] - goarch: [amd64, arm64] # Keep both Intel and Apple Silicon for Mac + # Commenting out macOS for initial testing + # - id: macos + # binary: bin/sail + # main: ./ + # goos: [darwin] + # goarch: [amd64, arm64] archives: - id: nix - ids: [macos, linux] + ids: [linux] # Removed macos for testing name_template: >- {{- .ProjectName }}_ {{- title .Os }}_ diff --git a/assets/sign-windows-executable.sh b/assets/sign-windows-executable.sh index 52dfa51a..8cf24a41 100755 --- a/assets/sign-windows-executable.sh +++ b/assets/sign-windows-executable.sh @@ -32,15 +32,25 @@ fi # Determine if we should use timestamping (skip in test mode) if [ "$TEST_MODE" = "true" ]; then echo "Signing without timestamp (test mode)" >&2 - osslsigncode sign -n "SailPoint CLI" \ + timeout 120 osslsigncode sign -n "SailPoint CLI" \ -certs "$CERT_FILE" -key "$KEY_FILE" \ - -in "$EXE" -out "$EXE"~ + -in "$EXE" -out "$EXE"~ 2>&1 | tee /dev/stderr + + if [ $? -eq 124 ]; then + echo "ERROR: Signing timed out after 120 seconds" >&2 + exit 1 + fi echo "Signing completed successfully" >&2 else echo "Signing with timestamp" >&2 - osslsigncode sign -n "SailPoint CLI" -t http://timestamp.digicert.com \ + timeout 180 osslsigncode sign -n "SailPoint CLI" -t http://timestamp.digicert.com \ -certs "$CERT_FILE" -key "$KEY_FILE" \ - -in "$EXE" -out "$EXE"~ + -in "$EXE" -out "$EXE"~ 2>&1 | tee /dev/stderr + + if [ $? -eq 124 ]; then + echo "ERROR: Signing with timestamp timed out after 180 seconds" >&2 + exit 1 + fi echo "Signing with timestamp completed successfully" >&2 fi From 089415aaf39b796c7b13d6f938843e710958b219 Mon Sep 17 00:00:00 2001 From: Philip Ellis Date: Thu, 8 Jan 2026 09:14:59 -0500 Subject: [PATCH 07/14] fixed flag --- .github/workflows/test_release.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test_release.yml b/.github/workflows/test_release.yml index 923c38ac..312f69aa 100644 --- a/.github/workflows/test_release.yml +++ b/.github/workflows/test_release.yml @@ -55,11 +55,12 @@ jobs: uses: goreleaser/goreleaser-action@v6 with: version: "2.8.2" - args: release --snapshot --clean --skip=publish --timeout 30m --config .goreleaser.test.yaml --debug --parallelism 1 + args: release --snapshot --clean --skip=publish --timeout 30m --config .goreleaser.test.yaml --parallelism 1 env: GORELEASER_CURRENT_TAG: "v0.0.0-test" CERT_PASSWORD: "test" TEST_MODE: "true" + GORELEASER_DEBUG: "1" - name: Upload artifacts for inspection uses: actions/upload-artifact@v4 From 4cdd76b27d7200958c4cc070ec1a6a7d73d8907b Mon Sep 17 00:00:00 2001 From: Philip Ellis Date: Thu, 8 Jan 2026 09:27:28 -0500 Subject: [PATCH 08/14] added some builds back in --- .goreleaser.test.yaml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/.goreleaser.test.yaml b/.goreleaser.test.yaml index a1b65f74..db0c788b 100644 --- a/.goreleaser.test.yaml +++ b/.goreleaser.test.yaml @@ -32,16 +32,17 @@ builds: ldflags: - -s -w -X main.version={{ .Version }} - # Commenting out macOS for initial testing - # - id: macos - # binary: bin/sail - # main: ./ - # goos: [darwin] - # goarch: [amd64, arm64] + - id: macos + binary: bin/sail + main: ./ + goos: [darwin] + goarch: [amd64, arm64] + ldflags: + - -s -w -X main.version={{ .Version }} archives: - id: nix - ids: [linux] # Removed macos for testing + ids: [macos, linux] name_template: >- {{- .ProjectName }}_ {{- title .Os }}_ From 76e2e8fd97985d9a01cbe7b707f63e86a25d7107 Mon Sep 17 00:00:00 2001 From: Philip Ellis Date: Thu, 8 Jan 2026 09:33:14 -0500 Subject: [PATCH 09/14] added back more builds --- .github/workflows/test_release.yml | 3 +-- .goreleaser.test.yaml | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test_release.yml b/.github/workflows/test_release.yml index 312f69aa..58399808 100644 --- a/.github/workflows/test_release.yml +++ b/.github/workflows/test_release.yml @@ -55,12 +55,11 @@ jobs: uses: goreleaser/goreleaser-action@v6 with: version: "2.8.2" - args: release --snapshot --clean --skip=publish --timeout 30m --config .goreleaser.test.yaml --parallelism 1 + args: release --snapshot --clean --skip=publish --timeout 30m --config .goreleaser.test.yaml --parallelism 4 env: GORELEASER_CURRENT_TAG: "v0.0.0-test" CERT_PASSWORD: "test" TEST_MODE: "true" - GORELEASER_DEBUG: "1" - name: Upload artifacts for inspection uses: actions/upload-artifact@v4 diff --git a/.goreleaser.test.yaml b/.goreleaser.test.yaml index db0c788b..76c18a76 100644 --- a/.goreleaser.test.yaml +++ b/.goreleaser.test.yaml @@ -14,7 +14,7 @@ before: builds: - id: windows goos: [windows] - goarch: [amd64] # Only build for standard x86_64 Windows + goarch: ['386', amd64] # Build for 32-bit and 64-bit Windows (skip ARM64) env: - CGO_ENABLED=0 ldflags: @@ -26,7 +26,7 @@ builds: - id: linux goos: [linux] - goarch: [amd64] # Only build for standard x86_64 Linux + goarch: ['386', arm, amd64, arm64] # All common Linux architectures env: - CGO_ENABLED=0 ldflags: From 097066050b03b5792380dda2fbf3330286fae47c Mon Sep 17 00:00:00 2001 From: Philip Ellis Date: Thu, 8 Jan 2026 09:47:30 -0500 Subject: [PATCH 10/14] fixed overflow error --- cmd/connector/conn_tag_update.go | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/cmd/connector/conn_tag_update.go b/cmd/connector/conn_tag_update.go index 8e2b9ec3..f17c058f 100644 --- a/cmd/connector/conn_tag_update.go +++ b/cmd/connector/conn_tag_update.go @@ -27,14 +27,11 @@ func newConnTagUpdateCmd(client client.Client) *cobra.Command { tagName := cmd.Flags().Lookup("name").Value.String() versionStr := cmd.Flags().Lookup("version").Value.String() - version, err := strconv.Atoi(versionStr) - if err != nil { - return err - } - if version < 0 || version > int(math.MaxUint32) { - return fmt.Errorf("active version must be between 0 and %d", math.MaxUint32) - } - raw, err := json.Marshal(TagUpdate{ActiveVersion: uint32(version)}) + version, err := strconv.ParseUint(versionStr, 10, 32) + if err != nil { + return fmt.Errorf("active version must be a valid number between 0 and %d", uint32(math.MaxUint32)) + } + raw, err := json.Marshal(TagUpdate{ActiveVersion: uint32(version)}) if err != nil { return err } From ae03cc3740cbd7538960294386ee862321da8f30 Mon Sep 17 00:00:00 2001 From: Philip Ellis Date: Thu, 8 Jan 2026 09:57:57 -0500 Subject: [PATCH 11/14] added arm64 to build --- .goreleaser.test.yaml | 2 +- cmd/connector/conn_tag_update.go | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.goreleaser.test.yaml b/.goreleaser.test.yaml index 76c18a76..502c49ea 100644 --- a/.goreleaser.test.yaml +++ b/.goreleaser.test.yaml @@ -14,7 +14,7 @@ before: builds: - id: windows goos: [windows] - goarch: ['386', amd64] # Build for 32-bit and 64-bit Windows (skip ARM64) + goarch: ['386', amd64, arm64] # All Windows architectures env: - CGO_ENABLED=0 ldflags: diff --git a/cmd/connector/conn_tag_update.go b/cmd/connector/conn_tag_update.go index f17c058f..95557e3c 100644 --- a/cmd/connector/conn_tag_update.go +++ b/cmd/connector/conn_tag_update.go @@ -27,11 +27,11 @@ func newConnTagUpdateCmd(client client.Client) *cobra.Command { tagName := cmd.Flags().Lookup("name").Value.String() versionStr := cmd.Flags().Lookup("version").Value.String() - version, err := strconv.ParseUint(versionStr, 10, 32) - if err != nil { - return fmt.Errorf("active version must be a valid number between 0 and %d", uint32(math.MaxUint32)) - } - raw, err := json.Marshal(TagUpdate{ActiveVersion: uint32(version)}) + version, err := strconv.ParseUint(versionStr, 10, 32) + if err != nil { + return fmt.Errorf("active version must be a valid number between 0 and %d", uint32(math.MaxUint32)) + } + raw, err := json.Marshal(TagUpdate{ActiveVersion: uint32(version)}) if err != nil { return err } From b69a1fc8d595b8467db9aa7e0bdd4d465b8433b5 Mon Sep 17 00:00:00 2001 From: Philip Ellis Date: Thu, 8 Jan 2026 10:12:45 -0500 Subject: [PATCH 12/14] removed timestamp logic --- .github/workflows/test_release.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/test_release.yml b/.github/workflows/test_release.yml index 58399808..02bfe9a9 100644 --- a/.github/workflows/test_release.yml +++ b/.github/workflows/test_release.yml @@ -59,7 +59,6 @@ jobs: env: GORELEASER_CURRENT_TAG: "v0.0.0-test" CERT_PASSWORD: "test" - TEST_MODE: "true" - name: Upload artifacts for inspection uses: actions/upload-artifact@v4 From ddd22247ad5754f83e24bd6d3cb0414f9d168b6b Mon Sep 17 00:00:00 2001 From: Philip Ellis Date: Thu, 8 Jan 2026 10:38:16 -0500 Subject: [PATCH 13/14] reverted signing logic --- assets/sign-windows-executable.sh | 36 ++++--------------------------- 1 file changed, 4 insertions(+), 32 deletions(-) diff --git a/assets/sign-windows-executable.sh b/assets/sign-windows-executable.sh index 8cf24a41..e45dd4df 100755 --- a/assets/sign-windows-executable.sh +++ b/assets/sign-windows-executable.sh @@ -3,12 +3,6 @@ set -e EXE="$1" -echo "=== Windows Code Signing Script Started ===" >&2 -echo "EXE: $EXE" >&2 -echo "CERT_FILE: $CERT_FILE" >&2 -echo "KEY_FILE: $KEY_FILE" >&2 -echo "TEST_MODE: $TEST_MODE" >&2 - if [ -z "$CERT_FILE" ]; then echo "skipping Windows code-signing; CERT_FILE not set" >&2 exit 0 @@ -29,30 +23,8 @@ if [ ! -f "$KEY_FILE" ]; then exit 1 fi -# Determine if we should use timestamping (skip in test mode) -if [ "$TEST_MODE" = "true" ]; then - echo "Signing without timestamp (test mode)" >&2 - timeout 120 osslsigncode sign -n "SailPoint CLI" \ - -certs "$CERT_FILE" -key "$KEY_FILE" \ - -in "$EXE" -out "$EXE"~ 2>&1 | tee /dev/stderr - - if [ $? -eq 124 ]; then - echo "ERROR: Signing timed out after 120 seconds" >&2 - exit 1 - fi - echo "Signing completed successfully" >&2 -else - echo "Signing with timestamp" >&2 - timeout 180 osslsigncode sign -n "SailPoint CLI" -t http://timestamp.digicert.com \ - -certs "$CERT_FILE" -key "$KEY_FILE" \ - -in "$EXE" -out "$EXE"~ 2>&1 | tee /dev/stderr - - if [ $? -eq 124 ]; then - echo "ERROR: Signing with timestamp timed out after 180 seconds" >&2 - exit 1 - fi - echo "Signing with timestamp completed successfully" >&2 -fi +osslsigncode sign -n "SailPoint CLI" -t http://timestamp.digicert.com \ + -certs "$CERT_FILE" -key "$KEY_FILE" \ + -in "$EXE" -out "$EXE"~ -mv "$EXE"~ "$EXE" -echo "=== Windows Code Signing Script Completed ===" >&2 \ No newline at end of file +mv "$EXE"~ "$EXE" \ No newline at end of file From 0cb12d9af29c9bc7bf993bb191a5fa11ed1aebe9 Mon Sep 17 00:00:00 2001 From: Philip Ellis Date: Thu, 8 Jan 2026 10:55:31 -0500 Subject: [PATCH 14/14] added test release for PRs and added enhancements to normal release --- .../{test_release.yml => pr_release_validation.yml} | 3 ++- .github/workflows/release.yml | 9 ++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) rename .github/workflows/{test_release.yml => pr_release_validation.yml} (98%) diff --git a/.github/workflows/test_release.yml b/.github/workflows/pr_release_validation.yml similarity index 98% rename from .github/workflows/test_release.yml rename to .github/workflows/pr_release_validation.yml index 02bfe9a9..4f43ee45 100644 --- a/.github/workflows/test_release.yml +++ b/.github/workflows/pr_release_validation.yml @@ -1,4 +1,4 @@ -name: Test Release +name: PR Release Validation on: pull_request: @@ -66,3 +66,4 @@ jobs: name: test-release-artifacts path: dist/ retention-days: 7 + diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c2079017..ebf5e53e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -32,6 +32,13 @@ jobs: uses: actions/setup-go@v5 with: go-version: 1.24.1 + cache: true + + - name: Download Go dependencies + run: | + echo "Downloading Go modules..." + go mod download + echo "Go modules downloaded successfully" - name: Set Tag Name id: tagName @@ -66,7 +73,7 @@ jobs: uses: goreleaser/goreleaser-action@v6 with: version: "2.8.2" - args: release --clean --verbose --timeout 60m + args: release --clean --verbose --timeout 60m --parallelism 4 env: GITHUB_TOKEN: ${{secrets.PUBLISHER_TOKEN}} GORELEASER_CURRENT_TAG: ${{steps.tagName.outputs.tag-name}}