Bundle #1144
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: | |
jobs: | |
build: | |
strategy: | |
matrix: | |
os: | |
- ubuntu-20.04 | |
- ubuntu-22.04 | |
- windows-2022 | |
- macos-12 | |
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.11" | |
- 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@v3 | |
with: | |
name: angr-management-${{ matrix.os }} | |
path: | | |
upload/*.tar.gz | |
upload/*.zip | |
upload/*.dmg | |
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@v3 | |
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@v3 | |
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 | |
fail-fast: false | |
name: Test on ${{ matrix.os }} | |
needs: build | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/download-artifact@v3 | |
with: | |
name: angr-management-${{ matrix.os }} | |
- run: | | |
set -x | |
hdiutil attach -mountroot /tmp/am-mount ./angr-management-macOS.dmg | |
open /tmp/am-mount/*/*.app | |
sleep 30 | |
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 1 | |
fi | |
deploy: | |
name: Deploy release | |
needs: | |
- test_ubuntu | |
- test_windows | |
- test_macos | |
runs-on: ubuntu-22.04 | |
if: ${{ github.event_name == 'schedule' }} | |
steps: | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
- 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. | |
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 <angr-nightly-ci@mail.rev.fish>" \ | |
-F to=angr-dev@asu.edu \ | |
-F subject="angr management nightly bundle failed" \ | |
-F text="Link to failed build: $BUILD_URL" |