name: Build on: push: tags: - 'v*.*.*' workflow_dispatch: jobs: build: strategy: fail-fast: false matrix: include: - os: windows-latest artifact: TinyWeb-windows-x64.exe - os: macos-latest artifact: TinyWeb-macos-arm64 - os: ubuntu-latest artifact: TinyWeb-linux-x64 runs-on: ${{ matrix.os }} steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install dependencies run: | pip install -r requirements.txt pip install pyinstaller - name: Build with PyInstaller run: | pyinstaller --onefile --console --name TinyWeb app.py - name: Get artifact path id: artifact run: | if [[ "${{ matrix.os }}" == "windows-latest" ]]; then echo "path=dist/TinyWeb.exe" >> $GITHUB_OUTPUT else echo "path=dist/TinyWeb" >> $GITHUB_OUTPUT fi - name: Create ZIP uses: actions/upload-artifact@v4 with: name: ${{ matrix.artifact }} path: ${{ steps.artifact.outputs.path }} if-no-files-found: error release: needs: build runs-on: ubuntu-latest if: startsWith(github.ref, 'refs/tags/v') 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/** generate_release_notes: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}