pre-release demo #3
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: CI | |
on: | |
workflow_dispatch: | |
inputs: | |
create_release: | |
description: 'Create new release' | |
required: true | |
type: boolean | |
push: | |
branches: | |
- main | |
paths: ['.github/workflows/**', '**/Makefile', '**/*.go', '**/*.json', '**/*.yml', '**/*.ts', '**/*.js'] | |
pull_request: | |
types: [opened, reopened, synchronize] | |
paths: ['.github/workflows/**', '**/Makefile', '**/*.go', '**/*.json', '**/*.yml', '**/*.ts', '**/*.js'] | |
concurrency: | |
group: ci-${{ github.ref }} | |
cancel-in-progress: true | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
Ubuntu-22-x64: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Clone | |
uses: actions/checkout@v4 | |
id: checkout | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.21.x' | |
cache-dependency-path: | | |
launcher/go.sum | |
proxy-router/go.sum | |
- name: Setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
cache: 'yarn' | |
cache-dependency-path: ui-desktop/yarn.lock | |
- name: Install dependencies | |
run: | | |
cd launcher | |
go mod tidy | |
cd ../proxy-router | |
go mod download | |
cd ../ui-desktop | |
yarn install --network-timeout 600000 | |
- name: Build | |
id: build | |
run: | | |
cd launcher | |
make | |
cd ../proxy-router | |
make build | |
cd ../ui-desktop | |
yarn build:linux | |
- name: Determine tag name | |
id: tag | |
run: | | |
SHORT_HASH="$(git rev-parse --short=7 HEAD)" | |
echo "name=${SHORT_HASH}" >> $GITHUB_OUTPUT | |
- name: Pack artifacts | |
id: pack_artifacts | |
run: | | |
ARTIFACT=mor-launch-${{ steps.tag.outputs.name }}-ubuntu-x64.zip | |
LLAMACPP=llama-b2699-bin-ubuntu-x64.zip | |
MODEL=tinyllama-1.1b-chat-v1.0.Q4_K_M.gguf | |
wget -nv https://github.com/ggerganov/llama.cpp/releases/download/b2699/$LLAMACPP | |
wget -nv https://huggingface.co/TheBloke/TinyLlama-1.1B-Chat-v1.0-GGUF/resolve/main/$MODEL | |
unzip -o -j $LLAMACPP build/bin/server | |
echo '{"run":["./server -m ./'$MODEL'","./proxy-router","./ui-desktop-1.0.0.AppImage"]}' > mor-launch.json | |
cp ./proxy-router/.env.example .env | |
zip -j $ARTIFACT ./LICENSE ./launcher/mor-launch server ./proxy-router/bin/proxy-router .env $MODEL mor-launch.json ./ui-desktop/dist/ui-desktop-1.0.0.AppImage | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
path: mor-launch-${{ steps.tag.outputs.name }}-ubuntu-x64.zip | |
name: mor-launch-ubuntu-x64.zip | |
macOS-12-x64: | |
runs-on: macos-12 | |
steps: | |
- name: Clone | |
uses: actions/checkout@v4 | |
id: checkout | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.21.x' | |
cache-dependency-path: | | |
launcher/go.sum | |
proxy-router/go.sum | |
- name: Setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
cache: 'yarn' | |
cache-dependency-path: ui-desktop/yarn.lock | |
- name: Install dependencies | |
run: | | |
cd launcher | |
go mod tidy | |
cd ../proxy-router | |
go mod download | |
cd ../ui-desktop | |
yarn install --network-timeout 600000 | |
- name: Build | |
id: build | |
run: | | |
cd launcher | |
make | |
cd ../proxy-router | |
make build | |
cd ../ui-desktop | |
yarn build:mac | |
- name: Determine tag name | |
id: tag | |
run: | | |
SHORT_HASH="$(git rev-parse --short=7 HEAD)" | |
echo "name=${SHORT_HASH}" >> $GITHUB_OUTPUT | |
- name: Pack artifacts | |
id: pack_artifacts | |
run: | | |
ARTIFACT=mor-launch-${{ steps.tag.outputs.name }}-macos-x64.zip | |
LLAMACPP=llama-b2699-bin-macos-x64.zip | |
MODEL=tinyllama-1.1b-chat-v1.0.Q4_K_M.gguf | |
wget -nv https://github.com/ggerganov/llama.cpp/releases/download/b2699/$LLAMACPP | |
wget -nv https://huggingface.co/TheBloke/TinyLlama-1.1B-Chat-v1.0-GGUF/resolve/main/$MODEL | |
unzip -o -j $LLAMACPP build/bin/server | |
echo '{"run":["./server -m ./'$MODEL'","./proxy-router","./ui-desktop.app/Contents/MacOS/ui-desktop"]}' > mor-launch.json | |
cp ./proxy-router/.env.example .env | |
unzip ./ui-desktop/dist/ui-desktop-1.0.0-mac.zip | |
zip -j $ARTIFACT ./LICENSE ./launcher/mor-launch ./proxy-router/bin/proxy-router .env server $MODEL mor-launch.json | |
zip -r $ARTIFACT ui-desktop.app | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
path: mor-launch-${{ steps.tag.outputs.name }}-macos-x64.zip | |
name: mor-launch-macos-x64.zip | |
macOS-14-arm64: | |
runs-on: macos-14 | |
steps: | |
- name: Clone | |
uses: actions/checkout@v4 | |
id: checkout | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.21.x' | |
cache-dependency-path: | | |
launcher/go.sum | |
proxy-router/go.sum | |
- name: Setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
cache: 'yarn' | |
cache-dependency-path: ui-desktop/yarn.lock | |
- name: Install dependencies | |
run: | | |
cd launcher | |
go mod tidy | |
cd ../proxy-router | |
go mod download | |
cd ../ui-desktop | |
yarn install --network-timeout 600000 | |
- name: Build | |
id: build | |
run: | | |
cd launcher | |
make | |
cd ../proxy-router | |
make build | |
cd ../ui-desktop | |
yarn build:mac | |
- name: Determine tag name | |
id: tag | |
run: | | |
SHORT_HASH="$(git rev-parse --short=7 HEAD)" | |
echo "name=${SHORT_HASH}" >> $GITHUB_OUTPUT | |
- name: Pack artifacts | |
id: pack_artifacts | |
run: | | |
ARTIFACT=mor-launch-${{ steps.tag.outputs.name }}-macos-arm64.zip | |
LLAMACPP=llama-b2699-bin-macos-arm64.zip | |
MODEL=tinyllama-1.1b-chat-v1.0.Q4_K_M.gguf | |
wget -nv https://github.com/ggerganov/llama.cpp/releases/download/b2699/$LLAMACPP | |
wget -nv https://huggingface.co/TheBloke/TinyLlama-1.1B-Chat-v1.0-GGUF/resolve/main/$MODEL | |
unzip -o -j $LLAMACPP build/bin/server | |
echo '{"run":["./server -m ./'$MODEL'","./proxy-router","./ui-desktop.app/Contents/MacOS/ui-desktop"]}' > mor-launch.json | |
cp ./proxy-router/.env.example .env | |
unzip ./ui-desktop/dist/ui-desktop-1.0.0-arm64-mac.zip | |
zip -j $ARTIFACT ./LICENSE ./launcher/mor-launch ./proxy-router/bin/proxy-router .env server $MODEL mor-launch.json | |
zip -r $ARTIFACT ui-desktop.app | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
path: mor-launch-${{ steps.tag.outputs.name }}-macos-arm64.zip | |
name: mor-launch-macos-arm64.zip | |
Windows-avx2-x64: | |
runs-on: windows-latest | |
steps: | |
- name: Clone | |
uses: actions/checkout@v4 | |
id: checkout | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.21.x' | |
cache-dependency-path: | | |
launcher/go.sum | |
proxy-router/go.sum | |
- name: Setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
cache: 'yarn' | |
cache-dependency-path: ui-desktop/yarn.lock | |
- name: Install wget | |
run: | | |
choco install wget --no-progress | |
- name: Install dependencies | |
run: | | |
cd launcher | |
go mod tidy | |
cd ../proxy-router | |
go mod download | |
cd ../ui-desktop | |
yarn install --network-timeout 600000 | |
- name: Build | |
id: build | |
run: | | |
cd launcher | |
make | |
cd ../proxy-router | |
make build | |
cd ../ui-desktop | |
yarn build:win | |
- name: Determine tag name | |
id: tag | |
run: | | |
SHORT_HASH="$(git rev-parse --short=7 HEAD)" | |
echo "name=${SHORT_HASH}" >> $GITHUB_OUTPUT | |
- name: Pack artifacts | |
id: pack_artifacts | |
run: | | |
ARTIFACT=mor-launch-${{ steps.tag.outputs.name }}-win-x64.zip | |
LLAMACPP=llama-b2699-bin-win-avx2-x64.zip | |
MODEL=tinyllama-1.1b-chat-v1.0.Q4_K_M.gguf | |
wget -nv https://github.com/ggerganov/llama.cpp/releases/download/b2699/$LLAMACPP | |
wget -nv https://huggingface.co/TheBloke/TinyLlama-1.1B-Chat-v1.0-GGUF/resolve/main/$MODEL | |
unzip -o -j $LLAMACPP server.exe llama.dll | |
echo '{"run":["./server.exe -m ./'$MODEL'","./proxy-router.exe","./ui-desktop-1.0.0.exe"]}' > mor-launch.json | |
cp ./proxy-router/.env.example .env | |
mv ./proxy-router/bin/proxy-router proxy-router.exe | |
mv ./launcher/mor-launch mor-launch.exe | |
mv "./ui-desktop/dist/ui-desktop 1.0.0.exe" ui-desktop-1.0.0.exe | |
7z a $ARTIFACT LICENSE mor-launch.exe proxy-router.exe .env server.exe llama.dll $MODEL mor-launch.json ui-desktop-1.0.0.exe | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
path: mor-launch-${{ steps.tag.outputs.name }}-win-x64.zip | |
name: mor-launch-win-x64.zip | |
release: | |
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/main' ) || github.event.inputs.create_release == 'true' }} | |
runs-on: ubuntu-latest | |
needs: | |
- Ubuntu-22-x64 | |
- macOS-12-x64 | |
- macOS-14-arm64 | |
- Windows-avx2-x64 | |
steps: | |
- name: Clone | |
id: checkout | |
uses: actions/checkout@v4 | |
- name: Determine tag name | |
id: tag | |
run: | | |
SHORT_HASH="$(git rev-parse --short=7 HEAD)" | |
echo "name=${SHORT_HASH}" >> $GITHUB_OUTPUT | |
- name: Download artifacts | |
id: download-artifact | |
uses: actions/download-artifact@v4 | |
with: | |
path: ./artifact | |
- name: Move artifacts | |
id: move_artifacts | |
run: | | |
mkdir -p ./artifact/release | |
mv ./artifact/*/*.zip ./artifact/release | |
- name: Create release | |
id: create_release | |
uses: anzz1/action-create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ steps.tag.outputs.name }} | |
- name: Upload release | |
id: upload_release | |
uses: actions/github-script@v3 | |
with: | |
github-token: ${{secrets.GITHUB_TOKEN}} | |
script: | | |
const path = require('path'); | |
const fs = require('fs'); | |
const release_id = '${{ steps.create_release.outputs.id }}'; | |
for (let file of await fs.readdirSync('./artifact/release')) { | |
if (path.extname(file) === '.zip') { | |
console.log('uploadReleaseAsset', file); | |
await github.repos.uploadReleaseAsset({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
release_id: release_id, | |
name: file, | |
data: await fs.readFileSync(`./artifact/release/${file}`) | |
}); | |
} | |
} | |