Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
7e0ed8e
try to have CI prebuild and sign
scarlin-casechek May 5, 2025
66674a3
Merge branch 'main' into create-pre-builds
scarlin-casechek May 5, 2025
19bb55a
fix npm install order
scarlin-casechek May 5, 2025
bd63619
remove extra "
scarlin-casechek May 5, 2025
684fb01
remove var mapping in string
scarlin-casechek May 5, 2025
e8641b8
fix var mapping in string
scarlin-casechek May 5, 2025
d6ace38
fix adding release
scarlin-casechek May 5, 2025
08b8d72
fix get version syntax issue
scarlin-casechek May 5, 2025
e587467
fix get version syntax issue try 2
scarlin-casechek May 5, 2025
82339fc
fix get version syntax issue try 3
scarlin-casechek May 5, 2025
481f5c1
fix signing
scarlin-casechek May 5, 2025
f9c0351
fix signing and upload to releases
scarlin-casechek May 5, 2025
1a07f3c
debugging as we cant find the files after prebuild
scarlin-casechek May 5, 2025
3e4ea46
debugging as we cant find the files after prebuild
scarlin-casechek May 5, 2025
67ddf0f
just use the file in prebuilds now
scarlin-casechek May 5, 2025
5eb7550
just use the file in prebuilds now
scarlin-casechek May 5, 2025
90747cf
update version to get a new release of node-printer and prebuilts
scarlin-casechek May 5, 2025
aa00564
add pr number to releases
scarlin-casechek May 5, 2025
5096c97
prevent windows versions from overriding themselves
scarlin-casechek May 5, 2025
5a8c12c
add os and version folder to store all the .node files so they dont o…
scarlin-casechek May 5, 2025
406917b
add os and version folder to store all the .node files so they dont o…
scarlin-casechek May 5, 2025
77de20b
fix the file upload using a more standard process
scarlin-casechek May 5, 2025
bf6e503
cleanup a little and get tagging to apply properly
scarlin-casechek May 5, 2025
f6ce69a
fix path
scarlin-casechek May 5, 2025
9dd9f96
fix paths and add some logging
scarlin-casechek May 5, 2025
e85469a
fix the bad dir
scarlin-casechek May 5, 2025
22fd595
fix version issue
scarlin-casechek May 5, 2025
b97b0f9
move the version check to the main so we dont have to do one per os
scarlin-casechek May 5, 2025
9c5f494
move the version check to the main so we dont have to do one per os
scarlin-casechek May 5, 2025
99132e6
update to publish the release
scarlin-casechek May 5, 2025
d9340eb
append to the release, until we close it
scarlin-casechek May 5, 2025
d64e980
update our release publisher version so it doesnt create a second rel…
scarlin-casechek May 5, 2025
3107ba6
update the main workflow to match just not create pr in release name
scarlin-casechek May 5, 2025
0f936e5
only run main on main branch push
scarlin-casechek May 5, 2025
de41d92
remove unused package.json script
scarlin-casechek May 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
153 changes: 122 additions & 31 deletions .github/workflows/prebuild-main.yml
Original file line number Diff line number Diff line change
@@ -1,55 +1,146 @@
name: Prebuild Binaries and Publish
name: Main Prebuild Binaries

on:
push:
branches:
- main

jobs:
prebuild-linux:
name: Prebuild Binaries for Linux
get-version:
name: Get Package Version
runs-on: ubuntu-latest
timeout-minutes: 30
outputs:
version: ${{ steps.set-version.outputs.version }}
release_id: ${{ steps.create-release.outputs.id }}
steps:
- name: Setup Dependencies
run: |
sudo dpkg --add-architecture i386
sudo apt-get update -y -qq
sudo apt-get install -y g++-multilib gcc-multilib libcups2-dev libcups2-dev:i386 libc6-dev-i386 linux-libc-dev linux-libc-dev:i386
- uses: actions/setup-node@v4
- name: Checkout
uses: actions/checkout@v4

- name: Get package version
id: package-version
uses: martinbeentjes/npm-get-version-action@v1.3.1

- name: Set release version
id: set-version
run: echo "version=${{ steps.package-version.outputs.current-version }}" >> $GITHUB_OUTPUT

- name: Create GitHub Release
id: create-release
uses: softprops/action-gh-release@v2
with:
node-version: 20.x
- uses: actions/checkout@v4
- run: npm i
- name: Prebuild
run: |
npm run prebuild -- --strip --arch ia32 -u ${{ secrets.PREBUILD_TOKEN }}
npm run prebuild -- --strip --arch x64 -u ${{ secrets.PREBUILD_TOKEN }}
tag_name: v${{ steps.set-version.outputs.version }}
draft: true
name: Release v${{ steps.set-version.outputs.version }}
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

prebuild-macos:
name: Prebuild Binaries for macOS
needs: get-version
runs-on: macos-latest
timeout-minutes: 30
steps:
- uses: actions/setup-node@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20

- name: Checkout
uses: actions/checkout@v4

- name: Install dependencies
run: npm i

- name: Extract certificate
uses: apple-actions/import-codesign-certs@v3
with:
node-version: 20.x
- uses: actions/checkout@v4
- run: npm i
- name: Prebuild
p12-file-base64: ${{ secrets.APPLICATION_CERTIFICATE_P12 }}
p12-password: ${{ secrets.APPLICATION_CERTIFICATE_P12_PASSWORD }}

- name: Build and sign macOS prebuild
run: |
npm run prebuild -- --strip --arch x64 -u ${{ secrets.PREBUILD_TOKEN }}
npm run prebuild -- --strip --arch arm64 -u ${{ secrets.PREBUILD_TOKEN }}
npx prebuild --backend node-gyp --target 20.3.0 --arch x64 --platform darwin --strip --pack
mkdir -p lib/darwin-x64
cp lib/node_printer.node lib/darwin-x64/
ls -la lib/darwin-x64/ || echo "Directory not found"
codesign --sign "${{ vars.TEAM_ID }}" --timestamp --options runtime lib/darwin-x64/node_printer.node || echo "File not found for signing"
# List directories to see where tar.gz files are
echo "Checking for tar.gz files:"
find . -name "*.tar.gz" -type f

- name: Upload macOS binary to GitHub release
uses: softprops/action-gh-release@v2
with:
tag_name: v${{ needs.get-version.outputs.version }}
draft: true
files: |
*.tar.gz
**/*.tar.gz
append_body: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

prebuild-windows:
name: Prebuild Binaries for Windows
needs: get-version
runs-on: windows-latest
timeout-minutes: 30
steps:
- uses: actions/setup-node@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20.x
- uses: actions/checkout@v4
- run: npm i
- name: Prebuild
node-version: 20

- name: Checkout
uses: actions/checkout@v4

- name: Install dependencies
run: npm i

- name: Prebuild Windows binaries
run: |
npm run prebuild -- --strip --arch ia32 -u ${{ secrets.PREBUILD_TOKEN }}
npm run prebuild -- --strip --arch x64 -u ${{ secrets.PREBUILD_TOKEN }}
# Create platform-specific directories
mkdir -p lib/win32-x64
mkdir -p lib/win32-ia32

# Build x64 version
npx prebuild --backend node-gyp --target 20.3.0 --arch x64 --platform win32 --strip --pack
# Copy to platform-specific directory
copy lib\node_printer.node lib\win32-x64\

# Build ia32 version
npx prebuild --backend node-gyp --target 20.3.0 --arch ia32 --platform win32 --strip --pack
# Copy to platform-specific directory
copy lib\node_printer.node lib\win32-ia32\

# List the directories to verify
dir lib
dir lib\win32-x64 || echo "x64 directory not found"
dir lib\win32-ia32 || echo "ia32 directory not found"

- name: Upload Windows binaries to GitHub release
uses: softprops/action-gh-release@v2
with:
tag_name: v${{ needs.get-version.outputs.version }}
draft: true
files: |
*.tar.gz
**/*.tar.gz
append_body: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

publish-release:
name: Publish GitHub Release
needs: [get-version, prebuild-macos, prebuild-windows]
runs-on: ubuntu-latest
steps:
- name: Publish Release
uses: softprops/action-gh-release@v2
with:
tag_name: v${{ needs.get-version.outputs.version }}
draft: false
append_body: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
151 changes: 121 additions & 30 deletions .github/workflows/prebuild-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,50 +4,141 @@ on:
pull_request:

jobs:
prebuild-linux:
name: Prebuild Binaries for Linux
get-version:
name: Get Package Version
runs-on: ubuntu-latest
timeout-minutes: 30
outputs:
version: ${{ steps.set-version.outputs.version }}
release_id: ${{ steps.create-release.outputs.id }}
steps:
- name: Setup Dependencies
run: |
sudo dpkg --add-architecture i386
sudo apt-get update -y -qq
sudo apt-get install -y g++-multilib gcc-multilib libcups2-dev libcups2-dev:i386 libc6-dev-i386 linux-libc-dev linux-libc-dev:i386
- uses: actions/setup-node@v4
- name: Checkout
uses: actions/checkout@v4

- name: Get package version
id: package-version
uses: martinbeentjes/npm-get-version-action@v1.3.1

- name: Set release version
id: set-version
run: echo "version=${{ steps.package-version.outputs.current-version }}-pr${{ github.event.pull_request.number }}" >> $GITHUB_OUTPUT

- name: Create GitHub Release
id: create-release
uses: softprops/action-gh-release@v2
with:
node-version: 20.x
- uses: actions/checkout@v4
- run: npm i
- name: Prebuild
run: |
npm run prebuild -- --strip --arch ia32
npm run prebuild -- --strip --arch x64
tag_name: v${{ steps.set-version.outputs.version }}
draft: true
name: Release v${{ steps.set-version.outputs.version }}
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

prebuild-macos:
name: Prebuild Binaries for macOS
needs: get-version
runs-on: macos-latest
timeout-minutes: 30
steps:
- uses: actions/setup-node@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20

- name: Checkout
uses: actions/checkout@v4

- name: Install dependencies
run: npm i

- name: Extract certificate
uses: apple-actions/import-codesign-certs@v3
with:
node-version: 20.x
- uses: actions/checkout@v4
- run: npm i
- name: Prebuild
p12-file-base64: ${{ secrets.APPLICATION_CERTIFICATE_P12 }}
p12-password: ${{ secrets.APPLICATION_CERTIFICATE_P12_PASSWORD }}

- name: Build and sign macOS prebuild
run: |
npm run prebuild -- --strip --arch x64
npm run prebuild -- --strip --arch arm64
npx prebuild --backend node-gyp --target 20.3.0 --arch x64 --platform darwin --strip --pack
mkdir -p lib/darwin-x64
cp lib/node_printer.node lib/darwin-x64/
ls -la lib/darwin-x64/ || echo "Directory not found"
codesign --sign "${{ vars.TEAM_ID }}" --timestamp --options runtime lib/darwin-x64/node_printer.node || echo "File not found for signing"
# List directories to see where tar.gz files are
echo "Checking for tar.gz files:"
find . -name "*.tar.gz" -type f

- name: Upload macOS binary to GitHub release
uses: softprops/action-gh-release@v2
with:
tag_name: v${{ needs.get-version.outputs.version }}
draft: true
files: |
*.tar.gz
**/*.tar.gz
append_body: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

prebuild-windows:
name: Prebuild Binaries for Windows
needs: get-version
runs-on: windows-latest
timeout-minutes: 30
steps:
- uses: actions/setup-node@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20.x
- uses: actions/checkout@v4
- run: npm i
- name: Prebuild
node-version: 20

- name: Checkout
uses: actions/checkout@v4

- name: Install dependencies
run: npm i

- name: Prebuild Windows binaries
run: |
npm run prebuild -- --strip --arch ia32
npm run prebuild -- --strip --arch x64
# Create platform-specific directories
mkdir -p lib/win32-x64
mkdir -p lib/win32-ia32

# Build x64 version
npx prebuild --backend node-gyp --target 20.3.0 --arch x64 --platform win32 --strip --pack
# Copy to platform-specific directory
copy lib\node_printer.node lib\win32-x64\

# Build ia32 version
npx prebuild --backend node-gyp --target 20.3.0 --arch ia32 --platform win32 --strip --pack
# Copy to platform-specific directory
copy lib\node_printer.node lib\win32-ia32\

# List the directories to verify
dir lib
dir lib\win32-x64 || echo "x64 directory not found"
dir lib\win32-ia32 || echo "ia32 directory not found"

- name: Upload Windows binaries to GitHub release
uses: softprops/action-gh-release@v2
with:
tag_name: v${{ needs.get-version.outputs.version }}
draft: true
files: |
*.tar.gz
**/*.tar.gz
append_body: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

publish-release:
name: Publish GitHub Release
needs: [get-version, prebuild-macos, prebuild-windows]
runs-on: ubuntu-latest
steps:
- name: Publish Release
uses: softprops/action-gh-release@v2
with:
tag_name: v${{ needs.get-version.outputs.version }}
draft: false
append_body: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@casechek/node-printer",
"description": "Node.js printer bindings",
"version": "0.6.2",
"version": "0.7.0",
"homepage": "https://github.com/casechek/node-printer",
"author": {
"name": "Ion Lupascu",
Expand Down Expand Up @@ -29,17 +29,17 @@
},
"scripts": {
"install": "prebuild-install || node-gyp rebuild",
"prebuild-all": "prebuild --all --force --strip --verbose --openssl_fips=X",
"prebuild": "prebuild",
"prebuild-electron": "prebuild --strip --verbose",
"rebuild": "node-gyp rebuild",
"test": "nodeunit test"
},
"binary": {
"module_name": "node_printer",
"module_path": "./lib/",
"module_path": "lib",
"host": "https://github.com/casechek/node-printer/releases/download/",
"remote_path": "v{version}"
"remote_path": "v{version}",
"package_name": "{module_name}-v{version}-{node_abi}-{platform}-{arch}.tar.gz"
},
"license": "MIT",
"main": "./lib/printer",
Expand Down