name: Release
on:
push:
tags: ["v*"]
jobs:
release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: 安装 Rust
uses: dtolnay/rust-toolchain@stable
- name: 安装系统依赖
run: |
sudo apt-get update -qq
sudo apt-get install -y libchafa-dev libglib2.0-dev libsysprof-capture-4-dev
- name: 编译 release
run: cargo build --release --no-default-features --features chafa-static
- name: 打包 .deb
run: |
VERSION="${GITHUB_REF_NAME#v}"
PKG="termfoto_${VERSION}_amd64"
mkdir -p "${PKG}/DEBIAN"
mkdir -p "${PKG}/usr/local/bin"
cp target/release/termfoto "${PKG}/usr/local/bin/"
cat > "${PKG}/DEBIAN/control" <<EOF
Package: termfoto
Version: ${VERSION}
Architecture: amd64
Maintainer: termfoto
Description: 终端图片浏览器——高效、轻量、chafa 渲染
EOF
dpkg-deb --build "${PKG}"
cp "${PKG}.deb" termfoto_latest_amd64.deb
env:
GITHUB_REF_NAME: ${{ github.ref_name }}
- name: 发布到 GitHub Releases
uses: softprops/action-gh-release@v1
with:
files: |
target/release/termfoto
termfoto_*.deb
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: 安装 Rust
uses: dtolnay/rust-toolchain@stable
- name: 从 tag 同步版本号
run: |
TAG_VERSION="${GITHUB_REF_NAME#v}"
sed -i "s/^version = .*/version = \"${TAG_VERSION}\"/" Cargo.toml
echo "Synced Cargo.toml version to ${TAG_VERSION}"
- name: 发布到 crates.io
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
run: cargo publish --allow-dirty