Skip to content

ECC-1793: develop binary wheel - use v3/4 of download-artifact #8

ECC-1793: develop binary wheel - use v3/4 of download-artifact

ECC-1793: develop binary wheel - use v3/4 of download-artifact #8

# (C) Copyright 2024- ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
# In applying this licence, ECMWF does not waive the privileges and immunities
# granted to it by virtue of its status as an intergovernmental organisation
# nor does it submit to any jurisdiction.
name: Build MacOS ARM
on:
# Trigger the workflow manually
workflow_dispatch: ~
# allow to be called from another workflow
workflow_call: ~
# repository_dispatch:
# types: [eccodes-updated]
push:
paths:
- 'scripts/common.sh'
- 'scripts/select-python-macos.sh'
- 'scripts/build-macos.sh'
- 'scripts/wheel-macos.sh'
- 'scripts/test-macos.sh'
- 'scripts/copy-licences.py'
- '.github/workflows/build-wheel-macos.yml'
# We don't use "actions/setup-python@v4" as it installs a universal python
# which creates universal wheels. We want to create wheels for the specific
# architecture we are running on.
jobs:
build:
# if: false # for temporarily disabling for debugging
strategy:
matrix:
arch_type: [ARM64, X64]
runs-on: [self-hosted, macOS, "${{ matrix.arch_type }}"]
name: Build
steps:
- run: sudo mkdir -p /Users/runner
- run: sudo chown administrator:staff /Users/runner
- uses: actions/checkout@v2
- run: ./scripts/build-macos.sh "3.10"
- run: ./scripts/wheel-macos.sh "3.9"
- run: ls -l wheelhouse
- uses: actions/upload-artifact@v4
name: Upload wheel 3.9 ${{ matrix.arch_type }}
with:
name: wheel-macos-${{ matrix.arch_type }}-3.9
path: wheelhouse/*.whl
- run: rm -fr wheelhouse
- run: ./scripts/wheel-macos.sh "3.10"
- run: ls -l wheelhouse
- uses: actions/upload-artifact@v4
name: Upload wheel 3.10 ${{ matrix.arch_type }}
with:
name: wheel-macos-${{ matrix.arch_type }}-3.10
path: wheelhouse/*.whl
- run: rm -fr wheelhouse
- run: ./scripts/wheel-macos.sh "3.11"
- run: ls -l wheelhouse
- uses: actions/upload-artifact@v4
name: Upload wheel 3.11 ${{ matrix.arch_type }}
with:
name: wheel-macos-${{ matrix.arch_type }}-3.11
path: wheelhouse/*.whl
- run: rm -fr wheelhouse
- run: ./scripts/wheel-macos.sh "3.12"
- run: ls -l wheelhouse
- uses: actions/upload-artifact@v4
name: Upload wheel 3.12 ${{ matrix.arch_type }}
with:
name: wheel-macos-${{ matrix.arch_type }}-3.12
path: wheelhouse/*.whl
- run: rm -fr wheelhouse
test:
needs: build
strategy:
fail-fast: true
max-parallel: 1
matrix:
arch_type: [ARM64, X64]
python-version: ["3.9", "3.10", "3.11", "3.12"]
runs-on: [self-hosted, macOS, "${{ matrix.arch_type }}"]
name: Test with Python ${{ matrix.python-version }} ${{ matrix.arch_type }}
steps:
- uses: actions/checkout@v2
- uses: actions/download-artifact@v4
with:
name: wheel-macos-${{ matrix.arch_type }}-${{ matrix.python-version }}
- run: ./scripts/test-macos.sh ${{ matrix.python-version }}
deploy:
if: ${{ github.ref_type == 'tag' || github.event_name == 'release' }}
needs: [test, build]
name: Deploy wheel ${{ matrix.python-version }} ${{ matrix.arch_type }}
strategy:
fail-fast: true
max-parallel: 1
matrix:
arch_type: [ARM64, X64]
python-version: ["3.9", "3.10", "3.11", "3.12"]
runs-on: [self-hosted, macOS, "${{ matrix.arch_type }}"]
steps:
- run: mkdir artifact-${{ matrix.arch_type }}-${{ matrix.python-version }}
- uses: actions/download-artifact@v4
with:
name: wheel-macos-${{ matrix.arch_type }}-${{ matrix.python-version }}
path: artifact-${{ matrix.arch_type }}-${{ matrix.python-version }}
- run: |
source ./scripts/select-python-macos.sh ${{ matrix.python-version }}
VENV_DIR=./dist_venv_${{ matrix.python-version }}
rm -rf ${VENV_DIR}
python3 -m venv ${VENV_DIR}
source ${VENV_DIR}/bin/activate
pip3 install twine
ls -l artifact-${{ matrix.arch_type }}-${{ matrix.python-version }}/*.whl
twine upload artifact-${{ matrix.arch_type }}-${{ matrix.python-version }}/*.whl
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}