Skip to content

Commit

Permalink
Macos wheel action
Browse files Browse the repository at this point in the history
  • Loading branch information
tmi committed Dec 12, 2024
1 parent 93542d3 commit ef73f0d
Show file tree
Hide file tree
Showing 2 changed files with 107 additions and 15 deletions.
68 changes: 53 additions & 15 deletions .github/workflows/build-wheel-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,27 +20,65 @@ on:

jobs:
build:
name: Build manylinux_2_28
runs-on: [self-hosted, Linux, platform-builder-Rocky-8.6]
# TODO which manylinux do we want to build for? 2014? 2_28? 2_34? Matrix?
container:
image: eccr.ecmwf.int/wheelmaker/2_28:0.9
credentials:
username: ${{ secrets.ECMWF_DOCKER_REGISTRY_USERNAME }}
password: ${{ secrets.ECMWF_DOCKER_REGISTRY_ACCESS_TOKEN }}
name: Build macos wheel
# TODO enable after all tested
# strategy:
# matrix:
# arch_type: [ARM64, X64]
# runs-on: [self-hosted, macOS, "${{ matrix.arch_type }}"]
runs-on: [self-hosted, macOS, ARM64 ]
steps:
# TODO convert this to be matrix-friendly. Note it's a bit tricky since
# TODO convert this to be matrix-friendly for python versions. Note it's a bit tricky since
# we'd ideally not reexecute the compile step multiple times, but it
# (non-essentially) depends on a matrix-based step
# NOTE we dont use action checkout because it doesnt cleanup after itself correctly
- run: git clone --depth=1 --branch="${GITHUB_REF#refs/heads/}" https://github.com/$GITHUB_REPOSITORY /proj
- run: cd /proj && /buildscripts/prepare_deps.sh ./python_wrapper/buildconfig 3.11
- run: cd /proj && /buildscripts/compile.sh ./python_wrapper/buildconfig
- run: cd /proj && /buildscripts/wheel-linux.sh ./python_wrapper/buildconfig 3.11
- run: cd /proj && /buildscripts/test-wheel.sh ./python_wrapper/buildconfig 3.11 /build/wheel/*whl
- run: cd /proj && /buildscripts/upload-pypi.sh /build/wheel/*whl
- run: |
if [ -z "$(which uv)" ] ; then curl -LsSf https://astral.sh/uv/install.sh | sh ; fi
rm -rf ecbuild wheelmaker
git clone --depth=1 https://github.com/ecmwf/ecbuild ecbuild
# git clone --depth=1 --branch="wheelmaker" https://github.com/ecmwf/ci-utils wheelmaker # get token in there, get rid of the checkout action
- uses: actions/checkout@v4
with:
repository: ecmwf/ci-utils
ref: wheelmaker
path: ci-utils
token: ${{ secrets.GH_REPO_READ_TOKEN }}
- run: rm -rf proj && git clone --depth=1 --branch="${GITHUB_REF#refs/heads/}" https://github.com/$GITHUB_REPOSITORY proj
- run: cd proj && $GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts/prepare_deps.sh ./python_wrapper/buildconfig 3.11
- run: cd proj && PATH="$PATH:$GITHUB_WORKSPACE/ecbuild/bin/" $GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts/compile.sh ./python_wrapper/buildconfig
- run: |
uv python install python3.11 && uv pip install --python python3.11 build # NOTE we could guard with `if` too, but effectively no-op so not worth it
cd proj && PYTHONPATH=$GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts $GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts/wheel-linux.sh ./python_wrapper/buildconfig 3.11
- run: cd proj && $GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts/test-wheel.sh ./python_wrapper/buildconfig 3.11 /build/wheel/*whl
- run: cd proj && $GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts/upload-pypi.sh /build/wheel/*whl
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
# NOTE temporary thing until all the mess gets cleared
- run: rm -rf ./* ./.git ./.github
#jobs:
# build:
# name: Build manylinux_2_28
# runs-on: [self-hosted, Linux, platform-builder-Rocky-8.6]
# # TODO which manylinux do we want to build for? 2014? 2_28? 2_34? Matrix?
# container:
# image: eccr.ecmwf.int/wheelmaker/2_28:0.9
# credentials:
# username: ${{ secrets.ECMWF_DOCKER_REGISTRY_USERNAME }}
# password: ${{ secrets.ECMWF_DOCKER_REGISTRY_ACCESS_TOKEN }}
# steps:
# # TODO convert this to be matrix-friendly. Note it's a bit tricky since
# # we'd ideally not reexecute the compile step multiple times, but it
# # (non-essentially) depends on a matrix-based step
# # NOTE we dont use action checkout because it doesnt cleanup after itself correctly
# - run: git clone --depth=1 --branch="${GITHUB_REF#refs/heads/}" https://github.com/$GITHUB_REPOSITORY /proj
# - run: cd /proj && /buildscripts/prepare_deps.sh ./python_wrapper/buildconfig 3.11
# - run: cd /proj && /buildscripts/compile.sh ./python_wrapper/buildconfig
# - run: cd /proj && PYTHONPATH=/buildscripts /buildscripts/wheel-linux.sh ./python_wrapper/buildconfig 3.11
# - run: cd /proj && /buildscripts/test-wheel.sh ./python_wrapper/buildconfig 3.11 /build/wheel/*whl
# - run: cd /proj && /buildscripts/upload-pypi.sh /build/wheel/*whl
# env:
# TWINE_USERNAME: __token__
# TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
# # NOTE temporary thing until all the mess gets cleared
# - run: rm -rf ./* ./.git ./.github
54 changes: 54 additions & 0 deletions .github/workflows/build-wheel-macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# 1)
# install bison, flex, uv, python setuptools/build
# 2)
# run compile.sh

# (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 Python Wheel for MacOS

on:
# Trigger the workflow manually
workflow_dispatch: ~

# Allow to be called from another workflow
workflow_call: ~

# TODO automation trigger

jobs:
build:
name: Build macos wheel
# TODO enable after all tested
# strategy:
# matrix:
# arch_type: [ARM64, X64]
# runs-on: [self-hosted, macOS, "${{ matrix.arch_type }}"]
runs-on: [self-hosted, macOS, ARM64 ]
steps:
# TODO convert this to be matrix-friendly. Note it's a bit tricky since
# we'd ideally not reexecute the compile step multiple times, but it
# (non-essentially) depends on a matrix-based step
# NOTE we dont use action checkout because it doesnt cleanup after itself correctly
- run: |
rm -rf ecbuild wheelmaker
git clone --depth=1 https://github.com/ecmwf/ecbuild ecbuild
git clone --depth=1 --branch="wheelmaker" https://github.com/ecmwf/ci-utils wheelmaker
- run: rm -rf proj && git clone --depth=1 --branch="${GITHUB_REF#refs/heads/}" https://github.com/$GITHUB_REPOSITORY proj
- run: cd proj && $GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts/prepare_deps.sh ./python_wrapper/buildconfig 3.11
- run: cd proj && PATH="$PATH:$GITHUB_WORKSPACE/ecbuild/bin/" $GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts/compile.sh ./python_wrapper/buildconfig
- run: cd proj && PYTHONPATH=$GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts $GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts/wheel-linux.sh ./python_wrapper/buildconfig 3.11
- run: cd proj && $GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts/test-wheel.sh ./python_wrapper/buildconfig 3.11 /build/wheel/*whl
- run: cd proj && $GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts/upload-pypi.sh /build/wheel/*whl
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
# NOTE temporary thing until all the mess gets cleared
- run: rm -rf ./* ./.git ./.github

0 comments on commit ef73f0d

Please sign in to comment.