Add macOS CI #1720
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
name: Bundle | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
schedule: | |
- cron: "0 0 * * *" | |
workflow_dispatch: | |
inputs: | |
deploy: | |
description: "Deploy the nightly build" | |
required: false | |
default: "false" | |
jobs: | |
build: | |
strategy: | |
matrix: | |
os: | |
- ubuntu-20.04 | |
- ubuntu-22.04 | |
- windows-2022 | |
- macos-12 | |
- macos-14 | |
fail-fast: false | |
name: Build on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.12" | |
- run: | | |
sudo apt-get update; | |
sudo apt-get install -y \ | |
libfuse2 \ | |
libegl1 \ | |
libxkbcommon-x11-0 \ | |
libxcb-cursor0 \ | |
libxcb-icccm4 \ | |
libxcb-image0 \ | |
libxcb-keysyms1 \ | |
libxcb-randr0 \ | |
libxcb-render-util0 \ | |
libxcb-shape0 | |
if: startsWith(matrix.os, 'ubuntu') | |
- run: | | |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | |
bash .github\workflows\nightly-build.sh | |
shell: cmd | |
if: startsWith(matrix.os, 'windows') | |
- run: bash .github/workflows/nightly-build.sh | |
if: startsWith(matrix.os, 'ubuntu') || startsWith(matrix.os, 'macos') | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: angr-management-${{ matrix.os }} | |
path: | | |
upload/*.tar.gz | |
upload/*.zip | |
compression-level: 0 | |
test_ubuntu: | |
strategy: | |
matrix: | |
os: | |
- ubuntu-20.04 | |
- ubuntu-22.04 | |
fail-fast: false | |
name: Test on ${{ matrix.os }} | |
needs: build | |
runs-on: ${{ matrix.os }} | |
steps: | |
- run: sudo apt-get update && sudo apt-get install -y xvfb x11-utils libegl1 | |
name: Install X11 app testing utilities | |
- uses: actions/download-artifact@v4 | |
with: | |
name: angr-management-${{ matrix.os }} | |
- run: | | |
set -x | |
. /etc/os-release | |
tar -xzf angr-management-ubuntu-$VERSION_ID.tar.gz | |
export binary="./angr-management/angr-management" | |
export QT_DEBUG_PLUGINS=1 | |
chmod +x $binary | |
xvfb-run bash -x -c ' | |
$binary & | |
sleep 30 && output=$(xwininfo -tree -root) | |
[[ "$output" == *"angr management"* ]] || exit 1 | |
' | |
test_windows: | |
strategy: | |
matrix: | |
os: | |
- windows-2022 | |
fail-fast: false | |
name: Test on ${{ matrix.os }} | |
needs: build | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
name: angr-management-${{ matrix.os }} | |
- run: | | |
7z x angr-management-win64.zip | |
.\angr-management\angr-management.exe | |
sleep 30 | |
[array]$am_windows = Get-Process | | |
Where-Object {$_.MainWindowTitle -ne ""} | | |
Select-Object MainWindowTitle | | |
where {$_ -match 'angr management'} | |
if ($am_windows.Length -ne 1) { | |
echo "Number of open angr management windows" $am_windows.Length | |
exit 1 | |
} | |
test_macos: | |
strategy: | |
matrix: | |
os: | |
- macos-12 | |
- macos-14 | |
fail-fast: false | |
name: Test on ${{ matrix.os }} | |
needs: build | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
name: angr-management-${{ matrix.os }} | |
- run: | | |
set -x | |
unzip -o ./angr-management-macOS-$(uname -m).zip | |
open *.app | |
for i in {0..7}; do | |
sleep 15 | |
windows=$(osascript -e ' | |
tell application "System Events" to get (name of every window of processes whose name contains "angr management") as string | |
') | |
if [ "$windows" != "" ]; then | |
exit 0 | |
fi | |
done | |
exit 1 | |
deploy: | |
name: Deploy release | |
needs: | |
- test_ubuntu | |
- test_windows | |
- test_macos | |
runs-on: ubuntu-22.04 | |
if: ${{ github.event_name == 'schedule' || github.event.inputs.deploy == 'true'}} | |
steps: | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
- name: Run find | |
run: find . | |
- name: Delete old nightly | |
run: gh release -R angr/angr-management delete nightly --cleanup-tag --yes | |
env: | |
GH_TOKEN: ${{ github.token }} | |
continue-on-error: true | |
- name: Make new release | |
run: > | |
gh release create nightly \ | |
--repo angr/angr-management \ | |
--title "angr management nightly preview" \ | |
--notes "$RELEASE_NOTES" \ | |
--prerelease \ | |
--target $GITHUB_SHA \ | |
$(find . -type f) | |
env: | |
RELEASE_NOTES: > | |
This release is an automatically generated pre-release. We do our | |
best to make sure everything works, but please be advised that | |
features may break or change without notice. | |
Mac users: Make sure to select the build that matches your CPU | |
archetecture. Both are currently not signed, so you will need to | |
right-click and select "Open" the first time you run them. | |
GH_TOKEN: ${{ github.token }} | |
report: | |
name: Report status | |
needs: deploy | |
runs-on: ubuntu-22.04 | |
if: ${{ github.event_name == 'schedule' && failure() }} | |
steps: | |
- name: Send result email | |
env: | |
MAILGUN_API_TOKEN: ${{ secrets.MAILGUN_API_TOKEN }} | |
run: | | |
BUILD_URL="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
curl -s --user "api:$MAILGUN_API_TOKEN" \ | |
https://api.mailgun.net/v3/mail.rev.fish/messages \ | |
-F from="angr management bundle <[email protected]>" \ | |
-F [email protected] \ | |
-F subject="angr management nightly bundle failed" \ | |
-F text="Link to failed build: $BUILD_URL" |