diff --git a/.github/workflows/release_binaries.yml b/.github/workflows/release_binaries.yml index 690d5f9e..4e666045 100644 --- a/.github/workflows/release_binaries.yml +++ b/.github/workflows/release_binaries.yml @@ -2,276 +2,320 @@ name: Release binaries on: # workflow_run: - # workflows: - # - Build darwin-amd64 binary (no gpu) - # - Build darwin-arm64 binary (no gpu) - # - Build linux-amd64 binary (GPU) - # - Build linux-arm64 binary (GPU) - # types: - # - completed + # workflows: + # - Build darwin-amd64 binary (no gpu) + # - Build darwin-arm64 binary (no gpu) + # - Build linux-amd64 binary (GPU) + # - Build linux-arm64 binary (GPU) + # types: + # - completed push: branches: - gorka/ci-trigger-release jobs: + version-sha: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Determine Version and SHA + id: determine + run: | + VERSION=$(git describe --tags --abbrev=0) + SHA=$(git rev-parse HEAD) + echo VERSION: $VERSION + echo SHA: $SHA + echo "VERSION=${VERSION}" >> "$GITHUB_OUTPUT" + echo "SHA=${SHA}" >> "$GITHUB_OUTPUT" + + outputs: + version: ${{ steps.determine.outputs.VERSION }} + sha: ${{ steps.determine.outputs.SHA }} + build_linux_arm64: + if: false + needs: version-sha runs-on: linux-arm64 steps: - - uses: actions/checkout@v4 - - - name: Set up Go - uses: actions/setup-go@v4 - with: - go-version: '1.22' - - - name: Add NVIDIA package repository - run: | - sudo apt-get install -y gnupg2 curl - sudo mkdir -p /usr/share/keyrings - curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/3bf863cc.pub | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-drivers.gpg - echo "deb [signed-by=/usr/share/keyrings/nvidia-drivers.gpg] https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/ /" | sudo tee /etc/apt/sources.list.d/nvidia-drivers.list - - - name: Update package lists - run: sudo apt-get update || true # Ignore errors from this command - - - name: Install NVIDIA CUDA Toolkit - run: | - sudo apt-get install -y nvidia-cuda-toolkit - export PATH=/usr/local/cuda/bin:$PATH - - - name: Build for linux/arm64 - env: - GOOS: linux - GOARCH: arm64 - CGO_ENABLED: 1 - CUDA_HOME: /usr/local/cuda - LD_LIBRARY_PATH: /usr/local/cuda/lib64:$LD_LIBRARY_PATH - run: | - echo "-------------- OS: ${GOOS} : Arch: ${GOARCH} ---------- start" - output_dir="build/${GOOS}-${GOARCH}" - output_name="lilypad-${GOOS}-${GOARCH}" - mkdir -p "${output_dir}" - - # Debug: Print environment variables for the build - echo "Building for ${GOOS}/${GOARCH} with GOOS=$GOOS, GOARCH=$GOARCH" - echo "CUDA_HOME: $CUDA_HOME" - echo "LD_LIBRARY_PATH: $LD_LIBRARY_PATH" - - go build -o "${output_dir}/${output_name}" -v -tags cuda -ldflags="-X 'github.com/lilypad-tech/lilypad/cmd/lilypad.VERSION=$(git describe --tags --abbrev=0)' -X 'github.com/lilypad-tech/lilypad/cmd/lilypad.COMMIT_SHA=$(git rev-parse HEAD)'" - - echo "-------------- OS: ${GOOS} : Arch: ${GOARCH} ---------- done" - - - name: Upload binary - uses: actions/upload-artifact@v3 - with: - name: linux-arm64-binary - path: build/linux-arm64/lilypad-linux-arm64 - - - name: Verify Build Output - run: | - ls -la build/linux-arm64 - echo "Build complete" + - uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: "1.22" + + - name: Add NVIDIA package repository + run: | + sudo apt-get install -y gnupg2 curl + sudo mkdir -p /usr/share/keyrings + curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/3bf863cc.pub | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-drivers.gpg + echo "deb [signed-by=/usr/share/keyrings/nvidia-drivers.gpg] https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/ /" | sudo tee /etc/apt/sources.list.d/nvidia-drivers.list + + - name: Update package lists + run: sudo apt-get update || true # Ignore errors from this command + + - name: Install NVIDIA CUDA Toolkit + run: | + sudo apt-get install -y nvidia-cuda-toolkit + export PATH=/usr/local/cuda/bin:$PATH + + - name: Build for linux/arm64 + env: + GOOS: linux + GOARCH: arm64 + CGO_ENABLED: 1 + CUDA_HOME: /usr/local/cuda + LD_LIBRARY_PATH: /usr/local/cuda/lib64:$LD_LIBRARY_PATH + run: | + echo "-------------- OS: ${GOOS} : Arch: ${GOARCH} ---------- start" + output_dir="build/${GOOS}-${GOARCH}" + output_name="lilypad-${GOOS}-${GOARCH}" + mkdir -p "${output_dir}" + + # Debug: Print environment variables for the build + echo "Building for ${GOOS}/${GOARCH} with GOOS=$GOOS, GOARCH=$GOARCH" + echo "CUDA_HOME: $CUDA_HOME" + echo "LD_LIBRARY_PATH: $LD_LIBRARY_PATH" + + go build -o "${output_dir}/${output_name}" -v -tags cuda -ldflags="-X 'github.com/lilypad-tech/lilypad/cmd/lilypad.VERSION=$(git describe --tags --abbrev=0)' -X 'github.com/lilypad-tech/lilypad/cmd/lilypad.COMMIT_SHA=$(git rev-parse HEAD)'" + + echo "-------------- OS: ${GOOS} : Arch: ${GOARCH} ---------- done" + + - name: Upload binary + uses: actions/upload-artifact@v3 + with: + name: linux-arm64-binary + path: build/linux-arm64/lilypad-linux-arm64 + + - name: Verify Build Output + run: | + ls -la build/linux-arm64 + echo "Build complete" build_linux_amd64: + if: false + needs: version-sha runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - - name: Set up Go - uses: actions/setup-go@v4 - with: - go-version: '1.22' - - - name: Add NVIDIA package repository - run: | - sudo apt-get install -y gnupg2 curl - sudo mkdir -p /usr/share/keyrings - curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/3bf863cc.pub | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-drivers.gpg - echo "deb [signed-by=/usr/share/keyrings/nvidia-drivers.gpg] https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/ /" | sudo tee /etc/apt/sources.list.d/nvidia-drivers.list - - - name: Update package lists - run: sudo apt-get update || true # Ignore errors from this command - - - name: Install NVIDIA CUDA Toolkit - run: | - sudo apt-get install -y nvidia-cuda-toolkit - export PATH=/usr/local/cuda/bin:$PATH - - - name: Build for linux/amd64 - env: - GOOS: linux - GOARCH: amd64 - CGO_ENABLED: 1 - CUDA_HOME: /usr/local/cuda - LD_LIBRARY_PATH: /usr/local/cuda/lib64:$LD_LIBRARY_PATH - run: | - echo "-------------- OS: ${GOOS} : Arch: ${GOARCH} ---------- start" - output_dir="build/${GOOS}-${GOARCH}" - output_name="lilypad-${GOOS}-${GOARCH}" - mkdir -p "${output_dir}" - - # Debug: Print environment variables for the build - echo "Building for ${GOOS}/${GOARCH} with GOOS=$GOOS, GOARCH=$GOARCH" - echo "CUDA_HOME: $CUDA_HOME" - echo "LD_LIBRARY_PATH: $LD_LIBRARY_PATH" - - go build -o "${output_dir}/${output_name}" -v -tags cuda -ldflags="-X 'github.com/lilypad-tech/lilypad/cmd/lilypad.VERSION=$(git describe --tags --abbrev=0)' -X 'github.com/lilypad-tech/lilypad/cmd/lilypad.COMMIT_SHA=$(git rev-parse HEAD)'" - - echo "-------------- OS: ${GOOS} : Arch: ${GOARCH} ---------- done" - - - name: Upload binary - uses: actions/upload-artifact@v3 - with: - name: linux-amd64-binary - path: build/linux-amd64/lilypad-linux-amd64 - - - name: Verify Build Output - run: | - ls -la build/linux-amd64 - echo "Build complete" + - uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: "1.22" + + - name: Add NVIDIA package repository + run: | + sudo apt-get install -y gnupg2 curl + sudo mkdir -p /usr/share/keyrings + curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/3bf863cc.pub | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-drivers.gpg + echo "deb [signed-by=/usr/share/keyrings/nvidia-drivers.gpg] https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/ /" | sudo tee /etc/apt/sources.list.d/nvidia-drivers.list + + - name: Update package lists + run: sudo apt-get update || true # Ignore errors from this command + + - name: Install NVIDIA CUDA Toolkit + run: | + sudo apt-get install -y nvidia-cuda-toolkit + export PATH=/usr/local/cuda/bin:$PATH + + - name: Build for linux/amd64 + env: + GOOS: linux + GOARCH: amd64 + CGO_ENABLED: 1 + CUDA_HOME: /usr/local/cuda + LD_LIBRARY_PATH: /usr/local/cuda/lib64:$LD_LIBRARY_PATH + run: | + echo "-------------- OS: ${GOOS} : Arch: ${GOARCH} ---------- start" + output_dir="build/${GOOS}-${GOARCH}" + output_name="lilypad-${GOOS}-${GOARCH}" + mkdir -p "${output_dir}" + + # Debug: Print environment variables for the build + echo "Building for ${GOOS}/${GOARCH} with GOOS=$GOOS, GOARCH=$GOARCH" + echo "CUDA_HOME: $CUDA_HOME" + echo "LD_LIBRARY_PATH: $LD_LIBRARY_PATH" + + go build -o "${output_dir}/${output_name}" -v -tags cuda -ldflags="-X 'github.com/lilypad-tech/lilypad/cmd/lilypad.VERSION=$(git describe --tags --abbrev=0)' -X 'github.com/lilypad-tech/lilypad/cmd/lilypad.COMMIT_SHA=$(git rev-parse HEAD)'" + + echo "-------------- OS: ${GOOS} : Arch: ${GOARCH} ---------- done" + + - name: Upload binary + uses: actions/upload-artifact@v3 + with: + name: linux-amd64-binary + path: build/linux-amd64/lilypad-linux-amd64 + + - name: Verify Build Output + run: | + ls -la build/linux-amd64 + echo "Build complete" + build_darwin_arm64: + needs: version-sha runs-on: macos-latest #uses M1 - + env: + VERSION: ${{ needs.version-sha.outputs.version }} + SHA: ${{ needs.version-sha.outputs.sha }} steps: - - uses: actions/checkout@v4 - - - name: Set up Go - uses: actions/setup-go@v4 - with: - go-version: '1.22' - - - name: Check architecture - run: uname -m - - - name: Build for darwin/arm64 - env: - GOOS: darwin - GOARCH: arm64 - CGO_ENABLED: 1 - run: | - echo "-------------- OS: ${GOOS} : Arch: ${GOARCH} ---------- start" - output_dir="build/${GOOS}-${GOARCH}" - output_name="lilypad-${GOOS}-${GOARCH}" - mkdir -p "${output_dir}" - - # Debug: Print environment variables for the build - echo "Building for ${GOOS}/${GOARCH} with GOOS=$GOOS, GOARCH=$GOARCH" - - echo "excluding CUDA. specify 'cuda' build tag to include it." - - go build -o "${output_dir}/${output_name}" -v -ldflags="-X 'github.com/lilypad-tech/lilypad/cmd/lilypad.VERSION=$(git describe --tags --abbrev=0)' -X 'github.com/lilypad-tech/lilypad/cmd/lilypad.COMMIT_SHA=$(git rev-parse HEAD)'" - - echo "-------------- OS: ${GOOS} : Arch: ${GOARCH} ---------- done" - - - name: Preview before upload - run: | - ls -la . - ls -la build - ls -la /tmp - - - name: Upload binary - uses: actions/upload-artifact@v4 - with: - name: darwin-arm64-binary - path: build/darwin-arm64/lilypad-darwin-arm64 - - - name: Verify Build Output - run: | - ls -la build/darwin-arm64 - echo "Build complete" + - uses: actions/checkout@v4 + + - name: Show Version and SHA + run: | + echo VERSION: $VERSION + echo SHA: $SHA + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: "1.22" + + - name: Check architecture + run: uname -m + + - name: Build for darwin/arm64 + env: + GOOS: darwin + GOARCH: arm64 + CGO_ENABLED: 1 + run: | + echo "-------------- OS: ${GOOS} : Arch: ${GOARCH} ---------- start" + output_dir="build/${GOOS}-${GOARCH}" + output_name="lilypad-${GOOS}-${GOARCH}" + mkdir -p "${output_dir}" + + # Debug: Print environment variables for the build + echo "Building for ${GOOS}/${GOARCH} with GOOS=$GOOS, GOARCH=$GOARCH" + + echo "excluding CUDA. specify 'cuda' build tag to include it." + + go build -o "${output_dir}/${output_name}" -v -ldflags="-X 'github.com/lilypad-tech/lilypad/cmd/lilypad.VERSION=$(git describe --tags --abbrev=0)' -X 'github.com/lilypad-tech/lilypad/cmd/lilypad.COMMIT_SHA=$(git rev-parse HEAD)'" + + echo "-------------- OS: ${GOOS} : Arch: ${GOARCH} ---------- done" + + - name: Preview before upload + run: | + ls -la . + ls -la build + ls -la /tmp + chmod +x ./build/darwin-arm64/lilypad-darwin-arm64 + ./build/darwin-arm64/lilypad-darwin-arm64 version + + - name: Upload binary + uses: actions/upload-artifact@v4 + with: + name: darwin-arm64-binary + path: build/darwin-arm64/lilypad-darwin-arm64 + + - name: Verify Build Output + run: | + ls -la build/darwin-arm64 + echo "Build complete" build_darwin_amd64: + if: false + needs: version-sha runs-on: macos-13 #uses amd64 steps: - - uses: actions/checkout@v4 - - - name: Set up Go - uses: actions/setup-go@v4 - with: - go-version: '1.22' - - - name: Check architecture - run: uname -m - - - name: Build for darwin/amd64 - env: - GOOS: darwin - GOARCH: amd64 - CGO_ENABLED: 1 - run: | - echo "-------------- OS: ${GOOS} : Arch: ${GOARCH} ---------- start" - output_dir="build/${GOOS}-${GOARCH}" - output_name="lilypad-${GOOS}-${GOARCH}" - mkdir -p "${output_dir}" - - # Debug: Print environment variables for the build - echo "Building for ${GOOS}/${GOARCH} with GOOS=$GOOS, GOARCH=$GOARCH" - - echo "excluding CUDA. specify 'cuda' build tag to include it." - - go build -o "${output_dir}/${output_name}" -v -ldflags="-X 'github.com/lilypad-tech/lilypad/cmd/lilypad.VERSION=$(git describe --tags --abbrev=0)' -X 'github.com/lilypad-tech/lilypad/cmd/lilypad.COMMIT_SHA=$(git rev-parse HEAD)'" - - echo "-------------- OS: ${GOOS} : Arch: ${GOARCH} ---------- done" - - - name: Upload binary - uses: actions/upload-artifact@v3 - with: - name: darwin-amd64-binary - path: build/darwin-amd64/lilypad-darwin-amd64 - - - name: Verify Build Output - run: | - ls -la build/darwin-amd64 - echo "Build complete" + - uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: "1.22" + + - name: Check architecture + run: uname -m + + - name: Build for darwin/amd64 + env: + GOOS: darwin + GOARCH: amd64 + CGO_ENABLED: 1 + run: | + echo "-------------- OS: ${GOOS} : Arch: ${GOARCH} ---------- start" + output_dir="build/${GOOS}-${GOARCH}" + output_name="lilypad-${GOOS}-${GOARCH}" + mkdir -p "${output_dir}" + + # Debug: Print environment variables for the build + echo "Building for ${GOOS}/${GOARCH} with GOOS=$GOOS, GOARCH=$GOARCH" + + echo "excluding CUDA. specify 'cuda' build tag to include it." + + go build -o "${output_dir}/${output_name}" -v -ldflags="-X 'github.com/lilypad-tech/lilypad/cmd/lilypad.VERSION=$(git describe --tags --abbrev=0)' -X 'github.com/lilypad-tech/lilypad/cmd/lilypad.COMMIT_SHA=$(git rev-parse HEAD)'" + + echo "-------------- OS: ${GOOS} : Arch: ${GOARCH} ---------- done" + + - name: Upload binary + uses: actions/upload-artifact@v3 + with: + name: darwin-amd64-binary + path: build/darwin-amd64/lilypad-darwin-amd64 + + - name: Verify Build Output + run: | + ls -la build/darwin-amd64 + echo "Build complete" release: - needs: [build_darwin_amd64, build_darwin_arm64, build_linux_amd64, build_linux_arm64] + if: false + needs: + [ + build_darwin_amd64, + build_darwin_arm64, + build_linux_amd64, + build_linux_arm64, + ] # if: ${{ github.event.workflow_run.head_branch == 'main' }} # Only run this job on the main branch runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - - name: Set up Git - run: | - git fetch --tags - SHORTSHA=$(git rev-parse --short HEAD) - echo "SHORTSHA=${SHORTSHA}" >> $GITHUB_ENV - - - name: Download linux-amd64 binary - uses: actions/download-artifact@v3 - with: - name: linux-amd64-binary - path: ./ - - - name: Download linux-arm64 binary - uses: actions/download-artifact@v3 - with: - name: linux-arm64-binary - path: ./ - - - name: Download darwin-amd64 binary - uses: actions/download-artifact@v3 - with: - name: darwin-amd64-binary - path: ./ - - - name: Download darwin-arm64 binary - uses: actions/download-artifact@v4 - with: - name: darwin-arm64-binary - path: ./ - - - name: Upload Release Asset - darwin-arm64 - uses: softprops/action-gh-release@v2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - files: | - lilypad-darwin-arm64 - lilypad-darwin-amd64 - lilypad-linux-arm64 - lilypad-linux-amd64 - tag_name: v2.0.0-${{ env.SHORTSHA }} - release_name: "Release v2.0.0-${{ env.SHORTSHA }}" - body: "Release v2.0.0-${{ env.SHORTSHA }}" - draft: false - prerelease: false - + - uses: actions/checkout@v4 + + - name: Set up Git + run: | + git fetch --tags + SHORTSHA=$(git rev-parse --short HEAD) + echo "SHORTSHA=${SHORTSHA}" >> $GITHUB_ENV + + - name: Download linux-amd64 binary + uses: actions/download-artifact@v3 + with: + name: linux-amd64-binary + path: ./ + + - name: Download linux-arm64 binary + uses: actions/download-artifact@v3 + with: + name: linux-arm64-binary + path: ./ + + - name: Download darwin-amd64 binary + uses: actions/download-artifact@v3 + with: + name: darwin-amd64-binary + path: ./ + + - name: Download darwin-arm64 binary + uses: actions/download-artifact@v4 + with: + name: darwin-arm64-binary + path: ./ + + - name: Upload Release Asset - darwin-arm64 + uses: softprops/action-gh-release@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + files: | + lilypad-darwin-arm64 + lilypad-darwin-amd64 + lilypad-linux-arm64 + lilypad-linux-amd64 + tag_name: v2.0.0-${{ env.SHORTSHA }} + release_name: "Release v2.0.0-${{ env.SHORTSHA }}" + body: "Release v2.0.0-${{ env.SHORTSHA }}" + draft: false + prerelease: false