Skip to content

Commit 8c7ec37

Browse files
tofikwestclaude
andcommitted
fix(ci): replace broken sslcom/esigner-codesign action with direct CodeSignTool invocation
The sslcom/esigner-codesign GitHub Action (both @develop and @v1.3.2) has a bug where it fails to pass -username and -password flags to the CodeSignTool CLI. Replaced with direct download and invocation of CodeSignTool v1.3.0 via PowerShell. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 5f35e35 commit 8c7ec37

2 files changed

Lines changed: 42 additions & 23 deletions

File tree

.github/workflows/device-agent-release.yml

Lines changed: 41 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -179,24 +179,43 @@ jobs:
179179
AUTO_UPDATE_URL: ${{ needs.detect-version.outputs.auto_update_url }}
180180
run: bun run package:win
181181

182-
- name: Setup SSL.com eSigner CodeSignTool
183-
uses: sslcom/esigner-codesign@v1.3.2
182+
- name: Setup Java for CodeSignTool
183+
uses: actions/setup-java@v4
184184
with:
185-
command: get_credential_ids
186-
username: ${{ secrets.ESIGNER_USERNAME }}
187-
password: ${{ secrets.ESIGNER_PASSWORD }}
188-
totp_secret: ${{ secrets.ESIGNER_TOTP_SECRET }}
185+
distribution: 'corretto'
186+
java-version: '11'
189187

190-
- name: Sign Windows EXE with SSL.com eSigner
191-
uses: sslcom/esigner-codesign@v1.3.2
192-
with:
193-
command: sign
194-
username: ${{ secrets.ESIGNER_USERNAME }}
195-
password: ${{ secrets.ESIGNER_PASSWORD }}
196-
credential_id: ${{ secrets.ESIGNER_CREDENTIAL_ID }}
197-
totp_secret: ${{ secrets.ESIGNER_TOTP_SECRET }}
198-
file_path: ${{ github.workspace }}/packages/device-agent/release
199-
override: true
188+
- name: Sign Windows EXE with SSL.com CodeSignTool
189+
shell: powershell
190+
working-directory: packages/device-agent/release
191+
env:
192+
ESIGNER_USERNAME: ${{ secrets.ESIGNER_USERNAME }}
193+
ESIGNER_PASSWORD: ${{ secrets.ESIGNER_PASSWORD }}
194+
ESIGNER_CREDENTIAL_ID: ${{ secrets.ESIGNER_CREDENTIAL_ID }}
195+
ESIGNER_TOTP_SECRET: ${{ secrets.ESIGNER_TOTP_SECRET }}
196+
run: |
197+
# Download and extract CodeSignTool
198+
Invoke-WebRequest -Uri "https://github.com/SSLcom/CodeSignTool/releases/download/v1.3.0/CodeSignTool-v1.3.0-windows.zip" -OutFile "codesigntool.zip"
199+
Expand-Archive -Path "codesigntool.zip" -DestinationPath "codesigntool"
200+
201+
# Find the jar file
202+
$jar = Get-ChildItem -Path "codesigntool" -Recurse -Filter "code_sign_tool-*.jar" | Select-Object -First 1
203+
if (-not $jar) { throw "CodeSignTool jar not found" }
204+
Write-Host "Found CodeSignTool jar at: $($jar.FullName)"
205+
206+
# Sign each .exe file using Java directly (skips .bat which needs bundled JDK)
207+
Get-ChildItem -Filter "*.exe" | ForEach-Object {
208+
Write-Host "Signing $($_.Name)..."
209+
& java -Xmx1024M -jar "$($jar.FullName)" sign `
210+
-username="$env:ESIGNER_USERNAME" `
211+
-password="$env:ESIGNER_PASSWORD" `
212+
-credential_id="$env:ESIGNER_CREDENTIAL_ID" `
213+
-totp_secret="$env:ESIGNER_TOTP_SECRET" `
214+
-input_file_path="$($_.FullName)" `
215+
-override="true"
216+
if ($LASTEXITCODE -ne 0) { throw "Code signing failed for $($_.Name)" }
217+
Write-Host "Signed $($_.Name) successfully"
218+
}
200219
201220
- name: Recalculate latest.yml hash after signing
202221
shell: bash
@@ -377,10 +396,10 @@ jobs:
377396

378397
- name: Upload installers to S3
379398
env:
380-
AWS_ACCESS_KEY_ID: ${{ secrets.APP_AWS_ACCESS_KEY_ID }}
381-
AWS_SECRET_ACCESS_KEY: ${{ secrets.APP_AWS_SECRET_ACCESS_KEY }}
399+
AWS_ACCESS_KEY_ID: ${{ needs.detect-version.outputs.s3_env == 'production' && secrets.APP_AWS_ACCESS_KEY_ID || secrets.APP_AWS_ACCESS_KEY_ID_STAGING }}
400+
AWS_SECRET_ACCESS_KEY: ${{ needs.detect-version.outputs.s3_env == 'production' && secrets.APP_AWS_SECRET_ACCESS_KEY || secrets.APP_AWS_SECRET_ACCESS_KEY_STAGING }}
382401
AWS_REGION: ${{ secrets.APP_AWS_REGION }}
383-
S3_BUCKET: ${{ secrets.FLEET_AGENT_BUCKET_NAME }}
402+
S3_BUCKET: ${{ needs.detect-version.outputs.s3_env == 'production' && secrets.FLEET_AGENT_BUCKET_NAME || secrets.FLEET_AGENT_BUCKET_NAME_STAGING }}
384403
VERSION: ${{ needs.detect-version.outputs.version }}
385404
S3_ENV: ${{ needs.detect-version.outputs.s3_env }}
386405
run: |
@@ -416,10 +435,10 @@ jobs:
416435
417436
- name: Upload auto-update files to S3
418437
env:
419-
AWS_ACCESS_KEY_ID: ${{ secrets.APP_AWS_ACCESS_KEY_ID }}
420-
AWS_SECRET_ACCESS_KEY: ${{ secrets.APP_AWS_SECRET_ACCESS_KEY }}
438+
AWS_ACCESS_KEY_ID: ${{ needs.detect-version.outputs.s3_env == 'production' && secrets.APP_AWS_ACCESS_KEY_ID || secrets.APP_AWS_ACCESS_KEY_ID_STAGING }}
439+
AWS_SECRET_ACCESS_KEY: ${{ needs.detect-version.outputs.s3_env == 'production' && secrets.APP_AWS_SECRET_ACCESS_KEY || secrets.APP_AWS_SECRET_ACCESS_KEY_STAGING }}
421440
AWS_REGION: ${{ secrets.APP_AWS_REGION }}
422-
S3_BUCKET: ${{ secrets.FLEET_AGENT_BUCKET_NAME }}
441+
S3_BUCKET: ${{ needs.detect-version.outputs.s3_env == 'production' && secrets.FLEET_AGENT_BUCKET_NAME || secrets.FLEET_AGENT_BUCKET_NAME_STAGING }}
423442
S3_ENV: ${{ needs.detect-version.outputs.s3_env }}
424443
run: |
425444
UPDATE_DIR="device-agent/${S3_ENV}/updates"

packages/device-agent/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@comp/device-agent",
33
"version": "1.0.0",
4-
"description": "Comp AI Device Compliance Agent - Device Compliance Checks",
4+
"description": "Comp AI Device Agent - Endpoint Compliance",
55
"author": "Comp AI <hello@trycomp.ai>",
66
"homepage": "https://trycomp.ai",
77
"private": true,

0 commit comments

Comments
 (0)