handle discovery of split worktrees #3453
Workflow file for this run
This file contains 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 | |
env: | |
CARGO_TERM_COLOR: always | |
CLICOLOR: 1 | |
on: | |
push: | |
branches: [ main ] | |
tags-ignore: [ '*' ] | |
paths: | |
- '.github/**' | |
- 'ci/**' | |
- 'etc/**' | |
- 'src/**' | |
- 'tests/**' | |
- 'cargo-*/**' | |
- 'gix*/**' | |
- '*.toml' | |
- Makefile | |
pull_request: | |
branches: [ main ] | |
paths: | |
- '.github/**' | |
- 'ci/**' | |
- 'etc/**' | |
- 'src/**' | |
- 'tests/**' | |
- 'cargo-*/**' | |
- 'gix*/**' | |
- '*.toml' | |
- Makefile | |
jobs: | |
pure-rust-build: | |
runs-on: ubuntu-latest | |
container: debian:buster | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Prerequisites | |
run: apt-get update && apt-get install --no-install-recommends -y ca-certificates curl gcc libc-dev # gcc is required as OS abstraction | |
- name: install Rust via Rustup | |
run: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal; | |
- uses: Swatinem/rust-cache@v2 | |
- run: /github/home/.cargo/bin/cargo build --no-default-features --features max-pure | |
test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@v2 | |
- name: Setup dependencies | |
run: | |
sudo apt-get install tree | |
- uses: extractions/setup-just@v1 | |
- name: test | |
env: | |
CI: true | |
GITOXIDE_TEST_IGNORE_ARCHIVES: 1 | |
run: just ci-test | |
test-fast: | |
strategy: | |
matrix: | |
os: | |
- windows-latest | |
- macos-latest | |
- ubuntu-latest | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@v2 | |
- name: Setup dependencies (macos) | |
if: startsWith(matrix.os, 'macos') | |
run: | |
brew install tree openssl gnu-sed | |
- name: "cargo check default features" | |
if: startsWith(matrix.os, 'windows') | |
run: cargo check --all --bins --examples | |
- run: git lfs fetch && git lfs checkout | |
- uses: taiki-e/install-action@v1 | |
with: | |
tool: nextest | |
version: 0.9 | |
- name: "Test (nextest)" | |
run: cargo nextest run --all --no-fail-fast | |
test-32bit: | |
runs-on: ubuntu-latest | |
env: | |
TARGET: i686-unknown-linux-gnu | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@v2 | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: stable | |
targets: ${{ env.TARGET }} | |
- uses: taiki-e/install-action@v1 | |
with: | |
tool: cross | |
- name: "Test (unit)" | |
# run high-level unit tests that exercise a lot of code while being pure Rust to ease building test binaries. | |
# TODO: figure out why `git` doesn't pick up environment configuration so build scripts fail when using `-p gix`. | |
run: cross test -p gix-hashtable --target ${{ env.TARGET }} | |
installation: | |
strategy: | |
matrix: | |
build: [ win-msvc, win-gnu, win32-msvc, win32-gnu ] | |
include: | |
- build: win-msvc | |
os: windows-latest | |
rust: stable | |
target: x86_64-pc-windows-msvc | |
- build: win-gnu | |
os: windows-latest | |
rust: stable-x86_64-gnu | |
target: x86_64-pc-windows-gnu | |
- build: win32-msvc | |
os: windows-latest | |
rust: stable | |
target: i686-pc-windows-msvc | |
- build: win32-gnu | |
os: windows-latest | |
rust: stable | |
target: i686-pc-windows-gnu | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.rust }} | |
targets: ${{ matrix.target }} | |
- uses: Swatinem/rust-cache@v2 | |
- uses: msys2/setup-msys2@v2 | |
with: | |
msystem: MINGW${{ startsWith(matrix.target, 'i686-') && '32' || '64' }} | |
pacboy: cc:p | |
path-type: inherit | |
- name: "Install prerequisites" | |
run: vcpkg install zlib:x64-windows-static-md | |
- name: "Installation from crates.io: gitoxide" | |
run: cargo +${{ matrix.rust }} install --target ${{ matrix.target }} --target-dir install-artifacts --debug --force gitoxide | |
shell: msys2 {0} | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: stable | |
components: clippy,rustfmt | |
- uses: extractions/setup-just@v1 | |
- name: Run cargo clippy | |
run: just clippy -D warnings | |
- name: Run cargo doc | |
run: just doc | |
- name: Run cargo fmt | |
run: cargo fmt --all -- --check | |
- name: Run cargo diet | |
run: | | |
curl -LSfs https://raw.githubusercontent.com/the-lean-crate/cargo-diet/master/ci/install.sh | \ | |
sh -s -- --git the-lean-crate/cargo-diet --target x86_64-unknown-linux-musl --tag v1.2.4 | |
# Let's not fail CI for this, it will fail locally often enough, and a crate a little bigger | |
# than allows is no problem either if it comes to that. | |
just check-size || true | |
cargo-deny: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
checks: | |
- advisories | |
- bans licenses sources | |
# Prevent sudden announcement of a new advisory from failing ci: | |
continue-on-error: ${{ matrix.checks == 'advisories' }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: EmbarkStudios/cargo-deny-action@v1 | |
with: | |
command: check ${{ matrix.checks }} | |
wasm: | |
name: WebAssembly | |
runs-on: ubuntu-latest | |
continue-on-error: true | |
strategy: | |
matrix: | |
target: [ wasm32-unknown-unknown, wasm32-wasi ] | |
steps: | |
- uses: actions/checkout@master | |
- name: Install Rust | |
run: rustup update stable && rustup default stable && rustup target add ${{ matrix.target }} | |
- uses: Swatinem/rust-cache@v2 | |
- run: set +x; for name in gix-actor gix-attributes gix-bitmap gix-chunk gix-command gix-commitgraph gix-date gix-glob gix-hash gix-hashtable gix-mailmap gix-object gix-packetline gix-path gix-quote gix-refspec gix-revision gix-traverse gix-validate; do (cd $name && cargo build --target ${{ matrix.target }}); done | |
name: crates without feature toggles | |
- run: set +x; for feature in progress fs-walkdir-parallel parallel io-pipe crc32 zlib zlib-rust-backend fast-sha1 rustsha1 cache-efficiency-debug; do (cd gix-features && cargo build --features $feature --target ${{ matrix.target }}); done | |
name: features of gix-features | |
- run: set +x; for name in gix-diff gix-pack; do (cd $name && cargo build --features wasm --target ${{ matrix.target }}); done | |
name: crates with 'wasm' feature | |
- run: cd gix-pack && cargo build --all-features --target ${{ matrix.target }} | |
name: gix-pack with all features (including wasm) |