Skip to content

fix: cut v1.0.4 for file size copy cleanup #27

fix: cut v1.0.4 for file size copy cleanup

fix: cut v1.0.4 for file size copy cleanup #27

Workflow file for this run

name: Release
on:
push:
tags:
- 'v*'
permissions:
contents: write
env:
CARGO_TERM_COLOR: always
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
create-release:
name: Create Release
runs-on: ubuntu-22.04
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Extract changelog notes
env:
RELEASE_TAG: ${{ github.ref_name }}
run: |
python3 <<'PY'
import os
import pathlib
import re
import sys
tag = os.environ["RELEASE_TAG"]
changelog_path = pathlib.Path("CHANGELOG.md")
release_notes_path = pathlib.Path("release-notes.md")
heading_pattern = re.compile(r"^## (?P<tag>v[^\s]+) - \d{4}-\d{2}-\d{2}$")
if not changelog_path.exists():
print(
"::error title=Missing changelog::CHANGELOG.md was not found in the repository checkout.",
file=sys.stderr,
)
sys.exit(1)
section_lines = []
in_target_section = False
for raw_line in changelog_path.read_text(encoding="utf-8").splitlines():
heading_match = heading_pattern.match(raw_line)
if heading_match:
if in_target_section:
break
in_target_section = heading_match.group("tag") == tag
continue
if in_target_section:
section_lines.append(raw_line)
if not in_target_section:
print(
f"::error title=Missing changelog entry::No CHANGELOG.md section found for tag {tag}. Expected a heading like `## {tag} - YYYY-MM-DD`.",
file=sys.stderr,
)
sys.exit(1)
notes = "\n".join(section_lines).strip()
if not notes:
print(
f"::error title=Empty changelog entry::CHANGELOG.md section for tag {tag} is empty. Add at least one release note bullet under the heading.",
file=sys.stderr,
)
sys.exit(1)
release_notes_path.write_text(f"{notes}\n", encoding="utf-8")
PY
- name: Check if release already exists
id: release_exists
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
if gh release view "${{ github.ref_name }}" >/dev/null 2>&1; then
echo "exists=true" >> "$GITHUB_OUTPUT"
else
echo "exists=false" >> "$GITHUB_OUTPUT"
fi
- name: Create GitHub Release
id: create_release
if: steps.release_exists.outputs.exists != 'true'
uses: softprops/action-gh-release@v2
with:
name: CSV Align ${{ github.ref_name }}
draft: false
prerelease: false
body_path: release-notes.md
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build-release:
name: Build Release
needs: create-release
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: ubuntu-22.04
target: x86_64-unknown-linux-gnu
artifact_name: csv-align-linux-x86_64
asset_name: csv-align-linux-x86_64
- os: macos-latest
target: aarch64-apple-darwin
artifact_name: csv-align-macos-arm64
asset_name: csv-align-macos-arm64
- os: macos-latest
target: x86_64-apple-darwin
artifact_name: csv-align-macos-x86_64
asset_name: csv-align-macos-x86_64
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Install dependencies (Ubuntu)
if: matrix.os == 'ubuntu-22.04'
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev patchelf
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
cache: 'npm'
cache-dependency-path: frontend/package-lock.json
- name: Install frontend dependencies
working-directory: frontend
run: npm ci
- name: Build frontend
working-directory: frontend
run: npm run build
- name: Setup Rust cache
uses: Swatinem/rust-cache@v2
with:
workspaces: |
. -> target
src-tauri -> src-tauri/target
key: tauri-${{ matrix.os }}-${{ matrix.target }}
- name: Install Tauri CLI
run: cargo install tauri-cli --locked --version "^2" --force
- name: Build Tauri app
working-directory: src-tauri
run: |
rm -rf target/${{ matrix.target }}/release/bundle
cargo tauri build --target ${{ matrix.target }}
- name: Upload Linux packages
if: matrix.os == 'ubuntu-22.04'
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.ref_name }}
files: |
src-tauri/target/x86_64-unknown-linux-gnu/release/bundle/deb/*.deb
src-tauri/target/x86_64-unknown-linux-gnu/release/bundle/appimage/*.AppImage
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload macOS ARM package
if: matrix.os == 'macos-latest' && matrix.target == 'aarch64-apple-darwin'
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.ref_name }}
files: src-tauri/target/aarch64-apple-darwin/release/bundle/dmg/*.dmg
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload macOS Intel package
if: matrix.os == 'macos-latest' && matrix.target == 'x86_64-apple-darwin'
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.ref_name }}
files: src-tauri/target/x86_64-apple-darwin/release/bundle/dmg/*.dmg
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}