# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Verify installation
rustc --version
cargo --version
git clone https://github.com/tanep3/Tsuchinoko.git
cd Tsuchinoko
cargo build
cargo test
cargo build --release
Binary location: target/release/tnk
cargo install --path .
This installs tnk to ~/.cargo/bin/.
For cross-compilation, use cross:
cargo install cross
# Linux
cross build --release --target x86_64-unknown-linux-gnu
# macOS
cross build --release --target x86_64-apple-darwin
# Windows
cross build --release --target x86_64-pc-windows-gnu
Add to Cargo.toml:
[profile.release]
opt-level = "z" # Optimize for size
lto = true # Link-time optimization
codegen-units = 1 # Better optimization
strip = true # Strip symbols
.github/workflows/ci.yml:
name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo test
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo build --release
- uses: actions/upload-artifact@v4
with:
name: tnk-linux
path: target/release/tnk
.github/workflows/release.yml:
name: Release
on:
push:
tags:
- 'v*'
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo build --release
- uses: softprops/action-gh-release@v1
with:
files: target/release/tnk
Update version in:
Cargo.toml - version = "x.y.z"src/main.rs - #[command(version = "x.y.z")]Create release:
git tag v0.5.0
git push origin v0.5.0