feat(core): Add execution history, workflows management, and UI compo… #7
Workflow file for this run
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 ForgeFlow | |
| on: | |
| push: | |
| tags: ["v*"] | |
| pull_request: | |
| branches: [master, main] | |
| jobs: | |
| build: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: windows-latest | |
| platform: windows | |
| arch: amd64 | |
| - os: windows-latest | |
| platform: windows | |
| arch: arm64 | |
| - os: macos-latest | |
| platform: darwin | |
| arch: amd64 | |
| - os: macos-latest | |
| platform: darwin | |
| arch: arm64 | |
| - os: ubuntu-latest | |
| platform: linux | |
| arch: amd64 | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Get version from tag or use default | |
| id: version | |
| shell: bash | |
| run: | | |
| if [[ "${{ github.ref }}" == refs/tags/* ]]; then | |
| VERSION=${GITHUB_REF#refs/tags/v} | |
| else | |
| VERSION="0.1.0-dev" | |
| fi | |
| echo "version=$VERSION" >> $GITHUB_OUTPUT | |
| echo "Building version: $VERSION" | |
| - name: Setup Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: "1.23" | |
| cache: true | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: "20" | |
| cache: "npm" | |
| cache-dependency-path: frontend/package-lock.json | |
| - name: Install NSIS (Windows) | |
| if: matrix.os == 'windows-latest' | |
| run: | | |
| choco install nsis -y | |
| $env:PATH = "C:\Program Files (x86)\NSIS;$env:PATH" | |
| echo "C:\Program Files (x86)\NSIS" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
| makensis /VERSION | |
| - name: Install Linux dependencies | |
| if: matrix.os == 'ubuntu-latest' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev | |
| - name: Setup webkit2gtk-4.0 compatibility | |
| if: matrix.os == 'ubuntu-latest' | |
| run: | | |
| sudo ln -sf /usr/lib/x86_64-linux-gnu/pkgconfig/webkit2gtk-4.1.pc /usr/lib/x86_64-linux-gnu/pkgconfig/webkit2gtk-4.0.pc | |
| - name: Install Wails CLI | |
| run: go install github.com/wailsapp/wails/v2/cmd/wails@latest | |
| - name: Build (Windows with NSIS) | |
| if: matrix.os == 'windows-latest' | |
| run: | | |
| wails build -platform ${{ matrix.platform }}/${{ matrix.arch }} -nsis | |
| dir build\bin | |
| - name: Build (macOS/Linux) | |
| if: matrix.os != 'windows-latest' | |
| run: wails build -platform ${{ matrix.platform }}/${{ matrix.arch }} | |
| - name: Rename artifacts with version (Windows) | |
| if: matrix.os == 'windows-latest' | |
| shell: pwsh | |
| run: | | |
| if (Test-Path "build/bin/ForgeFlow.exe") { | |
| Rename-Item "build/bin/ForgeFlow.exe" "ForgeFlow-v${{ steps.version.outputs.version }}-windows-${{ matrix.arch }}.exe" | |
| } | |
| if (Test-Path "build/bin/ForgeFlow-${{ matrix.arch }}-installer.exe") { | |
| Rename-Item "build/bin/ForgeFlow-${{ matrix.arch }}-installer.exe" "ForgeFlow-v${{ steps.version.outputs.version }}-windows-${{ matrix.arch }}-installer.exe" | |
| } | |
| - name: Rename artifacts with version (macOS) | |
| if: matrix.os == 'macos-latest' | |
| run: | | |
| if [ -d "build/bin/ForgeFlow.app" ]; then | |
| mv "build/bin/ForgeFlow.app" "build/bin/ForgeFlow-v${{ steps.version.outputs.version }}-macos-${{ matrix.arch }}.app" | |
| fi | |
| - name: Rename artifacts with version (Linux) | |
| if: matrix.os == 'ubuntu-latest' | |
| run: | | |
| if [ -f "build/bin/ForgeFlow" ]; then | |
| mv "build/bin/ForgeFlow" "build/bin/ForgeFlow-v${{ steps.version.outputs.version }}-linux-${{ matrix.arch }}" | |
| fi | |
| - name: Upload artifact (Windows) | |
| if: matrix.os == 'windows-latest' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ForgeFlow-windows-${{ matrix.arch }} | |
| path: | | |
| build/bin/ForgeFlow-v${{ steps.version.outputs.version }}-windows-${{ matrix.arch }}.exe | |
| build/bin/ForgeFlow-v${{ steps.version.outputs.version }}-windows-${{ matrix.arch }}-installer.exe | |
| - name: Upload artifact (macOS) | |
| if: matrix.os == 'macos-latest' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ForgeFlow-macos-${{ matrix.arch }} | |
| path: build/bin/ForgeFlow-v${{ steps.version.outputs.version }}-macos-${{ matrix.arch }}.app | |
| - name: Upload artifact (Linux) | |
| if: matrix.os == 'ubuntu-latest' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ForgeFlow-linux-${{ matrix.arch }} | |
| path: build/bin/ForgeFlow-v${{ steps.version.outputs.version }}-linux-${{ matrix.arch }} | |
| release: | |
| needs: build | |
| if: startsWith(github.ref, 'refs/tags/') | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Get version from tag | |
| id: version | |
| run: | | |
| VERSION=${GITHUB_REF#refs/tags/v} | |
| echo "version=$VERSION" >> $GITHUB_OUTPUT | |
| echo "Release version: $VERSION" | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: artifacts | |
| - name: Prepare release files | |
| run: | | |
| mkdir -p release | |
| echo "=== Listing all artifacts ===" | |
| ls -la artifacts/ | |
| echo "=== Windows amd64 ===" | |
| ls -la artifacts/ForgeFlow-windows-amd64/ || true | |
| if [ -f artifacts/ForgeFlow-windows-amd64/ForgeFlow-v${{ steps.version.outputs.version }}-windows-amd64.exe ]; then | |
| cp artifacts/ForgeFlow-windows-amd64/ForgeFlow-v${{ steps.version.outputs.version }}-windows-amd64.exe release/ | |
| fi | |
| if [ -f artifacts/ForgeFlow-windows-amd64/ForgeFlow-v${{ steps.version.outputs.version }}-windows-amd64-installer.exe ]; then | |
| cp artifacts/ForgeFlow-windows-amd64/ForgeFlow-v${{ steps.version.outputs.version }}-windows-amd64-installer.exe release/ | |
| fi | |
| echo "=== Windows arm64 ===" | |
| ls -la artifacts/ForgeFlow-windows-arm64/ || true | |
| if [ -f artifacts/ForgeFlow-windows-arm64/ForgeFlow-v${{ steps.version.outputs.version }}-windows-arm64.exe ]; then | |
| cp artifacts/ForgeFlow-windows-arm64/ForgeFlow-v${{ steps.version.outputs.version }}-windows-arm64.exe release/ | |
| fi | |
| if [ -f artifacts/ForgeFlow-windows-arm64/ForgeFlow-v${{ steps.version.outputs.version }}-windows-arm64-installer.exe ]; then | |
| cp artifacts/ForgeFlow-windows-arm64/ForgeFlow-v${{ steps.version.outputs.version }}-windows-arm64-installer.exe release/ | |
| fi | |
| echo "=== macOS amd64 ===" | |
| ls -la artifacts/ForgeFlow-macos-amd64/ || true | |
| if [ -d "artifacts/ForgeFlow-macos-amd64/Contents" ]; then | |
| # The .app was extracted, need to recreate it | |
| cd artifacts/ForgeFlow-macos-amd64 | |
| zip -r ../../release/ForgeFlow-v${{ steps.version.outputs.version }}-macos-amd64.zip Contents | |
| cd ../.. | |
| elif [ -d "artifacts/ForgeFlow-macos-amd64/ForgeFlow-v${{ steps.version.outputs.version }}-macos-amd64.app" ]; then | |
| cd artifacts/ForgeFlow-macos-amd64 | |
| zip -r ../../release/ForgeFlow-v${{ steps.version.outputs.version }}-macos-amd64.zip ForgeFlow-v${{ steps.version.outputs.version }}-macos-amd64.app | |
| cd ../.. | |
| fi | |
| echo "=== macOS arm64 ===" | |
| ls -la artifacts/ForgeFlow-macos-arm64/ || true | |
| if [ -d "artifacts/ForgeFlow-macos-arm64/Contents" ]; then | |
| # The .app was extracted, need to recreate it | |
| cd artifacts/ForgeFlow-macos-arm64 | |
| zip -r ../../release/ForgeFlow-v${{ steps.version.outputs.version }}-macos-arm64.zip Contents | |
| cd ../.. | |
| elif [ -d "artifacts/ForgeFlow-macos-arm64/ForgeFlow-v${{ steps.version.outputs.version }}-macos-arm64.app" ]; then | |
| cd artifacts/ForgeFlow-macos-arm64 | |
| zip -r ../../release/ForgeFlow-v${{ steps.version.outputs.version }}-macos-arm64.zip ForgeFlow-v${{ steps.version.outputs.version }}-macos-arm64.app | |
| cd ../.. | |
| fi | |
| echo "=== Linux amd64 ===" | |
| ls -la artifacts/ForgeFlow-linux-amd64/ || true | |
| if [ -f artifacts/ForgeFlow-linux-amd64/ForgeFlow-v${{ steps.version.outputs.version }}-linux-amd64 ]; then | |
| cp artifacts/ForgeFlow-linux-amd64/ForgeFlow-v${{ steps.version.outputs.version }}-linux-amd64 release/ | |
| chmod +x release/ForgeFlow-v${{ steps.version.outputs.version }}-linux-amd64 | |
| fi | |
| echo "=== Final release files ===" | |
| ls -lah release/ | |
| - name: Generate checksums | |
| run: | | |
| cd release | |
| sha256sum * > SHA256SUMS.txt | |
| cat SHA256SUMS.txt | |
| - name: Create Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: release/* | |
| fail_on_unmatched_files: false | |
| generate_release_notes: true | |
| draft: false | |
| prerelease: false | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |