Fix upload artifact path #22
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: CI | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| env: | |
| DEBUG: 'napi:*' | |
| APP_NAME: 'napi-webp-animation' | |
| MACOSX_DEPLOYMENT_TARGET: '10.13' | |
| permissions: | |
| contents: write | |
| id-token: write | |
| jobs: | |
| cross-build: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| targets: | |
| [ | |
| 'x86_64-unknown-linux-gnu', | |
| 'x86_64-unknown-linux-musl', | |
| 'aarch64-unknown-linux-gnu', | |
| 'aarch64-unknown-linux-musl', | |
| 'armv7-unknown-linux-gnueabihf', | |
| 'aarch64-linux-android', | |
| 'aarch64-pc-windows-msvc', | |
| ] | |
| runs-on: ubuntu-latest | |
| name: stable - ${{ matrix.targets }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Cache cargo registry | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo | |
| ${{ github.workspace }}/.xwin | |
| ~/.napi-rs | |
| ./target | |
| key: ${{ matrix.targets }}-cargo-cache | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| toolchain: stable | |
| targets: ${{ matrix.targets }} | |
| - name: Install Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| - name: Install ziglang | |
| uses: goto-bus-stop/setup-zig@v1 | |
| with: | |
| version: 0.13.0 | |
| - name: Install cargo-xwin | |
| if: matrix.targets == 'aarch64-pc-windows-msvc' | |
| run: cargo install cargo-xwin | |
| - name: Install llvm | |
| if: matrix.targets == 'aarch64-pc-windows-msvc' | |
| run: sudo apt install -y llvm | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Build bindings | |
| run: npm run build --target ${{ matrix.targets }} | |
| env: | |
| XWIN_CACHE_DIR: ${{ github.workspace }}/.xwin | |
| - name: Upload artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: bindings-${{ matrix.targets }} | |
| path: ./${{ matrix.targets }}/${{ env.APP_NAME }}.*.node | |
| if-no-files-found: error | |
| host-build: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| settings: | |
| - host: macos-latest | |
| target: 'x86_64-apple-darwin' | |
| setup: brew install nasm | |
| build: | | |
| rustc --print target-cpus | |
| clang --version | |
| npm run build --target x86_64-apple-darwin | |
| downloadTarget: '' | |
| - host: windows-latest | |
| setup: | | |
| choco upgrade llvm | |
| build: npm run build --target x86_64-pc-windows-msvc | |
| target: 'x86_64-pc-windows-msvc' | |
| downloadTarget: '' | |
| - host: macos-latest | |
| downloadTarget: 'aarch64-apple-darwin' | |
| target: 'aarch64-apple-darwin' | |
| build: | | |
| export MACOSX_DEPLOYMENT_TARGET='11.0' | |
| clang --version | |
| npm run build --target aarch64-apple-darwin | |
| - host: ubuntu-latest | |
| target: 'riscv64gc-unknown-linux-gnu' | |
| downloadTarget: 'riscv64gc-unknown-linux-gnu' | |
| build: | | |
| sudo apt-get update | |
| sudo apt-get install gcc-riscv64-linux-gnu g++-riscv64-linux-gnu -y | |
| export CC=riscv64-linux-gnu-gcc | |
| export CXX=riscv64-linux-gnu-g++ | |
| npm run build --target riscv64gc-unknown-linux-gnu | |
| name: stable - ${{ matrix.settings.target }} - node@20 | |
| runs-on: ${{ matrix.settings.host }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: npm | |
| - name: Set up QEMU | |
| if: ${{ matrix.settings.target == 'armv7-unknown-linux-gnueabihf' }} | |
| uses: docker/setup-qemu-action@v3 | |
| with: | |
| platforms: linux/arm/v7 | |
| - name: Set up Docker Buildx | |
| if: ${{ matrix.settings.target == 'armv7-unknown-linux-gnueabihf' }} | |
| uses: docker/setup-buildx-action@v3 | |
| with: | |
| platforms: linux/arm/v7 | |
| - uses: goto-bus-stop/setup-zig@v2 | |
| if: ${{ matrix.settings.target == 'armv7-unknown-linux-gnueabihf' }} | |
| with: | |
| version: 0.13.0 | |
| - name: Set env | |
| if: matrix.settings.host == 'windows-latest' | |
| run: echo "C:\\msys64\\mingw64\\bin" >> $GITHUB_PATH | |
| shell: bash | |
| - name: Setup nasm | |
| uses: ilammy/setup-nasm@v1 | |
| if: matrix.settings.host == 'windows-latest' | |
| - name: Install Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| targets: ${{ matrix.settings.target }} | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Setup toolchain | |
| run: ${{ matrix.settings.setup }} | |
| if: ${{ matrix.settings.setup }} | |
| - name: 'Build' | |
| if: ${{ !matrix.settings.docker }} | |
| run: ${{ matrix.settings.build }} | |
| - name: Build in docker | |
| uses: addnab/docker-run-action@v3 | |
| if: ${{ matrix.settings.docker }} | |
| with: | |
| image: ${{ matrix.settings.docker }} | |
| options: --user 0:0 -v ${{ github.workspace }}/.cargo-cache/git/db:/usr/local/cargo/git/db -v ${{ github.workspace }}/.cargo/registry/cache:/usr/local/cargo/registry/cache -v ${{ github.workspace }}/.cargo/registry/index:/usr/local/cargo/registry/index -v ${{ github.workspace }}:/build -w /build | |
| run: ${{ matrix.settings.build }} | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: bindings-${{ matrix.settings.target }} | |
| path: ./${{ matrix.settings.target }}/${{ env.APP_NAME }}.*.node | |
| if-no-files-found: error | |
| test-macOS-windows-binding: | |
| name: Test bindings on ${{ matrix.settings.target }} - node@${{ matrix.node }} | |
| needs: | |
| - host-build | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| settings: | |
| - host: macos-latest | |
| target: 'x86_64-apple-darwin' | |
| - host: macos-latest | |
| target: 'aarch64-apple-darwin' | |
| - host: windows-latest | |
| target: 'x86_64-pc-windows-msvc' | |
| node: [18, 20, 22] | |
| runs-on: ${{ matrix.settings.host }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup node | |
| uses: actions/setup-node@v4 | |
| if: startsWith(matrix.settings.target, 'x86_64') | |
| with: | |
| node-version: ${{ matrix.node }} | |
| cache: npm | |
| architecture: 'x64' | |
| - name: Setup node | |
| uses: actions/setup-node@v4 | |
| if: startsWith(matrix.settings.target, 'aarch64') | |
| with: | |
| node-version: ${{ matrix.node }} | |
| cache: npm | |
| architecture: 'arm64' | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: bindings-${{ matrix.settings.target }} | |
| path: . | |
| - name: Test bindings | |
| run: npm run test | |
| test-linux-x64-gnu-binding: | |
| name: Test bindings on Linux-x64-gnu - node@${{ matrix.node }} | |
| needs: | |
| - cross-build | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: [18, 20, 22] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node }} | |
| cache: npm | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: bindings-x86_64-unknown-linux-gnu | |
| path: . | |
| - name: List packages | |
| run: ls -R . | |
| shell: bash | |
| - name: Test bindings | |
| run: npm run test | |
| test-linux-x64-musl-binding: | |
| name: Test bindings on x86_64-unknown-linux-musl - node@${{ matrix.node }} | |
| needs: | |
| - cross-build | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: [18, 20, 22] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node }} | |
| cache: npm | |
| - name: Install dependencies | |
| run: | | |
| npm config set supportedArchitectures.libc "musl" | |
| npm ci | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: bindings-x86_64-unknown-linux-musl | |
| path: . | |
| - name: List packages | |
| run: ls -R . | |
| shell: bash | |
| - name: Test bindings | |
| run: npm run test | |
| test-linux-aarch64-gnu-binding: | |
| name: Test bindings on aarch64-unknown-linux-gnu - node@${{ matrix.node }} | |
| needs: | |
| - cross-build | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: [20, 22] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: bindings-aarch64-unknown-linux-gnu | |
| path: . | |
| - name: List packages | |
| run: ls -R . | |
| shell: bash | |
| - name: Install dependencies | |
| run: | | |
| npm config set supportedArchitectures.cpu "arm64" | |
| npm config set supportedArchitectures.libc "glibc" | |
| npm ci | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| with: | |
| platforms: arm64 | |
| - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | |
| - name: Setup and run tests | |
| uses: addnab/docker-run-action@v3 | |
| with: | |
| image: node:${{ matrix.node }}-slim | |
| options: '--platform linux/arm64 -v ${{ github.workspace }}:/app -w /app' | |
| run: | | |
| set -e && \ | |
| npm run test | |
| test-linux-aarch64-musl-binding: | |
| name: Test bindings on aarch64-unknown-linux-musl - node@lts | |
| needs: | |
| - cross-build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: bindings-aarch64-unknown-linux-musl | |
| path: . | |
| - name: List packages | |
| run: ls -R . | |
| shell: bash | |
| - name: Install dependencies | |
| run: | | |
| npm config set supportedArchitectures.cpu "arm64" | |
| npm config set supportedArchitectures.libc "musl" | |
| npm ci | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| with: | |
| platforms: arm64 | |
| - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | |
| - name: Setup and run tests | |
| uses: addnab/docker-run-action@v3 | |
| with: | |
| image: node:lts-alpine | |
| options: '--platform linux/arm64 -v ${{ github.workspace }}:/app -w /app' | |
| run: | | |
| set -e | |
| npm run test | |
| test-linux-arm-gnueabihf-binding: | |
| name: Test bindings on armv7-unknown-linux-gnueabihf - node@${{ matrix.node }} | |
| needs: | |
| - cross-build | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: [18, 20, 22] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: bindings-armv7-unknown-linux-gnueabihf | |
| path: . | |
| - name: List packages | |
| run: ls -R . | |
| shell: bash | |
| - name: Install dependencies | |
| run: | | |
| npm config set supportedArchitectures.cpu "arm" | |
| npm ci | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| with: | |
| platforms: arm | |
| - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | |
| - name: Setup and run tests | |
| uses: addnab/docker-run-action@v3 | |
| with: | |
| image: node:${{ matrix.node }}-bullseye-slim | |
| options: '--platform linux/arm/v7 -v ${{ github.workspace }}:/app -w /app' | |
| run: | | |
| set -e && \ | |
| npm run test | |
| publish: | |
| name: Publish | |
| runs-on: ubuntu-latest | |
| needs: | |
| - test-linux-x64-gnu-binding | |
| - test-linux-x64-musl-binding | |
| - test-linux-aarch64-gnu-binding | |
| - test-linux-aarch64-musl-binding | |
| - test-linux-arm-gnueabihf-binding | |
| - test-macOS-windows-binding | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Install Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: artifacts | |
| - name: Move artifacts | |
| run: npm run artifacts | |
| - name: List packages | |
| run: ls -R npm | |
| shell: bash | |
| - name: Publish | |
| run: | | |
| if git log -1 --pretty=%B | grep "^[0-9]\+\.[0-9]\+\.[0-9]\+$"; | |
| then | |
| echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc | |
| npm publish --access public | |
| elif git log -1 --pretty=%B | grep "^[0-9]\+\.[0-9]\+\.[0-9]\+"; | |
| then | |
| echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc | |
| npm publish --tag next --access public | |
| else | |
| echo "Not a release, skipping publish" | |
| fi | |
| env: | |
| GITHUB_TOKEN: ${{ github.token }} | |
| NPM_TOKEN: ${{ secrets.NPM_TOKEN }} |