CI - Fix IF Syntax (macOS) #2
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
# https://webui.me | ||
# https://github.com/webui-dev/webui | ||
# Copyright (c) 2020-2024 Hassan Draga. | ||
# Licensed under MIT License. | ||
# All rights reserved. | ||
# Canada. | ||
# | ||
# Special Thanks to Turiiya (https://github.com/ttytm) | ||
name: macOS | ||
on: | ||
workflow_call: | ||
jobs: | ||
setup: | ||
runs-on: macos-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Bundle WebUI Bridge | ||
run: | | ||
npm i -g esbuild | ||
chmod +x bridge/build.sh | ||
bridge/build.sh | ||
- uses: actions/cache@v4 | ||
with: | ||
path: bridge/webui_bridge.h | ||
key: ${{ runner.os }}-${{ github.sha }}-bridge | ||
build: | ||
needs: setup | ||
runs-on: macos-latest | ||
permissions: | ||
contents: write | ||
strategy: | ||
matrix: | ||
cc: [clang] | ||
arch: [x64, arm64] | ||
fail-fast: false | ||
env: | ||
ARTIFACT: webui-macos-${{ matrix.cc }}-${{ matrix.arch }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/cache/restore@v4 | ||
with: | ||
path: bridge/webui_bridge.h | ||
key: ${{ runner.os }}-${{ github.sha }}-bridge | ||
fail-on-cache-miss: true | ||
- name: Setup OpenSSL | ||
run: | | ||
if [[ "${{ matrix.arch }}" == "x64" ]]; then | ||
HOMEBREW_X64_PATH="/usr/local/bin/brew" | ||
arch -arm64 brew uninstall [email protected] || true | ||
arch -x86_64 $HOMEBREW_X64_PATH install [email protected] | ||
echo "WEBUI_TLS_INCLUDE=$($HOMEBREW_X64_PATH --prefix [email protected])/include/" >> $GITHUB_ENV | ||
echo "WEBUI_TLS_LIB=$($HOMEBREW_X64_PATH --prefix [email protected])/lib/" >> $GITHUB_ENV | ||
else | ||
brew install [email protected] | ||
echo "WEBUI_TLS_INCLUDE=$(brew --prefix [email protected])/include/" >> $GITHUB_ENV | ||
echo "WEBUI_TLS_LIB=$(brew --prefix [email protected])/lib/" >> $GITHUB_ENV | ||
fi | ||
- name: Build Debug Target | ||
run: make ARCH_TARGET=${{ matrix.arch }} debug | ||
- name: Build Release Target | ||
if: ${{ !cancelled() }} | ||
run: make ARCH_TARGET=${{ matrix.arch }} | ||
- name: Build TLS Debug Target | ||
run: make ARCH_TARGET=${{ matrix.arch }} WEBUI_USE_TLS=1 debug | ||
- name: Build TLS Release Target | ||
run: make ARCH_TARGET=${{ matrix.arch }} WEBUI_USE_TLS=1 | ||
- name: Build examples | ||
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 ARCH_TARGET=${{ matrix.arch }}; 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 | ||
- name: Prepare Artifacts | ||
run: | | ||
cp -r include dist | ||
mv dist/ "$ARTIFACT" | ||
- name: Upload Artifact | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: ${{ env.ARTIFACT }} | ||
path: ${{ env.ARTIFACT }} | ||
- name: Prepare Release | ||
if: > | ||
github.repository_owner == 'webui-dev' | ||
&& (github.ref_type == 'tag' || (github.ref_name == 'main' && github.event_name == 'push')) | ||
run: | | ||
zip -r "$ARTIFACT.zip" "$ARTIFACT" | ||
if [ $GITHUB_REF_TYPE == tag ]; then | ||
echo "TAG=$GITHUB_REF_NAME" >> $GITHUB_ENV | ||
else | ||
{ | ||
echo "IS_PRERELEASE=true"; | ||
echo "TAG=nightly"; | ||
echo "TITLE=WebUI Nightly Build $(date -u +'%Y-%m-%d %H:%M:%S UTC')" | ||
echo "BODY=Generated from commit $GITHUB_SHA." | ||
} >> $GITHUB_ENV | ||
fi | ||
- name: Update Nightly Tag | ||
if: env.IS_PRERELEASE | ||
uses: richardsimko/update-tag@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
tag_name: nightly | ||
- name: Release | ||
if: > | ||
github.repository_owner == 'webui-dev' | ||
&& (github.ref_type == 'tag' || (github.ref_name == 'main' && github.event_name == 'push')) | ||
uses: ncipollo/release-action@v1 | ||
with: | ||
artifacts: ${{ env.ARTIFACT }}.zip | ||
tag: ${{ env.TAG }} | ||
body: ${{ env.BODY }} | ||
name: ${{ env.TITLE }} | ||
prerelease: ${{ env.IS_PRERELEASE }} | ||
allowUpdates: true |