Skip to content

Commit

Permalink
Build and publish binaries (#116)
Browse files Browse the repository at this point in the history
* add build exe workflow file

* install openssl

* fix typo

* convert openssl step to bash

* set openssl env-vars

* use choco install for windows packages

* add openssl envs to build step

* add openssl paths to matrix for each os/arch

* add openssl_dir

* fix typo

* add PKG_CONFIG_PATH

* fix typo

* use choco install for windows packages

* build cargo withour actions-rs

* install gcc-aarch64-linux-gnu

* openssl_dir as /usr/local/ssl

* actions-rs use-cross

* use houseabsolute/actions-rust-cross

* build for macos/linux

* build for macos arm64

* build for macos amd64

* build for macos and linux

* update latest release with assets

* build windows-amd64

* build windows-arm64

* use nightly for windows-arm64

* build linux-arm64 with prebuilt openssl installation

* use linker rust-lld

* add exes to v0.2.0

* update ollama-workflows

* fix typo

* remove linker

* build for macos and linux all archs

* ollama update

* tar.gz instead of zip

* change asset names

* publish exe instead of tar

* publish binaries for macos and linux

* windows build

* fix typo

* trigger workflow on release creation
  • Loading branch information
selimseker authored Sep 9, 2024
1 parent 143dc3e commit 3b909ab
Show file tree
Hide file tree
Showing 2 changed files with 98 additions and 0 deletions.
93 changes: 93 additions & 0 deletions .github/workflows/build_prod_exe.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
name: Build and Publish Compute Releases

on:
release:
types: [published]

permissions:
contents: write

jobs:

build:
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- { runner: macos-latest, osname: macOS, arch: amd64, target: x86_64-apple-darwin, command: build }
- { runner: macos-latest, osname: macOS, arch: arm64, target: aarch64-apple-darwin, command: build }
- { runner: ubuntu-latest, osname: linux, arch: amd64, target: x86_64-unknown-linux-gnu, command: build }
- { runner: ubuntu-latest, osname: linux, arch: arm64, target: aarch64-unknown-linux-gnu, command: build, build_args: --no-default-features }
- { runner: windows-latest, osname: windows, arch: amd64, target: x86_64-pc-windows-msvc, command: build, extension: ".exe" }
# - { runner: windows-latest, osname: windows, arch: arm64, target: aarch64-pc-windows-msvc, command: build, extension: ".exe", toolchain: nightly }

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Get the release version from the tag
shell: bash
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV

- name: Build binary
uses: houseabsolute/actions-rust-cross@v0
with:
command: ${{ matrix.command }}
target: ${{ matrix.target }}
args: "--locked --release ${{ matrix.build_args }}"
strip: true

- name: Prepare Release File
run: |
# move the binary
mv target/${{ matrix.target }}/release/dkn-compute${{ matrix.extension }} ./dkn-compute-binary-${{ matrix.osname }}-${{ matrix.arch }}${{ matrix.extension }}
- name: Upload Launch Artifacts
uses: actions/upload-artifact@v4
with:
name: dkn-compute-binary-${{ matrix.osname }}-${{ matrix.arch }}
path: dkn-compute-binary-${{ matrix.osname }}-${{ matrix.arch }}${{ matrix.extension }}


release:
needs: build
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0 # Fetch all tags and history

- name: Download Launch Artifacts
uses: actions/download-artifact@v4
with:
merge-multiple: true
path: ./artifacts

- name: Get the latest tag
id: get_latest_tag
run: |
# latest release tag
LATEST_TAG=$(git describe --tags $(git rev-list --tags --max-count=1) 2>/dev/null || echo "untagged")
echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_ENV
# latest release name
LATEST_RELEASE=$(curl -s \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/${{ github.repository }}/releases/latest | jq -r '.name // "no-release-found"')
echo "LATEST_RELEASE=$LATEST_RELEASE" >> $GITHUB_ENV
echo "Latest Tag: $LATEST_TAG"
echo "Latest Release: $LATEST_RELEASE"
- name: Create release with artifacts
uses: ncipollo/release-action@v1
with:
name: ${{ env.LATEST_RELEASE }}
tag: ${{ env.LATEST_TAG }}
artifacts: "artifacts/*"
artifactContentType: application/octet-stream
allowUpdates: true
# draft: true
5 changes: 5 additions & 0 deletions Cross.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[target.aarch64-unknown-linux-gnu]
pre-build = [
"dpkg --add-architecture $CROSS_DEB_ARCH",
"apt-get update && apt-get install --assume-yes libssl-dev:$CROSS_DEB_ARCH"
]

0 comments on commit 3b909ab

Please sign in to comment.