kiroproxy / .github /workflows /build.yml
KiroProxy User
chore: repo cleanup and maintenance
0edbd7b
name: Build Release
on:
push:
tags:
- 'v*'
workflow_dispatch:
permissions:
contents: write
env:
APP_NAME: KiroProxy
jobs:
build-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Get version from tag
id: version
run: |
if [[ "${{ github.ref }}" == refs/tags/* ]]; then
VERSION=${GITHUB_REF#refs/tags/v}
else
VERSION=$(grep -oP '__version__ = "\K[^"]+' kiro_proxy/__init__.py)
fi
echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
echo "Version: $VERSION"
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install pyinstaller
- name: Build binary
run: python build.py
- name: Install packaging tools
run: |
sudo apt-get update
sudo apt-get install -y ruby ruby-dev rubygems build-essential rpm libfuse2
sudo gem install --no-document fpm
- name: Create packages
run: |
mkdir -p release
VERSION=${{ steps.version.outputs.VERSION }}
# Binary (standalone)
cp dist/KiroProxy release/KiroProxy-${VERSION}-linux-x86_64
chmod +x release/KiroProxy-${VERSION}-linux-x86_64
# tar.gz
tar -czvf release/KiroProxy-${VERSION}-linux-x86_64.tar.gz -C dist KiroProxy
# deb package
fpm -s dir -t deb \
-n kiroproxy \
-v ${VERSION} \
--description "Kiro API Proxy Server" \
--license "MIT" \
--architecture amd64 \
--maintainer "petehsu" \
--url "https://github.com/petehsu/KiroProxy" \
-p release/kiroproxy_${VERSION}_amd64.deb \
dist/KiroProxy=/usr/local/bin/KiroProxy
# rpm package
fpm -s dir -t rpm \
-n kiroproxy \
-v ${VERSION} \
--description "Kiro API Proxy Server" \
--license "MIT" \
--architecture x86_64 \
--maintainer "petehsu" \
--url "https://github.com/petehsu/KiroProxy" \
-p release/kiroproxy-${VERSION}-1.x86_64.rpm \
dist/KiroProxy=/usr/local/bin/KiroProxy
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: KiroProxy-Linux
path: release/*
build-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Get version from tag
id: version
shell: bash
run: |
if [[ "${{ github.ref }}" == refs/tags/* ]]; then
VERSION=${GITHUB_REF#refs/tags/v}
else
VERSION=$(grep -oP '__version__ = "\K[^"]+' kiro_proxy/__init__.py)
fi
echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
echo "Version: $VERSION"
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install pyinstaller
- name: Build
run: python build.py
- name: Create packages
shell: pwsh
run: |
$VERSION = "${{ steps.version.outputs.VERSION }}"
New-Item -ItemType Directory -Force -Path release
# exe (standalone)
Copy-Item dist/KiroProxy.exe release/KiroProxy-${VERSION}-windows-x86_64.exe
# zip
Compress-Archive -Path dist/KiroProxy.exe -DestinationPath release/KiroProxy-${VERSION}-windows-x86_64.zip
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: KiroProxy-Windows
path: release/*
build-macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Get version from tag
id: version
run: |
if [[ "${{ github.ref }}" == refs/tags/* ]]; then
VERSION=${GITHUB_REF#refs/tags/v}
else
VERSION=$(grep -oP '__version__ = "\K[^"]+' kiro_proxy/__init__.py || echo "1.0.0")
fi
echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
echo "Version: $VERSION"
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install pyinstaller
- name: Generate icon
run: |
mkdir -p assets/icon.iconset
for size in 16 32 64 128 256 512; do
sips -z $size $size assets/icon.png --out assets/icon.iconset/icon_${size}x${size}.png
done
iconutil -c icns assets/icon.iconset -o assets/icon.icns
- name: Build
run: python build.py
- name: Create packages
run: |
VERSION=${{ steps.version.outputs.VERSION }}
mkdir -p release
# Binary (standalone)
cp dist/KiroProxy release/KiroProxy-${VERSION}-macos-x86_64
chmod +x release/KiroProxy-${VERSION}-macos-x86_64
# zip
cd dist && zip -r ../release/KiroProxy-${VERSION}-macos-x86_64.zip KiroProxy && cd ..
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: KiroProxy-macOS
path: release/*
release:
needs: [build-linux, build-windows, build-macos]
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
- uses: actions/checkout@v4
- name: Get version from tag
id: version
run: |
VERSION=${GITHUB_REF#refs/tags/v}
echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: List artifacts
run: find artifacts -type f
- name: Create Release
uses: softprops/action-gh-release@v1
with:
name: KiroProxy v${{ steps.version.outputs.VERSION }}
body: |
## Downloads
| Platform | File | Description |
|----------|------|-------------|
| **Linux** | `KiroProxy-${{ steps.version.outputs.VERSION }}-linux-x86_64` | Standalone binary |
| | `KiroProxy-${{ steps.version.outputs.VERSION }}-linux-x86_64.tar.gz` | Compressed archive |
| | `kiroproxy_${{ steps.version.outputs.VERSION }}_amd64.deb` | Debian/Ubuntu package |
| | `kiroproxy-${{ steps.version.outputs.VERSION }}-1.x86_64.rpm` | Fedora/RHEL/CentOS package |
| **Windows** | `KiroProxy-${{ steps.version.outputs.VERSION }}-windows-x86_64.exe` | Standalone executable |
| | `KiroProxy-${{ steps.version.outputs.VERSION }}-windows-x86_64.zip` | Compressed archive |
| **macOS** | `KiroProxy-${{ steps.version.outputs.VERSION }}-macos-x86_64` | Standalone binary |
| | `KiroProxy-${{ steps.version.outputs.VERSION }}-macos-x86_64.zip` | Compressed archive |
files: |
artifacts/KiroProxy-Linux/*
artifacts/KiroProxy-Windows/*
artifacts/KiroProxy-macOS/*
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}