Merge pull request #84 from zhom/dependabot/npm_and_yarn/frontend-dep… #385
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
# Installs Rust and checks formatting + linting | |
name: Lint Rust | |
on: | |
workflow_call: | |
push: | |
branches: | |
- main | |
tags: | |
- "v*" | |
pull_request: | |
paths-ignore: | |
- "src/**" | |
- "nodecar/**" | |
- "package.json" | |
- "pnpm-lock.yaml" | |
- "yarn.lock" | |
- "README.md" | |
- ".github/workflows/lint-js.yml" | |
- ".github/workflows/osv.yml" | |
- "next.config.js" | |
- "tailwind.config.js" | |
- "tsconfig.json" | |
- "biome.json" | |
permissions: | |
contents: read | |
jobs: | |
build: | |
strategy: | |
matrix: | |
os: [macos-latest, ubuntu-22.04] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Disable git core.autocrlf on Windows | |
if: matrix.os == 'windows-latest' | |
run: git config --global core.autocrlf false | |
- name: Checkout repository code | |
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 #v5.0.0 | |
- name: Set up pnpm package manager | |
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda #v4.1.0 | |
- name: Set up Node.js | |
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 #v4.4.0 | |
with: | |
node-version-file: .node-version | |
cache: "pnpm" | |
- name: Install Rust toolchain | |
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 #master | |
with: | |
toolchain: stable | |
components: rustfmt, clippy | |
- name: Install cargo-audit | |
run: cargo install cargo-audit | |
- name: Install banderole | |
run: cargo install banderole | |
- name: Install dependencies (Ubuntu only) | |
if: matrix.os == 'ubuntu-22.04' | |
run: | | |
sudo apt-get update | |
sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev | |
- name: Install frontend dependencies | |
run: pnpm install --frozen-lockfile | |
- name: Build nodecar binary | |
shell: bash | |
working-directory: ./nodecar | |
run: | | |
if [[ "${{ matrix.os }}" == "ubuntu-22.04" ]]; then | |
pnpm run build:linux-x64 | |
elif [[ "${{ matrix.os }}" == "macos-latest" ]]; then | |
pnpm run build:mac-aarch64 | |
elif [[ "${{ matrix.os }}" == "windows-latest" ]]; then | |
pnpm run build:win-x64 | |
fi | |
# TODO: replace with an integration test that fetches everything from rust | |
# - name: Download Camoufox for testing | |
# run: npx camoufox-js fetch | |
# continue-on-error: true | |
- name: Copy nodecar binary to Tauri binaries | |
shell: bash | |
run: | | |
mkdir -p src-tauri/binaries | |
if [[ "${{ matrix.os }}" == "ubuntu-22.04" ]]; then | |
cp nodecar/nodecar-bin src-tauri/binaries/nodecar-x86_64-unknown-linux-gnu | |
elif [[ "${{ matrix.os }}" == "macos-latest" ]]; then | |
cp nodecar/nodecar-bin src-tauri/binaries/nodecar-aarch64-apple-darwin | |
elif [[ "${{ matrix.os }}" == "windows-latest" ]]; then | |
cp nodecar/nodecar-bin.exe src-tauri/binaries/nodecar-x86_64-pc-windows-msvc.exe | |
fi | |
- name: Create empty 'dist' directory | |
run: mkdir dist | |
- name: Run rustfmt check | |
run: cargo fmt --all -- --check | |
working-directory: src-tauri | |
- name: Run clippy check and deny warnings | |
run: cargo clippy --all-targets --all-features -- -D warnings -D clippy::all | |
working-directory: src-tauri | |
- name: Run Rust tests | |
run: cargo test | |
working-directory: src-tauri | |
- name: Run cargo audit security check | |
run: cargo audit | |
working-directory: src-tauri |