Skip to content

Commit

Permalink
Add steps to sign win binary
Browse files Browse the repository at this point in the history
  • Loading branch information
pankaj443 committed May 17, 2024
1 parent 78ddd74 commit 123be07
Show file tree
Hide file tree
Showing 4 changed files with 117 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
name: Build Executables
on:
release:
types: [published]
push:
pull_request:
workflow_dispatch:
jobs:
lint:
name: Build Executables
Expand All @@ -12,7 +13,7 @@ jobs:
with:
node-version: 14
architecture: x64
- run: ./scripts/executable.sh
- run: ./scripts/executable_mac.sh
env:
APPLE_DEV_CERT: ${{secrets.APPLE_DEV_CERT}}
APPLE_ID_USERNAME: ${{secrets.APPLE_ID_USERNAME}}
Expand All @@ -25,6 +26,5 @@ jobs:
files: |
percy-osx.zip
percy-linux.zip
percy-win.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
35 changes: 35 additions & 0 deletions .github/workflows/executable_win.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Build Executables
on:
push:
pull_request:
workflow_dispatch:
jobs:
lint:
name: Build Executables
runs-on: windows-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-node@v4
with:
node-version: 14
architecture: x64
- run: ./scripts/executable_win.sh
- name: Sign binary
uses: lando/code-sign-action@v2
with:
file: path/to/binary
certificate-data: ${{ secrets.WINDOWS_CERT }}
certificate-password: ${{ secrets.WINDOWS_CERT_KEY }}
# env:
# APPLE_DEV_CERT: ${{secrets.APPLE_DEV_CERT}}
# APPLE_ID_USERNAME: ${{secrets.APPLE_ID_USERNAME}}
# APPLE_ID_KEY: ${{secrets.APPLE_ID_KEY}}
# - name: Verify executable
# run: ./percy --version
# - name: Upload assets
# uses: softprops/action-gh-release@d99959edae48b5ffffd7b00da66dcdb0a33a52ee
# with:
# files: |
# percy-win.zip
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4 changes: 2 additions & 2 deletions scripts/executable.sh → scripts/executable_mac.sh
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ pkg ./packages/cli/bin/run.js -d
# Rename executables
mv run-linux percy && chmod +x percy
mv run-macos percy-osx && chmod +x percy-osx
mv run-win.exe percy.exe && chmod +x percy.exe
# mv run-win.exe percy.exe && chmod +x percy.exe

# Sign & Notrize mac app
echo "$APPLE_DEV_CERT" | base64 -d > AppleDevIDApp.p12
Expand All @@ -69,7 +69,7 @@ codesign --force --verbose=4 -s "Developer ID Application: BrowserStack Inc (76
zip percy-linux.zip percy
mv percy-osx percy
zip percy-osx.zip percy
zip percy-win.zip percy.exe
# zip percy-win.zip percy.exe

xcrun notarytool submit --apple-id "$APPLE_ID_USERNAME" --password $APPLE_ID_KEY --team-id 763K6K6H44 percy-osx.zip --wait

Expand Down
76 changes: 76 additions & 0 deletions scripts/executable_win.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
#!/bin/bash
set -e -o pipefail

function cleanup {
rm -rf build
# rm AppleDevIDApp.p12
# security delete-keychain percy.keychain
}

brew install gnu-sed
npm install -g pkg

yarn install
yarn build

# Remove type from package.json files
gsed -i '/"type": "module",/{s///;h};${x;/./{x;q0};x;q1}' ./package.json

# Create array of package.json files
array=($(ls -d ./packages/*/package.json))

# Delete package.json filepath where type module is not defined
delete=(./packages/dom/package.json ./packages/sdk-utils/package.json)
for del in ${delete[@]}
do
array=("${array[@]/$del}")
done

# Remove type module from package.json where present
for package in "${array[@]}"
do
if [ ! -z "$package" ]
then
gsed -i '/"type": "module",/{s///;h};${x;/./{x;q0};x;q1}' $package
fi
done

echo "import { cli } from '@percy/cli';\
$(cat ./packages/cli/dist/percy.js)" > ./packages/cli/dist/percy.js

gsed -i '/Update NODE_ENV for executable/{s//\nprocess.env.NODE_ENV = "executable";/;h};${x;/./{x;q0};x;q1}' ./packages/cli/bin/run.cjs

# Convert ES6 code to cjs
npm run build_cjs
cp -R ./build/* packages/

# Create executables
pkg ./packages/cli/bin/run.js -d

# # Rename executables
# mv run-linux percy && chmod +x percy
# mv run-macos percy-osx && chmod +x percy-osx
mv run-win.exe percy.exe && chmod +x percy.exe

# # Sign & Notrize mac app
# echo "$APPLE_DEV_CERT" | base64 -d > AppleDevIDApp.p12

# security create-keychain -p percy percy.keychain
# security import AppleDevIDApp.p12 -t agg -k percy.keychain -P ChaiTime -A
# security list-keychains -s ~/Library/Keychains/percy.keychain
# security default-keychain -s ~/Library/Keychains/percy.keychain
# security unlock-keychain -p "percy" ~/Library/Keychains/percy.keychain
# security set-keychain-settings -t 3600 -l ~/Library/Keychains/percy.keychain
# security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k percy ~/Library/Keychains/percy.keychain-db

# codesign --force --verbose=4 -s "Developer ID Application: BrowserStack Inc (763K6K6H44)" --options runtime --entitlements scripts/files/entitlement.plist --keychain ~/Library/Keychains/percy.keychain percy-osx

# # Create zip file for uploading as assets
# zip percy-linux.zip percy
# mv percy-osx percy
# zip percy-osx.zip percy
# zip percy-win.zip percy.exe

# xcrun notarytool submit --apple-id "$APPLE_ID_USERNAME" --password $APPLE_ID_KEY --team-id 763K6K6H44 percy-osx.zip --wait

cleanup

0 comments on commit 123be07

Please sign in to comment.