123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400 |
- # Copyright 2019-2023 Tauri Programme within The Commons Conservancy
- # SPDX-License-Identifier: Apache-2.0
- # SPDX-License-Identifier: MIT
- name: publish `@tauri-apps/cli`
- env:
- DEBUG: napi:*
- APP_NAME: cli
- MACOSX_DEPLOYMENT_TARGET: '10.13'
- on:
- workflow_dispatch:
- inputs:
- releaseId:
- description: 'ID of the `@tauri-apps/cli` release'
- required: true
- repository_dispatch:
- types: [publish-js-cli]
- defaults:
- run:
- working-directory: tooling/cli/node/
- jobs:
- build:
- strategy:
- fail-fast: false
- matrix:
- settings:
- - host: macos-latest
- target: x86_64-apple-darwin
- architecture: x64
- build: |
- yarn build:release --target=x86_64-apple-darwin
- strip -x *.node
- - host: windows-latest
- build: yarn build:release
- target: x86_64-pc-windows-msvc
- architecture: x64
- - host: windows-latest
- build: yarn build:release --target i686-pc-windows-msvc
- target: i686-pc-windows-msvc
- architecture: x64
- - host: windows-latest
- architecture: x64
- target: aarch64-pc-windows-msvc
- build: yarn build:release --target aarch64-pc-windows-msvc --features native-tls,native-tls-vendored --cargo-flags="--no-default-features"
- - host: ubuntu-20.04
- target: x86_64-unknown-linux-gnu
- docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian
- build: |
- cd tooling/cli/node
- yarn build:release --target x86_64-unknown-linux-gnu
- strip *.node
- - host: ubuntu-20.04
- target: x86_64-unknown-linux-musl
- docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
- build: |
- cd tooling/cli/node
- yarn build:release
- strip *.node
- - host: macos-latest
- target: aarch64-apple-darwin
- build: |
- yarn build:release --target=aarch64-apple-darwin
- strip -x *.node
- - host: ubuntu-20.04
- target: aarch64-unknown-linux-gnu
- docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64
- build: |
- cd tooling/cli/node
- yarn build:release --target aarch64-unknown-linux-gnu
- aarch64-unknown-linux-gnu-strip *.node
- - host: ubuntu-20.04
- architecture: x64
- target: armv7-unknown-linux-gnueabihf
- setup: |
- sudo apt-get update
- sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf -y
- build: |
- yarn build:release --target=armv7-unknown-linux-gnueabihf
- arm-linux-gnueabihf-strip *.node
- - host: ubuntu-20.04
- architecture: x64
- target: aarch64-unknown-linux-musl
- docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
- build: |
- cd tooling/cli/node
- rustup target add aarch64-unknown-linux-musl
- yarn build:release --target aarch64-unknown-linux-musl
- /aarch64-linux-musl-cross/bin/aarch64-linux-musl-strip *.node
- name: stable - ${{ matrix.settings.target }} - node@16
- runs-on: ${{ matrix.settings.host }}
- steps:
- - uses: actions/checkout@v3
- - name: Setup node
- uses: actions/setup-node@v3
- if: ${{ !matrix.settings.docker }}
- with:
- node-version: 16
- check-latest: true
- cache: yarn
- cache-dependency-path: 'tooling/cli/node/yarn.lock'
- architecture: ${{ matrix.settings.architecture }}
- - name: Install
- uses: actions-rs/toolchain@v1
- if: ${{ !matrix.settings.docker }}
- with:
- profile: minimal
- override: true
- toolchain: stable
- target: ${{ matrix.settings.target }}
- - uses: Swatinem/rust-cache@v1
- with:
- key: ${{ matrix.settings.target }}
- working-directory: 'tooling/cli/'
- if: ${{ matrix.settings.docker }}
- - name: Setup toolchain
- run: ${{ matrix.settings.setup }}
- if: ${{ matrix.settings.setup }}
- shell: bash
- - name: Install dependencies
- run: yarn install --ignore-scripts --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000
- - 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:/root/.cargo/git/db -v ${{ github.workspace }}/.cargo/registry/cache:/root/.cargo/registry/cache -v ${{ github.workspace }}/.cargo/registry/index:/root/.cargo/registry/index -v ${{ github.workspace }}:/build -w /build
- run: ${{ matrix.settings.build }}
- - name: Build
- run: ${{ matrix.settings.build }}
- if: ${{ !matrix.settings.docker }}
- shell: bash
- - name: Upload artifact
- uses: actions/upload-artifact@v3
- with:
- name: bindings-${{ matrix.settings.target }}
- path: tooling/cli/node/${{ env.APP_NAME }}.*.node
- if-no-files-found: error
- # build-freebsd:
- # runs-on: macos-10.15
- # name: Build FreeBSD
- # steps:
- # - uses: actions/checkout@v3
- # - name: Build
- # id: build
- # uses: vmactions/freebsd-vm@v0.1.6
- # env:
- # DEBUG: napi:*
- # RUSTUP_HOME: /usr/local/rustup
- # CARGO_HOME: /usr/local/cargo
- # RUSTUP_IO_THREADS: 1
- # with:
- # envs: DEBUG RUSTUP_HOME CARGO_HOME RUSTUP_IO_THREADS
- # usesh: true
- # mem: 3000
- # prepare: |
- # pkg install -y curl node16 python2
- # curl -qL https://www.npmjs.com/install.sh | sh
- # npm install -g yarn
- # curl https://sh.rustup.rs -sSf --output rustup.sh
- # sh rustup.sh -y --profile minimal --default-toolchain stable
- # export PATH="/usr/local/cargo/bin:$PATH"
- # echo "~~~~ rustc --version ~~~~"
- # rustc --version
- # echo "~~~~ node -v ~~~~"
- # node -v
- # echo "~~~~ yarn --version ~~~~"
- # yarn --version
- # run: |
- # export PATH="/usr/local/cargo/bin:$PATH"
- # pwd
- # ls -lah
- # whoami
- # env
- # freebsd-version
- # cd ./tooling/cli/node/
- # yarn install --ignore-scripts --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000
- # yarn build:release
- # strip -x *.node
- # rm -rf node_modules
- # rm -rf ../target
- # - name: Upload artifact
- # uses: actions/upload-artifact@v3
- # with:
- # name: bindings-freebsd
- # path: tooling/cli/node/${{ env.APP_NAME }}.*.node
- # if-no-files-found: error
- test-macOS-windows-binding:
- name: Test bindings on ${{ matrix.settings.target }} - node@${{ matrix.node }}
- needs:
- - build
- strategy:
- fail-fast: false
- matrix:
- settings:
- - host: macos-latest
- target: 'aarch64-apple-darwin'
- - host: windows-latest
- target: x86_64-pc-windows-msvc
- node:
- - '16'
- - '18'
- - '20'
- runs-on: ${{ matrix.settings.host }}
- steps:
- - uses: actions/checkout@v3
- - name: Setup node
- uses: actions/setup-node@v3
- with:
- node-version: ${{ matrix.node }}
- check-latest: true
- cache: yarn
- cache-dependency-path: 'tooling/cli/node/yarn.lock'
- - name: Install dependencies
- run: yarn install --ignore-scripts --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000
- - name: Download artifacts
- uses: actions/download-artifact@v3
- with:
- name: bindings-${{ matrix.settings.target }}
- path: 'tooling/cli/node/'
- - name: List packages
- run: ls -R .
- shell: bash
- - name: Test bindings
- run: yarn test
- test-linux-x64-gnu-binding:
- name: Test bindings on Linux-x64-gnu - node@${{ matrix.node }}
- needs:
- - build
- strategy:
- fail-fast: false
- matrix:
- node:
- - '16'
- - '18'
- - '20'
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- - name: Setup node
- uses: actions/setup-node@v3
- with:
- node-version: ${{ matrix.node }}
- check-latest: true
- cache: yarn
- cache-dependency-path: 'tooling/cli/node/yarn.lock'
- - name: Install dependencies
- run: yarn install --ignore-scripts --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000
- - name: Download artifacts
- uses: actions/download-artifact@v3
- with:
- name: bindings-x86_64-unknown-linux-gnu
- path: 'tooling/cli/node/'
- - name: List packages
- run: ls -R .
- shell: bash
- - name: install system dependencies
- run: |
- sudo apt-get update
- sudo apt-get install -y webkit2gtk-4.0 libayatana-appindicator3-dev
- - name: Test bindings
- run: yarn test
- test-linux-x64-musl-binding:
- name: Test bindings on x86_64-unknown-linux-musl - node@${{ matrix.node }}
- needs:
- - build
- strategy:
- fail-fast: false
- matrix:
- node:
- - '16'
- - '18'
- - '20'
- runs-on: ubuntu-latest
- container:
- image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
- steps:
- - uses: actions/checkout@v3
- - name: Setup node
- uses: actions/setup-node@v3
- with:
- node-version: ${{ matrix.node }}
- check-latest: true
- cache: yarn
- cache-dependency-path: 'tooling/cli/node/yarn.lock'
- - name: Install dependencies
- run: yarn install --ignore-scripts --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000
- - name: Download artifacts
- uses: actions/download-artifact@v3
- with:
- name: bindings-x86_64-unknown-linux-musl
- path: 'tooling/cli/node/'
- - name: List packages
- run: ls -R .
- shell: bash
- - name: Setup and run tests
- run: |
- yarn tauri --help
- ls -la
- #- name: Setup and run tests
- # run: |
- # rustup install stable
- # rustup default stable
- # yarn test
- # ls -la
- test-linux-arm-bindings:
- name: Test bindings on ${{ matrix.image }} - node@${{ matrix.node }}
- needs:
- - build
- strategy:
- fail-fast: false
- matrix:
- node:
- - '16'
- - '18'
- - '20'
- image:
- - ghcr.io/napi-rs/napi-rs/nodejs:aarch64-16
- - ghcr.io/napi-rs/napi-rs/nodejs:armhf-16
- runs-on: ubuntu-latest
- steps:
- - run: docker run --rm --privileged multiarch/qemu-user-static:register --reset
- working-directory: ${{ github.workspace }}
- - uses: actions/checkout@v3
- - name: List packages
- run: ls -R .
- shell: bash
- - name: Install dependencies
- run: yarn install --ignore-scripts --ignore-platform --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000
- - name: Download aarch64-gnu artifacts
- uses: actions/download-artifact@v3
- with:
- name: bindings-aarch64-unknown-linux-gnu
- path: 'tooling/cli/node/'
- - name: Download armv7-gnueabihf artifacts
- uses: actions/download-artifact@v3
- with:
- name: bindings-armv7-unknown-linux-gnueabihf
- path: 'tooling/cli/node/'
- # TODO: actually run test, blocked by https://github.com/rust-lang/cargo/issues/8719
- - uses: addnab/docker-run-action@v3
- with:
- image: ${{ matrix.image }}
- options: '-v ${{ github.workspace }}:/build -w /build -e RUSTUP_HOME=/usr/local/rustup -e CARGO_HOME=/usr/local/cargo'
- shell: bash
- run: |
- set -e
- export PATH=/usr/local/cargo/bin/:/usr/local/fnm:$PATH
- apt-get update
- DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get install --no-install-recommends -y unzip webkit2gtk-4.0 libayatana-appindicator3-dev
- bash
- curl https://sh.rustup.rs -sSf | bash -s -- -y
- curl -fsSL https://fnm.vercel.app/install | bash -s -- --install-dir "/usr/local/fnm" --skip-shell
- eval "$(fnm env --use-on-cd)"
- fnm install ${{ matrix.node }}
- fnm use ${{ matrix.node }}
- cd tooling/cli/node
- yarn tauri --help
- ls -la
- publish:
- name: Publish
- runs-on: ubuntu-latest
- needs:
- #- build-freebsd
- - test-macOS-windows-binding
- - test-linux-x64-gnu-binding
- - test-linux-x64-musl-binding
- #- test-linux-arm-bindings
- steps:
- - uses: actions/checkout@v3
- - name: Setup node
- uses: actions/setup-node@v3
- with:
- node-version: 20
- check-latest: true
- cache: yarn
- cache-dependency-path: 'tooling/cli/node/yarn.lock'
- - name: Install dependencies
- run: yarn install --ignore-scripts --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000
- - name: Download all artifacts
- uses: actions/download-artifact@v3
- with:
- path: tooling/cli/node/artifacts
- - name: Move artifacts
- run: yarn artifacts
- - name: List packages
- run: ls -R ./npm
- shell: bash
- - name: Publish
- run: |
- echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
- npm publish
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- NPM_TOKEN: ${{ secrets.ORG_NPM_TOKEN }}
- RELEASE_ID: ${{ github.event.client_payload.releaseId || github.event.inputs.releaseId }}
|