| 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 }} |
| |
| |
| cp dist/KiroProxy release/KiroProxy-${VERSION}-linux-x86_64 |
| chmod +x release/KiroProxy-${VERSION}-linux-x86_64 |
| |
| |
| tar -czvf release/KiroProxy-${VERSION}-linux-x86_64.tar.gz -C dist KiroProxy |
| |
| |
| 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 |
| |
| |
| 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 |
| |
| |
| Copy-Item dist/KiroProxy.exe release/KiroProxy-${VERSION}-windows-x86_64.exe |
| |
| |
| 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 |
| |
| |
| cp dist/KiroProxy release/KiroProxy-${VERSION}-macos-x86_64 |
| chmod +x release/KiroProxy-${VERSION}-macos-x86_64 |
| |
| |
| 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 }} |
|
|