Workflow: Synchronize release workflow with robust Windows build logic
All checks were successful
Build Tamigo CLI / Build Linux Binary (push) Successful in 49s
Build Tamigo CLI / Build Windows Binary (push) Successful in 41s

This commit is contained in:
Daniel Dybing
2026-03-11 21:00:19 +01:00
parent 19bed7d812
commit 5c818a09e0
2 changed files with 36 additions and 15 deletions

View File

@@ -18,8 +18,7 @@ jobs:
run: |
pip install -r requirements.txt
- name: Build
run: |
pyinstaller --onefile --name tamigo-cli tamigo.py
run: pyinstaller --onefile --name tamigo-cli tamigo.py
- name: Rename for release
run: mv dist/tamigo-cli dist/tamigo-cli-linux
- name: Upload to Release
@@ -34,26 +33,40 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build Windows executable via Docker (Modern & Robust)
- name: Build Windows executable (Robust Release Fix)
run: |
CONTAINER_NAME="rel-builder-${{ github.run_id }}"
docker rm -f $CONTAINER_NAME || true
CONTAINER_NAME="win-rel-builder-${{ github.run_id }}"
# Using burningtyger/pyinstaller-windows for better path handling
docker create --name $CONTAINER_NAME burningtyger/pyinstaller-windows "pip install -r requirements.txt && pyinstaller --onefile --name tamigo-cli tamigo.py"
# 1. Create and start container in background
docker run -d --name $CONTAINER_NAME --entrypoint tail cdrx/pyinstaller-windows -f /dev/null
# 2. Copy source into container
docker exec $CONTAINER_NAME mkdir -p /src
docker cp . $CONTAINER_NAME:/src
docker start -a $CONTAINER_NAME
docker cp $CONTAINER_NAME:/src/dist .
docker rm $CONTAINER_NAME
- name: Debug - List output files
run: ls -R dist/
- name: Rename for release
run: mv dist/*.exe dist/tamigo-cli-windows.exe
# 3. Run build with explicit environment variables to fix the /tmp bug
docker exec -w /src $CONTAINER_NAME sh -c "
export TMP=C:\\\\temp && \
export TEMP=C:\\\\temp && \
mkdir -p /src/build /src/dist_win && \
pip install -r requirements.txt && \
pyinstaller --onefile --name tamigo-cli \
--workpath /src/build \
--distpath /src/dist_win \
--specpath /src/build \
tamigo.py"
# 4. Extract results
mkdir -p win_dist
docker cp $CONTAINER_NAME:/src/dist_win/tamigo-cli.exe ./win_dist/tamigo-cli-windows.exe
# 5. Cleanup
docker rm -f $CONTAINER_NAME
- name: Upload to Release
uses: softprops/action-gh-release@v2
with:
files: dist/tamigo-cli-windows.exe
files: win_dist/tamigo-cli-windows.exe
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

8
GEMINI.md Normal file
View File

@@ -0,0 +1,8 @@
## Windows Cross-Compilation Fix (Gitea Actions)
- **Problem**: The Windows build was failing due to `OSError: [WinError 123] Invalid name: '/tmp\\*'` and volume mount issues in the Gitea CI environment.
- **Solution**:
1. Used the `cdrx/pyinstaller-windows` Docker image but bypassed its default entrypoint.
2. Implemented a "Manual Copy" strategy using `docker cp` to move files in and out of the container, avoiding unreliable volume mounts.
3. Forced PyInstaller to use Windows-compatible paths by explicitly setting `TMP` and `TEMP` environment variables to `C:\\temp` and specifying `--workpath` and `--distpath` during the build command.
4. Downgraded `upload-artifact` to `v3` for compatibility with Gitea's artifact storage.