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 openssl@1.1 || true | ||
arch -x86_64 $HOMEBREW_X64_PATH install openssl@1.1 | ||
echo "WEBUI_TLS_INCLUDE=$($HOMEBREW_X64_PATH --prefix openssl@1.1)/include/" >> $GITHUB_ENV | ||
echo "WEBUI_TLS_LIB=$($HOMEBREW_X64_PATH --prefix openssl@1.1)/lib/" >> $GITHUB_ENV | ||
else | ||
brew install openssl@1.1 | ||
echo "WEBUI_TLS_INCLUDE=$(brew --prefix openssl@1.1)/include/" >> $GITHUB_ENV | ||
echo "WEBUI_TLS_LIB=$(brew --prefix openssl@1.1)/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 |