feat: add importRoomKeys for 0.9.0 API #3
Workflow file for this run
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: Release Crypto-Node.js | |
| # | |
| # This workflow releases the crypto-bindings for nodejs | |
| # | |
| # It is triggered when seeing a tag prefixed matching `matrix-sdk-crypto-nodejs-v[0-9]+.*`, | |
| # which then build the native bindings for linux, mac and windows via the CI and uploads | |
| # them to the corresponding Github Release tag. Once they are finished, this workflow will | |
| # package the npm tar.gz and uploads that to the Github Release tag as well, before publishing | |
| # it to npmjs.com automatically. | |
| # | |
| # The usual way to trigger this is by manually triggering the `prep-release` | |
| # workflow. See its documentation for instructions how to use it. | |
| env: | |
| CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: 'aarch64-linux-gnu-gcc' | |
| CARGO_TARGET_I686_UNKNOWN_LINUX_GNU_LINKER: 'i686-linux-gnu-gcc' | |
| CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_LINKER: 'arm-linux-gnueabihf-gcc' | |
| CARGO_TARGET_S390X_UNKNOWN_LINUX_GNU_LINKER: 's390x-linux-gnu-gcc' | |
| on: | |
| push: | |
| tags: | |
| - v[0-9]+.* | |
| workflow_call: | |
| inputs: | |
| tag: | |
| description: "The tag to build with" | |
| required: true | |
| type: string | |
| workflow_dispatch: | |
| inputs: | |
| tag: | |
| description: "The tag to build with" | |
| required: true | |
| type: string | |
| jobs: | |
| upload-assets: | |
| name: "Upload prebuilt libraries" | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # ----------------------------------- Linux | |
| # Use Ubuntu LTS-1 for broader glibc compatibility. | |
| - target: x86_64-unknown-linux-gnu | |
| os: ubuntu-22.04 | |
| - target: i686-unknown-linux-gnu | |
| apt_install: gcc-i686-linux-gnu g++-i686-linux-gnu | |
| os: ubuntu-22.04 | |
| - target: aarch64-unknown-linux-gnu | |
| os: ubuntu-22.04 | |
| apt_install: gcc-aarch64-linux-gnu g++-aarch64-linux-gnu | |
| - target: arm-unknown-linux-gnueabihf | |
| os: ubuntu-22.04 | |
| apt_install: gcc-arm-linux-gnueabihf | |
| - target: x86_64-unknown-linux-musl | |
| os: ubuntu-22.04 | |
| apt_install: musl-tools | |
| - target: s390x-unknown-linux-gnu | |
| os: ubuntu-22.04 | |
| apt_install: gcc-s390x-linux-gnu g++-s390x-linux-gnu | |
| # ----------------------------------- macOS | |
| - target: aarch64-apple-darwin | |
| os: macos-latest | |
| - target: x86_64-apple-darwin | |
| os: macos-latest | |
| # ----------------------------------- Windows | |
| - target: x86_64-pc-windows-msvc | |
| os: windows-latest | |
| - target: i686-pc-windows-msvc | |
| os: windows-latest | |
| - target: aarch64-pc-windows-msvc | |
| os: windows-latest | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| # use the given tag | |
| - uses: actions/checkout@v3 | |
| name: "Checking out ${{ inputs.tag }}" | |
| if: "${{ inputs.tag }}" | |
| with: | |
| ref: ${{ inputs.tag }} | |
| # use the default | |
| - uses: actions/checkout@v3 | |
| if: "${{ !inputs.tag }}" | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@nightly | |
| with: | |
| targets: ${{ matrix.target }} | |
| - name: Install Node.js | |
| uses: actions/setup-node@v3 | |
| - name: Load cache | |
| uses: Swatinem/rust-cache@v2 | |
| - if: ${{ matrix.apt_install }} | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y ${{ matrix.apt_install }} | |
| - name: Build lib | |
| run: | | |
| npm install --ignore-scripts | |
| npx napi build --platform --release --strip --target ${{ matrix.target }} | |
| - name: Upload artifacts to release | |
| uses: softprops/action-gh-release@v1 | |
| with: | |
| draft: true | |
| files: "*.node" | |
| publish-nodejs-package: | |
| name: "Package nodejs package" | |
| runs-on: ubuntu-latest | |
| needs: | |
| - upload-assets | |
| permissions: | |
| contents: write | |
| id-token: write | |
| steps: | |
| # use the given tag | |
| - uses: actions/checkout@v3 | |
| name: "Checking out ${{ inputs.tag }}" | |
| if: "${{ inputs.tag }}" | |
| with: | |
| ref: ${{ inputs.tag }} | |
| # use the default | |
| - uses: actions/checkout@v3 | |
| if: "${{ !inputs.tag }}" | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@nightly | |
| - name: Install Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| registry-url: https://registry.npmjs.org/ | |
| scope: '@ixo' | |
| - name: Upgrade npm for Trusted Publishing | |
| run: npm i -g npm@latest | |
| - name: Build lib | |
| run: | | |
| npm install --ignore-scripts | |
| npm run release-build | |
| npm pack | |
| - name: Upload npm package to release | |
| uses: softprops/action-gh-release@v1 | |
| with: | |
| draft: true | |
| files: "*.tgz" | |
| - name: Publish to npmjs.com | |
| run: npm publish --access public --provenance | |
| env: | |
| NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} |