diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 7f462b5..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,169 +0,0 @@ -# .github/workflows/release.yml -name: Release - -on: - push: - tags: - - "v*" - -jobs: - build: - strategy: - fail-fast: false - matrix: - include: - - os: ubuntu-latest - arch: x86_64 - target_name: creep-linux-x86_64 - - - os: ubuntu-latest - arch: arm64 - target_name: creep-linux-arm64 - - - os: windows-latest - arch: x86_64 - target_name: creep-windows-x86_64.exe - - - os: windows-latest - arch: arm64 - target_name: creep-windows-arm64.exe - - - os: macos-latest - arch: arm64 - target_name: creep-macos-arm64 - - runs-on: ${{ matrix.os }} - name: "Build · ${{ matrix.target_name }}" - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Log build target info - shell: bash - run: | - echo "================================================" - echo " Target : ${{ matrix.target_name }}" - echo " OS : ${{ matrix.os }}" - echo " Arch : ${{ matrix.arch }}" - echo " Ref : ${{ github.ref }}" - echo " Commit : ${{ github.sha }}" - echo "================================================" - - # Linux ARM64 cross-compiler - - name: Install ARM64 cross-compiler (Linux ARM64 only) - if: matrix.os == 'ubuntu-latest' && matrix.arch == 'arm64' - run: | - sudo apt-get update - sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu - aarch64-linux-gnu-g++ --version - - # CMake configure - - name: Configure (Linux x86_64) - if: matrix.os == 'ubuntu-latest' && matrix.arch == 'x86_64' - run: cmake -B build -DCMAKE_BUILD_TYPE=Release - - - name: Configure (Linux ARM64) - if: matrix.os == 'ubuntu-latest' && matrix.arch == 'arm64' - run: | - cmake -B build -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_SYSTEM_NAME=Linux \ - -DCMAKE_SYSTEM_PROCESSOR=aarch64 \ - -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc \ - -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ - - - name: Configure (Windows x86_64) - if: matrix.os == 'windows-latest' && matrix.arch == 'x86_64' - run: cmake -B build -DCMAKE_BUILD_TYPE=Release -A x64 - - - name: Configure (Windows ARM64) - if: matrix.os == 'windows-latest' && matrix.arch == 'arm64' - run: cmake -B build -DCMAKE_BUILD_TYPE=Release -A ARM64 - - - name: Configure (macOS ARM64) - if: matrix.os == 'macos-latest' - run: | - cmake -B build -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_OSX_ARCHITECTURES=arm64 - - # Build - - name: Build - run: cmake --build build --config Release --verbose - - # Verify binary exists (Linux/macOS) - - name: Verify binary exists (Linux / macOS) - if: runner.os != 'Windows' - run: | - BIN=$(find build -maxdepth 4 -type f -name creep | head -n 1) - if [ -z "$BIN" ]; then - echo "✗ ERROR: creep binary not found" - echo "Contents of build/:" - find build -maxdepth 4 -type f - exit 1 - fi - echo "✓ Binary found at $BIN" - mv "$BIN" "${{ matrix.target_name }}" - - # Verify binary exists (Windows) - - name: Verify binary exists (Windows) - if: runner.os == 'Windows' - shell: pwsh - run: | - $bin = Get-ChildItem -Recurse -Filter creep.exe | Select-Object -First 1 - if (-not $bin) { - Write-Error "✗ ERROR: creep.exe not found" - Get-ChildItem -Recurse build - exit 1 - } - Write-Host "✓ Binary found at $($bin.FullName)" - Move-Item $bin.FullName "${{ matrix.target_name }}" - - - name: Upload artifact - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.target_name }} - path: ${{ matrix.target_name }} - if-no-files-found: error - - release: - needs: build - runs-on: ubuntu-latest - name: "Create Release" - - steps: - - name: Download all artifacts - uses: actions/download-artifact@v4 - with: - path: artifacts/ - - - name: Verify all artifacts downloaded - run: | - echo "→ Checking artifacts..." - EXPECTED=( - "creep-linux-x86_64/creep-linux-x86_64" - "creep-linux-arm64/creep-linux-arm64" - "creep-windows-x86_64.exe/creep-windows-x86_64.exe" - "creep-windows-arm64.exe/creep-windows-arm64.exe" - "creep-macos-arm64/creep-macos-arm64" - ) - MISSING=0 - for f in "${EXPECTED[@]}"; do - if [ ! -f "artifacts/$f" ]; then - echo "✗ Missing: $f" - MISSING=$((MISSING + 1)) - else - echo "✓ Found: $f" - fi - done - if [ "$MISSING" -gt 0 ]; then - echo "✗ $MISSING artifact(s) missing — aborting release" - exit 1 - fi - echo "✓ All artifacts present" - - - name: Create GitHub Release - uses: softprops/action-gh-release@v2 - with: - files: artifacts/**/* - fail_on_unmatched_files: true - generate_release_notes: true