Skip to content

remove exit code testing from regular CI runs #106

remove exit code testing from regular CI runs

remove exit code testing from regular CI runs #106

Workflow file for this run

name: macOS CI
on:
push:
branches:
- master
pull_request:
branches:
- master
workflow_dispatch:
permissions:
contents: read
concurrency:
group: macos-ci-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
name: macOS build test
runs-on: macos-latest
env:
CLIPP_CACHE_DIR: ${{ github.workspace }}/clipp-cache
VCPKG_ROOT: ${{ github.workspace }}/v
VCPKG_DEFAULT_BINARY_CACHE: ${{ github.workspace }}/vcpkg-cache
VCPKG_BINARY_SOURCES: clear;files,${{ github.workspace }}/vcpkg-cache,readwrite
steps:
- name: Checkout clipp
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Install build dependencies
run: brew install autoconf autoconf-archive automake libtool ninja
- name: Read vcpkg baseline
id: vcpkg-baseline
run: |
baseline="$(python3 - <<'PY'
import json
with open("src/vcpkg.json", encoding="utf-8") as manifest_file:
manifest = json.load(manifest_file)
print(manifest.get("builtin-baseline", ""))
PY
)"
if [[ -z "$baseline" ]]; then
echo "src/vcpkg.json must define builtin-baseline for CI." >&2
exit 1
fi
echo "ref=$baseline" >> "$GITHUB_OUTPUT"
- name: Checkout vcpkg
run: |
git clone --no-tags https://github.com/microsoft/vcpkg.git "$VCPKG_ROOT"
git -C "$VCPKG_ROOT" checkout --detach "${{ steps.vcpkg-baseline.outputs.ref }}"
- name: Bootstrap vcpkg
run: |
"$VCPKG_ROOT/bootstrap-vcpkg.sh" -disableMetrics
- name: Prepare vcpkg binary cache
run: mkdir -p "$VCPKG_DEFAULT_BINARY_CACHE"
- name: Cache vcpkg binaries
uses: actions/cache@v5
with:
path: vcpkg-cache
key: ${{ runner.os }}-${{ runner.arch }}-vcpkg-${{ hashFiles('src/vcpkg.json', 'src/vcpkg-triplets/**') }}
restore-keys: |
${{ runner.os }}-${{ runner.arch }}-vcpkg-
- name: Build Release
run: ./scripts/build_macos.sh
- name: Verify macOS app bundle
run: |
app="$(find build -name 'clipp.app' -type d -print -quit)"
if [[ -z "$app" ]]; then
echo "Could not find clipp.app under build/." >&2
find build -print | sed -n '1,160p'
exit 1
fi
echo "Verifying app bundle: $app"
find "$app/Contents" -print | sed -n '1,160p'
for path in \
"$app/Contents/MacOS/clipp" \
"$app/Contents/Resources/Clipp.icns" \
"$app/Contents/Resources/ClippMenuBarTemplate.png" \
"$app/Contents/Resources/ClippAbout.png" \
"$app/Contents/Info.plist"
do
if [[ ! -e "$path" ]]; then
echo "Missing expected bundle path: $path" >&2
exit 1
fi
done
if [[ ! -x "$app/Contents/MacOS/clipp" ]]; then
echo "App executable is not executable: $app/Contents/MacOS/clipp" >&2
ls -l "$app/Contents/MacOS"
exit 1
fi
icon_file="$(plutil -extract CFBundleIconFile raw "$app/Contents/Info.plist")"
if [[ "$icon_file" != "Clipp.icns" ]]; then
echo "Expected CFBundleIconFile to be Clipp.icns, got '$icon_file'." >&2
exit 1
fi