webui/.github/workflows/linux.yml

133 lines
4.1 KiB
YAML
Raw Normal View History

2023-09-11 23:56:55 +03:00
# http://webui.me
# https://github.com/webui-dev/webui
2024-05-27 02:52:59 +03:00
# Copyright (c) 2020-2024 Hassan Draga.
2023-09-11 23:56:55 +03:00
# Licensed under MIT License.
# All rights reserved.
#
# Special Thanks to Turiiya (https://github.com/ttytm)
2023-08-25 21:38:49 +03:00
name: Linux
on:
workflow_call:
jobs:
setup:
runs-on: ubuntu-20.04
2023-08-25 21:38:49 +03:00
steps:
2024-05-26 06:46:17 +03:00
- uses: actions/checkout@v4
2023-08-25 21:38:49 +03:00
- name: Bundle WebUI Bridge
run: |
npm i -g esbuild
2023-08-26 16:18:22 +03:00
chmod +x bridge/build.sh
2023-08-25 21:38:49 +03:00
bridge/build.sh
2024-05-26 06:46:17 +03:00
- uses: actions/cache@v4
2023-08-25 21:38:49 +03:00
with:
path: bridge/webui_bridge.h
key: ${{ runner.os }}-${{ github.sha }}-bridge
2023-08-31 20:40:21 +03:00
build:
2023-08-25 21:38:49 +03:00
needs: setup
runs-on: ubuntu-latest
permissions:
contents: write
strategy:
matrix:
include:
- cc: gcc
arch: x64
- cc: gcc
arch: arm64
- cc: gcc
arch: arm
- cc: clang
arch: x64
2023-08-25 21:38:49 +03:00
fail-fast: false
env:
ARTIFACT: webui-linux-${{ matrix.cc }}-${{ matrix.arch }}
2023-08-25 21:38:49 +03:00
steps:
2024-05-26 06:46:17 +03:00
- uses: actions/checkout@v4
- uses: actions/cache/restore@v4
2023-08-25 21:38:49 +03:00
with:
path: bridge/webui_bridge.h
key: ${{ runner.os }}-${{ github.sha }}-bridge
fail-on-cache-miss: true
- name: Setup
2023-09-09 16:19:25 +03:00
run: |
CC=${{ matrix.cc }}
if [ "${{ matrix.cc }}" == "clang" ]; then
sudo ln -s llvm-ar-14 /usr/bin/llvm-ar
sudo ln -s llvm-ranlib-14 /usr/bin/llvm-ranlib
sudo ln -s llvm-strip-14 /usr/bin/llvm-strip
elif [ "${{ matrix.arch }}" == "arm64" ]; then
sudo apt install gcc-aarch64-linux-gnu
CC=aarch64-linux-gnu-gcc
elif [ "${{ matrix.arch }}" == "arm" ]; then
sudo apt install gcc-arm-linux-gnueabihf
CC=arm-linux-gnueabihf-gcc
fi
echo "CC=$CC" >> $GITHUB_ENV
2023-09-09 16:19:25 +03:00
- name: Build Debug Target
run: make CC="$CC" debug
2023-09-09 16:19:25 +03:00
- name: Build Release Target
if: ${{ !cancelled() }}
run: make CC="$CC"
- name: Build examples
if: matrix.arch == 'x64'
run: |
examples_base_dir=$(pwd)/examples/C
for example in $(find $examples_base_dir/* -maxdepth 0 -type d); do
echo "> $example"
cd $example || (exit_code=1 && continue)
if ! make CC="$CC"; then
echo "Failed to build '$example'"
exit_code=1
continue
fi
if [[ ! -e "main" || ! -e "main-dyn" ]] ; then
echo "Failed to find executable for '$example'" && find .
exit_code=1
continue
fi
done
exit $exit_code
2023-08-25 21:38:49 +03:00
- name: Prepare Artifact
run: |
cp -r include dist
mv dist/ "$ARTIFACT"
2023-08-25 21:38:49 +03:00
- name: Upload Artifact
2024-05-26 06:46:17 +03:00
uses: actions/upload-artifact@v4
2023-08-25 21:38:49 +03:00
with:
name: ${{ env.ARTIFACT }}
path: ${{ env.ARTIFACT }}
2023-09-12 06:24:33 +03:00
- name: Prepare Release
if: github.repository_owner == 'webui-dev' && github.ref_name == 'main' && github.event_name == 'push'
2023-09-12 06:24:33 +03:00
run: |
zip -r "$ARTIFACT.zip" "$ARTIFACT"
2023-09-12 06:24:33 +03:00
if [ $GITHUB_REF_TYPE == tag ]; then
echo "TAG=$GITHUB_REF_NAME" >> $GITHUB_ENV
else
{
echo "IS_PRERELEASE=true";
echo "TAG=nightly";
2024-06-13 16:08:29 +03:00
echo "TITLE=WebUI Nightly Build $(date -u +'%Y-%m-%d %H:%M:%S UTC')"
echo "BODY=Generated from commit $GITHUB_SHA."
} >> $GITHUB_ENV
2023-09-12 06:24:33 +03:00
fi
- name: Update Nightly Tag
if: env.IS_PRERELEASE
uses: richardsimko/update-tag@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: nightly
2023-09-09 16:19:25 +03:00
- name: Release
if: github.repository_owner == 'webui-dev' && github.ref_name == 'main' && github.event_name == 'push'
2023-09-12 06:24:33 +03:00
uses: ncipollo/release-action@v1
2023-08-25 21:38:49 +03:00
with:
2023-11-21 23:16:25 +03:00
artifacts: ${{ env.ARTIFACT }}.zip
2023-09-12 06:24:33 +03:00
tag: ${{ env.TAG }}
body: ${{ env.BODY }}
name: ${{ env.TITLE }}
prerelease: ${{ env.IS_PRERELEASE }}
allowUpdates: true