Bump tar from 7.5.7 to 7.5.11 #35
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 }} |