Skip to content

MacOS Monterey M1

MacOS Monterey M1 #343

name: MacOS Monterey M1
'on':
workflow_dispatch:
inputs:
git-ref:
description: Git Ref
default: master
required: true
schedule:
- cron: "15 23 * * *"
push:
branches: [macos_test]
jobs:
install_and_test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [m1]
python-version: [3.9.13, "3.10.11"]
steps:
# This Checkout use git-ref keyword from dispatch
- name: Clone Repository (Master)
uses: actions/checkout@v2
if: github.event.inputs.git-ref == ''
- name: Clone Repository (Custom Ref)
uses: actions/checkout@v2
if: github.event.inputs.git-ref != ''
with:
ref: ${{ github.event.inputs.git-ref }}
- name: Set up Python3 with installer from python.org
run: |
macpython_py_prefix=/Library/Frameworks/Python.framework/Versions
macpython_url=https://www.python.org/ftp/python
downloads_dir=/tmp
py_version=${{ matrix.python-version }}
py_inst=$py_version.pkg
inst_path=$downloads_dir/$py_inst
retval=""
# exit early on curl errors, but don't let it exit the shell
# https://www.python.org/ftp/python/3.9.13/python-3.9.13-macos11.pkg
macpy_download=$macpython_url/$py_version/python-$py_version-macos11.pkg
curl -f $macpy_download > $inst_path || retval=$?
if [ ${retval:-0} -ne 0 ]; then
echo "Python download failed! "
exit $retval
fi
#
sudo installer -pkg $inst_path -target /
py_mm=${py_version%.*}
python=$macpython_py_prefix/$py_mm/bin/python$py_mm
# Install certificates for Python
inst_cmd="/Applications/Python ${py_mm}/Install Certificates.command"
if [ -e "$inst_cmd" ]; then
sh "$inst_cmd"
fi
- name: Install oq-engine in devel mode
env:
BRANCH: ${{ github.event.inputs.git-ref }}
run: |
set -x
export PIP_DEFAULT_TIMEOUT=100
macpython_py_prefix=/Library/Frameworks/Python.framework/Versions
py_version=${{ matrix.python-version }}
py_mm=${py_version%.*}
python=$macpython_py_prefix/$py_mm/bin/python$py_mm
$python -V
$python -m pip install -U pip wheel
#
echo "branch to test: ${BRANCH}"
if [[ "$BRANCH" != "" ]]
then
$python install.py devel --version ${BRANCH}
else
$python install.py devel
fi
source ~/openquake/bin/activate
pip3 install pytest pyshp flake8
oq dbserver start
sleep 10
- name: Run demos to test installation
run: |
set -x
source ~/openquake/bin/activate
oq info venv
oq info cfg
cd /Users/runner/runner-isolation/actions-runner/_work/oq-engine/oq-engine/demos
ls -lrt
# run demos with job_hazard.ini and job_risk.ini
for demo_dir in $(find . -type d | sort); do
if [ -f $demo_dir/job_hazard.ini ]; then
oq engine --run $demo_dir/job_hazard.ini --exports csv,hdf5
oq engine --run $demo_dir/job_risk.ini --exports csv,hdf5 --hc -1
fi
done
# run the other demos
for ini in $(find . -name job.ini | sort); do
oq engine --run $ini --exports csv,hdf5
done
- name: Run tests for calculators and advanced manual to test installation
if: always()
run: |
source ~/openquake/bin/activate
cd /Users/runner/runner-isolation/actions-runner/_work/oq-engine/oq-engine/
pytest --doctest-modules --disable-warnings --color=yes --durations=10 openquake/calculators && pytest doc/adv-manual/*.rst
- name: Run tests for hazardlib, sep, commands, engine, hmtk, risklib, commonlib and baselib to test installation
if: always()
run: |
source ~/openquake/bin/activate
cd /Users/runner/runner-isolation/actions-runner/_work/oq-engine/oq-engine/openquake/
pytest --doctest-modules --disable-warnings --color=yes --durations=10 hazardlib sep commands engine hmtk risklib commonlib baselib
- name: Run tests for the engine server in public mode to test installation
if: always()
run: |
source ~/openquake/bin/activate
cd /Users/runner/runner-isolation/actions-runner/_work/oq-engine/oq-engine/
# -v 2 also logs the test names
OQ_APPLICATION_MODE=public ./openquake/server/manage.py test -v 2 tests.test_public_mode
- name: Run tests for the engine server in read-only mode to test installation
if: always()
run: |
source ~/openquake/bin/activate
cd /Users/runner/runner-isolation/actions-runner/_work/oq-engine/oq-engine/
# -v 2 also logs the test names
OQ_APPLICATION_MODE=read_only ./openquake/server/manage.py test -v 2 tests.test_read_only_mode
- name: Run tests for the engine server in aelo mode to test installation
if: always()
run: |
source ~/openquake/bin/activate
cd /Users/runner/runner-isolation/actions-runner/_work/oq-engine/oq-engine/
# -v 2 also logs the test names
OQ_APPLICATION_MODE=aelo OQ_CONFIG_FILE=openquake/server/tests/data/openquake.cfg ./openquake/server/manage.py test -v 2 tests.test_aelo_mode