solanaceae_ecosystem/.github/workflows/cd.yml

179 lines
5.2 KiB
YAML
Raw Permalink Normal View History

2023-08-03 21:17:34 +02:00
name: ContinuousDelivery
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
env:
BUILD_TYPE: RelWithDebInfo
2024-01-19 12:19:09 +01:00
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
2023-08-03 21:17:34 +02:00
jobs:
2023-12-03 17:16:00 +01:00
linux-ubuntu:
timeout-minutes: 10
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
2023-12-03 17:16:00 +01:00
with:
submodules: recursive
- name: Install Dependencies
run: sudo apt update && sudo apt -y install libsodium-dev
- name: Configure CMake
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j 4
2024-01-19 12:19:09 +01:00
- name: Determine tag name
id: tag
shell: bash
# taken from llama.cpp
run: |
SHORT_HASH="$(git rev-parse --short=7 HEAD)"
if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then
echo "name=dev-${SHORT_HASH}" >> $GITHUB_OUTPUT
2024-01-19 12:19:09 +01:00
else
SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-')
echo "name=dev-${SAFE_NAME}-${SHORT_HASH}" >> $GITHUB_OUTPUT
2024-01-19 12:19:09 +01:00
fi
2024-01-19 13:13:38 +01:00
- name: Compress artifacts
shell: bash
run: |
tar -czvf ${{ github.event.repository.name }}-${{ steps.tag.outputs.name }}-${{ runner.os }}-ubuntu20.04-x86_64.tar.gz -C ${{github.workspace}}/build/bin/ .
- uses: actions/upload-artifact@v4
2023-12-03 17:16:00 +01:00
with:
2024-01-19 13:13:38 +01:00
# TODO: simpler name?
2024-01-19 12:19:09 +01:00
name: ${{ github.event.repository.name }}-${{ steps.tag.outputs.name }}-${{ runner.os }}-ubuntu20.04-x86_64
2023-12-03 17:16:00 +01:00
# TODO: do propper packing
path: |
2024-01-19 13:13:38 +01:00
${{github.workspace}}/${{ github.event.repository.name }}-${{ steps.tag.outputs.name }}-${{ runner.os }}-ubuntu20.04-x86_64.tar.gz
2023-12-03 17:16:00 +01:00
2023-08-03 21:17:34 +02:00
windows:
timeout-minutes: 15
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
2023-08-03 21:17:34 +02:00
with:
submodules: recursive
2024-05-28 09:29:42 +02:00
- name: update vcpkg
shell: bash
run: |
cd C:/vcpkg
git pull
2023-08-03 21:17:34 +02:00
- name: Install Dependencies
run: vcpkg install libsodium:x64-windows-static pthreads:x64-windows-static
# setup vs env
- uses: ilammy/msvc-dev-cmd@v1
with:
arch: amd64
- name: Configure CMake
run: cmake -G Ninja -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static
- name: Build
2024-01-19 12:19:09 +01:00
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
- name: Determine tag name
id: tag
shell: bash
# taken from llama.cpp
run: |
SHORT_HASH="$(git rev-parse --short=7 HEAD)"
if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then
echo "name=dev-${SHORT_HASH}" >> $GITHUB_OUTPUT
2024-01-19 12:19:09 +01:00
else
SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-')
echo "name=dev-${SAFE_NAME}-${SHORT_HASH}" >> $GITHUB_OUTPUT
2024-01-19 12:19:09 +01:00
fi
2023-08-03 21:17:34 +02:00
2024-07-15 09:36:38 +02:00
- name: Clean temporary artifacts
# msvc sometimes produces .ilk files, which are used for linking only
shell: powershell
run: |
Remove-Item "${{github.workspace}}/build/bin/*.ilk"
2024-01-19 13:13:38 +01:00
- name: Compress artifacts
shell: powershell
run: |
Compress-Archive -Path ${{github.workspace}}/build/bin/* -Destination ${{ github.event.repository.name }}-${{ steps.tag.outputs.name }}-${{ runner.os }}-msvc-x86_64.zip
- uses: actions/upload-artifact@v4
2023-08-03 21:17:34 +02:00
with:
2024-01-19 13:13:38 +01:00
# TODO: simpler name?
2024-01-19 12:19:09 +01:00
name: ${{ github.event.repository.name }}-${{ steps.tag.outputs.name }}-${{ runner.os }}-msvc-x86_64
2023-08-03 21:17:34 +02:00
# TODO: do propper packing
path: |
2024-01-19 13:13:38 +01:00
${{github.workspace}}/${{ github.event.repository.name }}-${{ steps.tag.outputs.name }}-${{ runner.os }}-msvc-x86_64.zip
2023-08-03 21:17:34 +02:00
2024-01-19 12:19:09 +01:00
release:
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) }}
runs-on: ubuntu-latest
needs:
- linux-ubuntu
- windows
permissions:
contents: write
steps:
- uses: actions/checkout@v4
2024-01-19 12:19:09 +01:00
with:
submodules: recursive
- name: Determine tag name
id: tag
shell: bash
# taken from llama.cpp
run: |
SHORT_HASH="$(git rev-parse --short=7 HEAD)"
if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then
echo "name=dev-${SHORT_HASH}" >> $GITHUB_OUTPUT
2024-01-19 12:19:09 +01:00
else
SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-')
echo "name=dev-${SAFE_NAME}-${SHORT_HASH}" >> $GITHUB_OUTPUT
2024-01-19 12:19:09 +01:00
fi
- name: Download artifacts
id: download-artifact
2024-01-19 13:13:38 +01:00
uses: actions/download-artifact@v4
with:
path: ./artifacts/
2024-01-19 12:19:09 +01:00
- name: Create release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ steps.tag.outputs.name }}
shell: bash
run: |
gh release create "$tag" \
--repo="$GITHUB_REPOSITORY" \
2024-01-19 13:13:38 +01:00
--title="nightly ${tag#v}" \
--notes="nightly build" \
2024-01-19 12:19:09 +01:00
--prerelease
- name: Upload artifacts
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ steps.tag.outputs.name }}
shell: bash
run: |
2024-01-19 13:13:38 +01:00
ls -laR ./artifacts
gh release upload "$tag" ./artifacts/*/* \
2024-01-19 12:19:09 +01:00
--repo="$GITHUB_REPOSITORY"