name: Build and Release
on:
push:
tags:
- 'v*'
jobs:
build-and-release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt
- name: Install wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
with:
version: latest
- name: Cargo fmt
run: cargo fmt -- --check
- name: Cargo clippy
run: cargo clippy -- -D warnings
- name: Run tests
run: cargo test --all-targets
- name: Build WASM package
run: wasm-pack build --release --target web --features wasm
- name: Archive WASM artifacts
run: |
tar -czf pink072-wasm.tar.gz -C pkg .
- name: Create Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release create ${{ github.ref_name }} \
--title "${{ github.ref_name }} - Release" \
--notes "## PINK-072 Rust Implementation
PINK-072 仕様を忠実に実装した Rust クレートのリリースです。
### Features
- **Core API**: \`pink072_wrap\`, \`pink072_wrap_into\`, \`pink072_unwrap\` 関数を提供
- **WASM Support**: \`wasm\` フィーチャで WebAssembly バインディングに対応
- **Frame Structure**: Header (32B) + Cover (72×72 RGBA) + Payload の固定フレーム構造
### Assets
- \`pink072-wasm.tar.gz\`: WebAssembly パッケージ(wasm-pack でビルド済み)" \
pink072-wasm.tar.gz