Skip to content

Refactor CICD: change trigger by tag and add release note template #25

Refactor CICD: change trigger by tag and add release note template

Refactor CICD: change trigger by tag and add release note template #25

Workflow file for this run

name: CI
on:
push:
branches:
- main
tags: ['v*.*.*']
paths: ['.github/workflows/**', '**/CMakeLists.txt', '**/Makefile', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp', '**/*.cu']
pull_request:
types: [opened, synchronize, reopened]
paths: ['**/CMakeLists.txt', '**/Makefile', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp', '**/*.cu']
env:
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
jobs:
ubuntu-amd64-build:
runs-on: ubuntu-20.04
permissions:
contents: write
steps:
- name: Clone
id: checkout
uses: actions/checkout@v3
with:
submodules: recursive
- name: Dependencies
id: depends
run: |
sudo apt-get update
sudo apt-get install build-essential gcc-8
- name: Build
id: make_build
run: |
./install_deps.sh
mkdir build && cd build
cmake ..
CC=gcc-8 make -j $(nproc)
ls -la
- name: Extract branch name
shell: bash
id: extract_branch
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
- name: Extract commit short SHA
id: extract_commit_id
run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
- name: Package
shell: bash
run: |
mkdir -p nitro && mkdir -p nitro/config
cp config.json nitro/config/
cp build/nitro nitro/
zip -r nitro.zip nitro
- name: Upload binaries to release
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
run: |
RELEASE_ID=$(gh release view "${GITHUB_REF#refs/tags/v}" --repo ${{ github.repository }} -q ".id" || echo "")
if [[ -z "$RELEASE_ID" ]]; then
gh release create \
"${GITHUB_REF#refs/tags/v}" \
--repo ${{ github.repository }} \
--title "${GITHUB_REF#refs/tags/v}" \
--notes "Release notes for ${GITHUB_REF#refs/tags/v}" \
--draft || true
fi
mv nitro.zip nitro-${{ steps.extract_commit_id.outputs.sha_short }}-linux-amd64.zip
gh release upload "${GITHUB_REF#refs/tags/v}" nitro-${{ steps.extract_commit_id.outputs.sha_short }}-linux-amd64.zip --repo ${{ github.repository }} --clobber
ubuntu-amd64-cuda-build:
runs-on: linux-gpu
permissions:
contents: write
steps:
- name: Clone
id: checkout
uses: actions/checkout@v3
with:
submodules: recursive
# - name: Dependencies
# id: depends
# run: |
# sudo apt-get update
# sudo apt-get install build-essential gcc-8 uuid-dev
- name: Build
id: make_build
run: |
./install_deps.sh
mkdir build && cd build
cmake -DLLAMA_CUBLAS=ON ..
CC=gcc-8 make -j $(nproc)
ls -la
- name: Extract branch name
shell: bash
id: extract_branch
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
- name: Extract commit short SHA
id: extract_commit_id
run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
- name: Package
shell: bash
run: |
mkdir -p nitro && mkdir -p nitro/config
cp config.json nitro/config/
cp build/nitro nitro/
zip -r nitro.zip nitro
- name: Upload binaries to release
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
run: |
RELEASE_ID=$(gh release view "${GITHUB_REF#refs/tags/v}" --repo ${{ github.repository }} -q ".id" || echo "")
if [[ -z "$RELEASE_ID" ]]; then
gh release create \
"${GITHUB_REF#refs/tags/v}" \
--repo ${{ github.repository }} \
--title "${GITHUB_REF#refs/tags/v}" \
--notes "Release notes for ${GITHUB_REF#refs/tags/v}" \
--draft || true
fi
mv nitro.zip nitro-${{ steps.extract_commit_id.outputs.sha_short }}-linux-amd64-cuda.zip
gh release upload "${GITHUB_REF#refs/tags/v}" nitro-${{ steps.extract_commit_id.outputs.sha_short }}-linux-amd64-cuda.zip --repo ${{ github.repository }} --clobber
macOS-M-build:
runs-on: mac-silicon
permissions:
contents: write
steps:
- name: Clone
id: checkout
uses: actions/checkout@v3
with:
submodules: recursive
- name: Dependencies
id: depends
continue-on-error: true
run: |
brew update
brew install cmake gcc@8
- name: Build
id: cmake_build
run: |
./install_deps.sh
mkdir build && cd build
cmake ..
CC=gcc-8 make -j $(nproc)
ls -la
- name: Extract branch name
shell: bash
id: extract_branch
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
- name: Extract commit short SHA
id: extract_commit_id
run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
- name: Package
shell: bash
run: |
mkdir -p nitro && mkdir -p nitro/config
cp config.json nitro/config/
cp llama.cpp/ggml-metal.h nitro/
cp build/nitro nitro/
zip -r nitro.zip nitro
- name: Upload binaries to release
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
run: |
RELEASE_ID=$(gh release view "${GITHUB_REF#refs/tags/v}" --repo ${{ github.repository }} -q ".id" || echo "")
if [[ -z "$RELEASE_ID" ]]; then
gh release create \
"${GITHUB_REF#refs/tags/v}" \
--repo ${{ github.repository }} \
--title "${GITHUB_REF#refs/tags/v}" \
--notes "Release notes for ${GITHUB_REF#refs/tags/v}" \
--draft || true
fi
mv nitro.zip nitro-${{ steps.extract_commit_id.outputs.sha_short }}-mac-arm64.zip
gh release upload "${GITHUB_REF#refs/tags/v}" nitro-${{ steps.extract_commit_id.outputs.sha_short }}-mac-arm64.zip --repo ${{ github.repository }} --clobber
macOS-Intel-build:
runs-on: macos-latest
permissions:
contents: write
steps:
- name: Clone
id: checkout
uses: actions/checkout@v3
with:
submodules: recursive
- name: Dependencies
id: depends
continue-on-error: true
run: |
brew update
- name: Build
id: cmake_build
run: |
./install_deps.sh
mkdir build && cd build
cmake -DLLAMA_METAL=OFF ..
CC=gcc-8 make -j $(nproc)
ls -la
- name: Extract branch name
shell: bash
id: extract_branch
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
- name: Extract commit short SHA
id: extract_commit_id
run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
- name: Package
shell: bash
run: |
mkdir -p nitro && mkdir -p nitro/config
cp config.json nitro/config/
cp build/nitro nitro/
zip -r nitro.zip nitro
- name: Upload binaries to release
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
run: |
RELEASE_ID=$(gh release view "${GITHUB_REF#refs/tags/v}" --repo ${{ github.repository }} -q ".id" || echo "")
if [[ -z "$RELEASE_ID" ]]; then
gh release create \
"${GITHUB_REF#refs/tags/v}" \
--repo ${{ github.repository }} \
--title "${GITHUB_REF#refs/tags/v}" \
--notes "Release notes for ${GITHUB_REF#refs/tags/v}" \
--draft || true
fi
mv nitro.zip nitro-${{ steps.extract_commit_id.outputs.sha_short }}-mac-amd64.zip
gh release upload "${GITHUB_REF#refs/tags/v}" nitro-${{ steps.extract_commit_id.outputs.sha_short }}-mac-amd64.zip --repo ${{ github.repository }} --clobber
update_release_draft:
needs: [ubuntu-amd64-build, ubuntu-amd64-cuda-build, macOS-M-build, macOS-Intel-build]
permissions:
# write permission is required to create a github release
contents: write
# write permission is required for autolabeler
# otherwise, read permission is required at least
pull-requests: write
runs-on: ubuntu-latest
steps:
# (Optional) GitHub Enterprise requires GHE_HOST variable set
#- name: Set GHE_HOST
# run: |
# echo "GHE_HOST=${GITHUB_SERVER_URL##https:\/\/}" >> $GITHUB_ENV
# Drafts your next Release notes as Pull Requests are merged into "master"
- uses: release-drafter/release-drafter@v5
# (Optional) specify config name to use, relative to .github/. Default: release-drafter.yml
# with:
# config-name: my-config.yml
# disable-autolabeler: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}