Skip to content

Updated GitHub Actions workflow to use latest Xcode version and impro… #4

Updated GitHub Actions workflow to use latest Xcode version and impro…

Updated GitHub Actions workflow to use latest Xcode version and impro… #4

name: Build macOS App
on:
push:
branches: [ main ]
tags:
- 'v*'
pull_request:
branches: [ main ]
workflow_dispatch: # Allows manual triggering from GitHub UI
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Set up Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: 'latest-stable'
- name: Set environment variables
run: |
if [[ "$GITHUB_REF" == "refs/tags/"* ]]; then
echo "RELEASE_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
else
# Extract short SHA for development builds
echo "RELEASE_VERSION=dev-$(git rev-parse --short HEAD)" >> $GITHUB_ENV
fi
- name: Build macOS App
run: |
# Build without code signing for CI
xcodebuild -project CopilotApp.xcodeproj -scheme CopilotApp -configuration Release -destination 'platform=macOS' clean build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO
- name: Create .app package
run: |
# Create the app bundle
mkdir -p dist
# Find the app - check both potential locations
if [ -d "build/Release/GitHub Copilot.app" ]; then
APP_PATH="build/Release/GitHub Copilot.app"
elif [ -d "build/Release-macosx/GitHub Copilot.app" ]; then
APP_PATH="build/Release-macosx/GitHub Copilot.app"
else
echo "Could not find built app. Searching for it..."
find . -name "GitHub Copilot.app" -type d
find build -type d -maxdepth 3
exit 1
fi
echo "Found app at: $APP_PATH"
cp -R "$APP_PATH" dist/
cd dist
# Compress the .app bundle
zip -r "GitHubCopilotApp-$RELEASE_VERSION.zip" "GitHub Copilot.app"
ls -la
- name: Upload app as artifact
uses: actions/upload-artifact@v4
with:
name: GitHubCopilotApp
path: dist/GitHubCopilotApp-*.zip
# Only run this step for tagged releases
- name: Create GitHub Release
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v1
with:
files: dist/GitHubCopilotApp-*.zip
draft: false
prerelease: false
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}