Skip to content

代码优化

代码优化 #267

name: CrossPlatform
on:
push:
branches: [n]
pull_request:
branches: [n]
jobs:
unit-testing:
name: Unit testing
strategy:
matrix:
include:
# Linux targets
- os: ubuntu-latest
target: x86_64-unknown-linux-musl
# Windows targets
- os: windows-latest
target: x86_64-pc-windows-msvc
- os: windows-latest
target: i686-pc-windows-msvc
# macOS targets
- os: macos-14
target: aarch64-apple-darwin
- os: macos-13
target: x86_64-apple-darwin
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install Rust
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
override: true
target: ${{ matrix.target }}
- name: Run tests
run: |
node -v
cargo install just
just setup
just ready
just ci-e2e
env:
RUST_BACKTRACE: full
# build-release:
# name: Build release
# needs: unit-testing
# strategy:
# matrix:
# include:
# # Linux targets
# - os: ubuntu-latest
# target: x86_64-unknown-linux-musl
# # Windows targets
# # - os: windows-latest
# # target: x86_64-pc-windows-msvc
# # - os: windows-latest
# # target: i686-pc-windows-msvc
# # macOS targets
# - os: macos-14
# target: aarch64-apple-darwin
# - os: macos-13
# target: x86_64-apple-darwin
# fail-fast: false
# runs-on: ${{ matrix.os }}
# steps:
# - name: Checkout code
# uses: actions/checkout@v3
# - name: Install Rust
# uses: actions-rust-lang/setup-rust-toolchain@v1
# with:
# override: true
# target: ${{ matrix.target }}
# - name: Build binary
# uses: actions-rs/cargo@v1
# with:
# command: build
# args: --verbose --release --target ${{ matrix.target }}
# - name: Display binary size
# shell: bash
# run: |
# ls -l target/${{ matrix.target }}/release/*
# du -h target/${{ matrix.target }}/release/*
# - name: Strip binary (Linux and macOS only)
# if: matrix.os != 'windows-latest'
# run: |
# for file in snm node npm npx pnpm pnpx yarn; do
# strip "target/${{ matrix.target }}/release/$file"
# done
# - name: Create Archive
# shell: bash
# run: |
# mkdir archive
# cp LICENSE README.md target/${{ matrix.target }}/release/{node,npm,npx,pnpm,pnpx,snm,yarn} archive/
# tar -czf ${{ matrix.target }}.tar.gz -C archive LICENSE README.md node npm npx pnpm pnpx snm yarn
# ls -l
# - name: Upload Artifacts tar.gz
# uses: actions/upload-artifact@v4
# with:
# name: ${{ matrix.target }}
# path: ${{ matrix.target }}.tar.gz
# e2e-testing:
# name: E2E testing
# needs: build-release
# strategy:
# matrix:
# include:
# # Linux targets
# - os: ubuntu-latest
# target: x86_64-unknown-linux-musl
# # Windows targets
# - os: windows-latest
# target: x86_64-pc-windows-msvc
# - os: windows-latest
# target: i686-pc-windows-msvc
# # macOS targets
# - os: macos-14
# target: aarch64-apple-darwin
# - os: macos-13
# target: x86_64-apple-darwin
# fail-fast: false
# runs-on: ${{ matrix.os }}
# steps:
# - name: Checkout code
# uses: actions/checkout@v3
# - name: Install Rust
# uses: actions-rust-lang/setup-rust-toolchain@v1
# with:
# override: true
# target: ${{ matrix.target }}
# - name: Download artifacts
# uses: actions/download-artifact@v4
# with:
# name: ${{ matrix.target }}
# path: .
# - name: Tar downloaded files
# shell: bash
# run: |
# tar -xvf ${{ matrix.target }}.tar.gz -C e2e/tests
# cd e2e/tests
# ls -R
# - name: e2e tests
# shell: bash
# run: |
# cargo test --package e2e -- --nocapture
# coverage:
# name: Collect test coverage
# runs-on: ubuntu-latest
# env:
# CARGO_TERM_COLOR: always
# steps:
# - uses: actions/checkout@v4
# - name: Install Rust
# run: rustup update stable
# - name: Install cargo-llvm-cov
# uses: taiki-e/install-action@cargo-llvm-cov
# - name: Generate code coverage
# run: cargo llvm-cov --all-features --workspace --lcov --output-path lcov.info
# - name: Upload coverage to Codecov
# uses: codecov/codecov-action@v3
# with:
# token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos
# files: lcov.info
# fail_ci_if_error: true