build: Add version and SHA #30
This file contains 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: 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 | |
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" | |
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" | |
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: 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" | |
release: | |
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 |