Skip to content

Bump tar from 7.5.7 to 7.5.11 #35

Bump tar from 7.5.7 to 7.5.11

Bump tar from 7.5.7 to 7.5.11 #35

Workflow file for this run

name: Prebuild
on:
push:
branches: [master]
pull_request:
branches: [master]
release:
types: [published]
jobs:
prebuild-linux:
runs-on: ubuntu-latest
container: node:${{ matrix.node-version }}-bookworm
strategy:
matrix:
node-version: [20, 22, 24]
architecture: [x64]
steps:
- uses: actions/checkout@v4
- name: Install system dependencies (Debian)
run: |
apt-get update
apt-get install -y build-essential pkg-config libgd-dev
# Install optional dependencies for full feature set
apt-get install -y libheif-dev libavif-dev libtiff-dev libwebp-dev \
libfontconfig1-dev libfreetype6-dev libpng-dev libjpeg-dev \
libaom-dev libdav1d-dev
- name: Cache npm dependencies
uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ matrix.node-version }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-${{ matrix.node-version }}-
- name: Install dependencies
run: npm ci
- name: Build and test
run: |
npm run rebuild
npm test
- name: Generate prebuilds
run: |
npx prebuildify --napi --strip
- name: Upload prebuilds
uses: actions/upload-artifact@v4
with:
name: prebuilds-debian-${{ matrix.node-version }}-${{ matrix.architecture }}
path: prebuilds/
retention-days: 30
- name: Verify prebuild works
run: |
# Test that the prebuild can be loaded
node -e "
import('./index.js').then(({ default: gd }) => {
console.log('Version:', gd.getGDVersion());
console.log('Prebuild loaded successfully');
}).catch((error) => {
console.error(error);
process.exit(1);
});
"
prebuild-macos:
strategy:
matrix:
include:
- os: macos-15-intel
node-version: 20
architecture: x64
- os: macos-15-intel
node-version: 22
architecture: x64
- os: macos-15-intel
node-version: 24
architecture: x64
- os: macos-latest
node-version: 20
architecture: arm64
- os: macos-latest
node-version: 22
architecture: arm64
- os: macos-latest
node-version: 24
architecture: arm64
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
architecture: ${{ matrix.architecture }}
- name: Install system dependencies (macOS)
run: |
brew install pkg-config gd
# Install optional dependencies for full feature set
brew install libheif libavif libtiff webp fontconfig freetype
- name: Cache npm dependencies
uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ matrix.node-version }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-${{ matrix.node-version }}-
- name: Install dependencies
run: npm ci
- name: Build and test
run: |
npm run rebuild
npm test
- name: Generate prebuilds
run: |
npx prebuildify --napi --strip
- name: Upload prebuilds
uses: actions/upload-artifact@v4
with:
name: prebuilds-macos-${{ matrix.node-version }}-${{ matrix.architecture }}
path: prebuilds/
retention-days: 30
- name: Verify prebuild works
run: |
# Test that the prebuild can be loaded
node -e "
import('./index.js').then(({ default: gd }) => {
console.log('Version:', gd.getGDVersion());
console.log('Prebuild loaded successfully');
}).catch((error) => {
console.error(error);
process.exit(1);
});
"
# Job to collect all prebuilds and prepare for release
collect-prebuilds:
needs: [prebuild-linux, prebuild-macos]
runs-on: ubuntu-latest
container: debian:bookworm-slim
if: github.event_name == 'release' && github.event.action == 'published'
steps:
- uses: actions/checkout@v4
- name: Use Node.js 22
uses: actions/setup-node@v4
with:
node-version: 22
registry-url: https://registry.npmjs.org/
- name: Download all prebuilds
uses: actions/download-artifact@v4
with:
path: all-prebuilds
pattern: prebuilds-*
merge-multiple: true
- name: Reorganize prebuilds
run: |
mkdir -p prebuilds
# Copy all prebuilds to the prebuilds directory
find all-prebuilds -name "*.node" -exec cp {} prebuilds/ \;
ls -la prebuilds/
- name: Create release package
run: |
tar -czf prebuilds.tar.gz prebuilds/
- name: Upload to GitHub Release
uses: softprops/action-gh-release@v1
with:
files: prebuilds.tar.gz
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Publish to npm (includes prebuilds/)
run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}