Update gui.py #34
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build and Release | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - master | |
| tags: | |
| - 'v*' | |
| pull_request: | |
| branches: | |
| - main | |
| - master | |
| workflow_dispatch: | |
| jobs: | |
| build: | |
| strategy: | |
| matrix: | |
| include: | |
| - os: windows-latest | |
| goos: windows | |
| goarch: amd64 | |
| exe_ext: .exe | |
| archive_format: zip | |
| archive_ext: .zip | |
| - os: macos-13 | |
| goos: darwin | |
| goarch: amd64 | |
| exe_ext: '' | |
| archive_format: zip | |
| archive_ext: .zip | |
| - os: macos-14 | |
| goos: darwin | |
| goarch: arm64 | |
| exe_ext: '' | |
| archive_format: zip | |
| archive_ext: .zip | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.23' | |
| cache: false | |
| - name: Initialize Go module | |
| run: | | |
| go mod init ech-workers || true | |
| go mod tidy | |
| - name: Build Go executable | |
| run: | | |
| GOOS=${{ matrix.goos }} GOARCH=${{ matrix.goarch }} go build -o ech-workers${{ matrix.exe_ext }} ech-workers.go | |
| shell: bash | |
| - name: Set up Python | |
| if: startsWith(github.ref, 'refs/tags/') | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Install PyInstaller and dependencies | |
| if: startsWith(github.ref, 'refs/tags/') | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install pyinstaller PyQt5 pystray Pillow | |
| - name: Build Python executable | |
| if: startsWith(github.ref, 'refs/tags/') | |
| run: | | |
| # PyInstaller 会自动使用当前系统架构 | |
| # macos-13 = Intel (x86_64), macos-14 = Apple Silicon (arm64) | |
| pyinstaller --onefile --windowed --name ECHWorkersGUI gui.py | |
| shell: bash | |
| - name: Prepare release files | |
| if: startsWith(github.ref, 'refs/tags/') | |
| run: | | |
| mkdir -p release | |
| # 复制 Go 可执行文件 | |
| cp ech-workers${{ matrix.exe_ext }} release/ | |
| # 复制 Python 打包后的可执行文件 | |
| if [ "${{ matrix.goos }}" == "windows" ]; then | |
| if [ -f "dist/ECHWorkersGUI.exe" ]; then | |
| cp dist/ECHWorkersGUI.exe release/ | |
| fi | |
| else | |
| if [ -f "dist/ECHWorkersGUI" ]; then | |
| cp dist/ECHWorkersGUI release/ | |
| chmod +x release/ECHWorkersGUI | |
| fi | |
| fi | |
| # 创建 README | |
| { | |
| echo "ECH Workers Client" | |
| echo "" | |
| echo "Files:" | |
| echo "- ech-workers(.exe): Go compiled core proxy program" | |
| if [ "${{ matrix.goos }}" == "windows" ]; then | |
| echo "- ECHWorkersGUI.exe: Python GUI client (standalone executable)" | |
| else | |
| echo "- ECHWorkersGUI: Python GUI client (standalone executable)" | |
| fi | |
| echo "" | |
| echo "Usage:" | |
| if [ "${{ matrix.goos }}" == "windows" ]; then | |
| echo "1. Double-click ECHWorkersGUI.exe to launch the GUI" | |
| echo "2. Or run ech-workers.exe from command line" | |
| else | |
| echo "1. Run ./ECHWorkersGUI to launch the GUI" | |
| echo "2. Or run ./ech-workers from command line" | |
| fi | |
| echo "" | |
| echo "System Requirements:" | |
| echo "- Windows: Windows 10+" | |
| echo "- macOS: macOS 10.13+" | |
| echo "- No Python installation required (standalone executables)" | |
| } > release/README.txt | |
| shell: bash | |
| - name: Create archive (Windows) | |
| if: startsWith(github.ref, 'refs/tags/') && matrix.goos == 'windows' | |
| run: | | |
| cd release | |
| powershell Compress-Archive -Path * -DestinationPath ../ECHWorkers-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.archive_ext }} -Force | |
| shell: powershell | |
| - name: Create archive (macOS/Linux) | |
| if: startsWith(github.ref, 'refs/tags/') && matrix.goos != 'windows' | |
| run: | | |
| cd release | |
| zip -r ../ECHWorkers-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.archive_ext }} . | |
| shell: bash | |
| - name: Upload artifacts | |
| if: startsWith(github.ref, 'refs/tags/') | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ECHWorkers-${{ matrix.goos }}-${{ matrix.goarch }} | |
| path: ECHWorkers-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.archive_ext }} | |
| release: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| if: startsWith(github.ref, 'refs/tags/') | |
| steps: | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: artifacts | |
| - name: Create release | |
| uses: softprops/action-gh-release@v1 | |
| with: | |
| files: | | |
| artifacts/**/*.zip | |
| draft: false | |
| prerelease: false | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |