Skip to content

Use manual workflow_dispatch trigger #12

Use manual workflow_dispatch trigger

Use manual workflow_dispatch trigger #12

Workflow file for this run

name: Mobile Forge CI
on:
push:
pull_request:
workflow_dispatch:
env:
PYTHON_VERSION: "3.12.12"
PYTHON_SHORT_VERSION: "3.12"
MOBILE_FORGE_CACHE_DOWNLOADS_OFF: "1"
NDK_VERSION: r27c
jobs:
build:
name: ${{ matrix.job_name }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- job_name: "Android: pydantic-core 2.33.2"
runner: ubuntu-latest
forge_arch: android
forge_packages: "pydantic-core:2.33.2"
build_number: "1"
platform: android
- job_name: "iOS: pydantic-core 2.33.2"
runner: macos-latest
forge_arch: iOS
forge_packages: "pydantic-core:2.33.2"
build_number: "1"
platform: ios
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_SHORT_VERSION }}
- name: Build and publish wheels
shell: bash
env:
GEMFURY_TOKEN: ${{ secrets.GEMFURY_TOKEN }}
APPVEYOR_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number || '' }}
FORGE_ARCH: ${{ matrix.forge_arch }}
FORGE_PACKAGES: ${{ matrix.forge_packages }}
BUILD_NUMBER: ${{ matrix.build_number }}
PLATFORM: ${{ matrix.platform }}
run: |
set -euxo pipefail
. .ci/common.sh
export MOBILE_FORGE_ANDROID_SUPPORT_PATH=""
export MOBILE_FORGE_IOS_SUPPORT_PATH=""
if [[ "$PLATFORM" == "android" ]]; then
sudo apt-get update
sudo apt-get install -y sqlite3
python_android_dir="$HOME/projects/python-build/android"
curl -#OL "https://github.com/flet-dev/python-build/releases/download/v${PYTHON_SHORT_VERSION}/python-android-mobile-forge-${PYTHON_SHORT_VERSION}.tar.gz"
mkdir -p "$python_android_dir"
tar -xzf "python-android-mobile-forge-${PYTHON_SHORT_VERSION}.tar.gz" -C "$python_android_dir"
.ci/install_ndk.sh
curl https://sh.rustup.rs -sSf | sh -s -- -y
. "$HOME/.cargo/env"
export PATH="$PATH:$HOME/.cargo/bin"
rustup target add aarch64-linux-android
rustup target add arm-linux-androideabi
rustup target add x86_64-linux-android
rustup target add i686-linux-android
export MOBILE_FORGE_ANDROID_SUPPORT_PATH="$python_android_dir"
else
python_ios_dir="$HOME/projects/python-build/darwin/Python-Apple-support"
curl -#OL "https://github.com/flet-dev/python-build/releases/download/v${PYTHON_SHORT_VERSION}/python-ios-mobile-forge-${PYTHON_SHORT_VERSION}.tar.gz"
mkdir -p "$python_ios_dir"
tar -xzf "python-ios-mobile-forge-${PYTHON_SHORT_VERSION}.tar.gz" -C "$python_ios_dir"
curl https://sh.rustup.rs -sSf | sh -s -- -y
. "$HOME/.cargo/env"
export PATH="$PATH:$HOME/.cargo/bin"
rustup target add aarch64-apple-ios
rustup target add aarch64-apple-ios-sim
rustup target add x86_64-apple-ios
export MOBILE_FORGE_IOS_SUPPORT_PATH="$python_ios_dir"
fi
source ./setup.sh "$PYTHON_VERSION"
export PATH="$PATH:$HOME/.cargo/bin"
IFS=' ' read -r -a packages <<< "$FORGE_PACKAGES"
for package in "${packages[@]}"; do
forge "$FORGE_ARCH" "$package:$BUILD_NUMBER"
done
rm -f dist/bzip2-* dist/xz-* dist/openssl-* dist/libffi-*
if compgen -G "dist/*.whl" > /dev/null; then
publish_to_pypi dist/*.whl
fi
- name: Upload logs on success
if: ${{ success() && hashFiles('logs/*.log') != '' }}
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.platform }}-logs-${{ github.run_id }}-${{ github.run_attempt }}
path: logs/*.log
- name: Upload errors on failure
if: ${{ failure() && hashFiles('errors/*.log') != '' }}
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.platform }}-errors-${{ github.run_id }}-${{ github.run_attempt }}
path: errors/*.log