Merge pull request #1183 from zama-ai/ci/trivy #93
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: concrete-python tests macos | |
on: | |
workflow_dispatch: | |
pull_request: | |
paths: | |
- .github/workflows/concrete_python_test_macos.yml | |
push: | |
branches: | |
- 'main' | |
- 'release/*' | |
concurrency: | |
group: concrete_python_tests_macos_${{ github.ref }} | |
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} | |
env: | |
ACTION_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
SLACK_CHANNEL: ${{ secrets.SLACK_CHANNEL }} | |
SLACK_USERNAME: ${{ secrets.BOT_USERNAME }} | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} | |
jobs: | |
concrete-python-test-pytest: | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.10"] | |
machine: ["aws-mac1-metal", "aws-mac2-metal"] | |
runs-on: ${{ matrix.machine }} | |
outputs: | |
slack_message: ${{ steps.prepare_slack_notif.outputs.slack_message }} | |
slack_color: ${{ steps.prepare_slack_notif.outputs.slack_color }} | |
env: | |
python: python${{matrix.python-version}} | |
concrete-python-dir: ${{ github.workspace }}/frontends/concrete-python | |
concrete-compiler-dir: ${{ github.workspace }}/compilers/concrete-compiler/compiler | |
steps: | |
- name: Checkout | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: recursive | |
fetch-depth: 0 | |
- name: Install build dependencies | |
run: | | |
brew install ninja ccache | |
- name: Setup rust toolchain for concrete-cpu | |
uses: ./.github/actions/setup_rust_toolchain_for_concrete_cpu | |
- name: Prepare build environment | |
run: | | |
set -e | |
cd ${{ env.concrete-python-dir }} | |
# Setup pkg-config to find OpenBLAS (scipy need it) | |
export PKG_CONFIG_PATH="/opt/homebrew/opt/openblas/lib/pkgconfig" | |
rm -rf .venv | |
${{ env.python }} -m venv .venv | |
. ${{ env.concrete-python-dir }}/.venv/bin/activate | |
pip install -r requirements.dev.txt | |
pip install -r requirements.txt | |
- name: Build concrete-compiler python-bindings | |
run: | | |
. ${{ env.concrete-python-dir }}/.venv/bin/activate | |
cd ${{ env.concrete-compiler-dir }} | |
ccache -z | |
make Python3_EXECUTABLE="$(which ${{ env.python }})" python-bindings | |
ccache -s | |
- name: Create wheels | |
run: | | |
. ${{ env.concrete-python-dir }}/.venv/bin/activate | |
cd ${{ env.concrete-python-dir }} | |
export COMPILER_BUILD_DIRECTORY=${{ env.concrete-compiler-dir }}/build | |
rm -rf dist && mkdir -p dist | |
pip wheel -v --no-deps -w dist . | |
delocate-wheel -v dist/*macos*.whl | |
deactivate | |
- name: Prepare test environment | |
run: | | |
set -e | |
TEST_TMP_DIR=$(mktemp -d) | |
echo "TEST_TMP_DIR=$TEST_TMP_DIR" >> "${GITHUB_ENV}" | |
cd "${TEST_TMP_DIR}" | |
${{ env.python }} -m venv .testenv | |
. .testenv/bin/activate | |
pip install ${{ env.concrete-python-dir }}/dist/*macos*.whl | |
pip install -r ${{ env.concrete-python-dir }}/requirements.dev.txt | |
${{ github.workspace }}/.github/workflows/scripts/fix_multi_omp_bug_macos.sh | |
cp -R ${{ env.concrete-python-dir }}/examples ./examples | |
cp -R ${{ env.concrete-python-dir }}/tests ./tests | |
cp -R ${{ env.concrete-python-dir }}/scripts ./scripts | |
cp ${{ env.concrete-python-dir }}/Makefile . | |
- name: Run pytest-macos | |
run: | | |
set -e | |
cd "${TEST_TMP_DIR}" && . .testenv/bin/activate | |
KEY_CACHE_DIRECTORY=./KeySetCache PYTEST_MARKERS="not dataflow and not graphviz" make pytest-macos | |
- name: Run test-notebooks | |
run: | | |
set -e | |
cd "${TEST_TMP_DIR}" && . .testenv/bin/activate | |
make test-notebooks | |
- name: Cleanup host | |
if: success() || failure() | |
run: | | |
rm -rf "${TEST_TMP_DIR}" | |
- name: Prepare Slack Notification | |
id: prepare_slack_notif | |
if: ${{ failure() }} | |
continue-on-error: true | |
run: | | |
echo "slack_message=concrete-python-test-pytest (${{matrix.machine}}/${{ matrix.python-version }}) finished with status: ${{ job.status }}. (${{ env.ACTION_RUN_URL }})" >> "$GITHUB_OUTPUT" | |
echo "slack_color=${{ job.status }}" >> "$GITHUB_OUTPUT" | |
slack-notif-macos: | |
needs: ["concrete-python-test-pytest"] | |
runs-on: "ubuntu-latest" | |
if: always() | |
steps: | |
- name: Slack Notification | |
# we want to check that prepare_slack_notif was run | |
if: ${{ needs.concrete-python-test-pytest.outputs.slack_color != '' }} | |
uses: rtCamp/action-slack-notify@c33737706dea87cd7784c687dadc9adf1be59990 | |
env: | |
SLACK_COLOR: ${{ needs.concrete-python-test-pytest.outputs.slack_color }} | |
SLACK_MESSAGE: ${{ needs.concrete-python-test-pytest.outputs.slack_message }} |