name: Build and Release on: [ push ] jobs: build: runs-on: ubuntu-latest steps: - name: checkout Repo uses: actions/checkout@v4 - name: Setup Python if: github.event_name == 'push' && github.ref_type == 'tag' uses: actions/setup-python@v5 with: python-version: '3.12' - name: Setup Yaclog if: github.event_name == 'push' && github.ref_type == 'tag' run: | pip install yaclog~=1.1 yaclog show - name: Rust setup run: rustup toolchain install stable --profile minimal --component rustfmt - name: Run Checks run: | cargo check cargo fmt --check - name: Run Unit Tests run: cargo test - name: Publish to Crates.io if: github.event_name == 'push' run: | cargo publish \ --token ${{ secrets.CARGO_TOKEN }} \ ${{ github.ref_type != 'tag' && '--dry-run' || '' }} - name: Publish to Github if: github.event_name == 'push' && github.ref_type == 'tag' run: | gh release create ${{ github.ref_name }} \ --notes "$(yaclog show -mb)" \ --title "Version $(yaclog show -n)" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}