Skip to content

update macos release: https://github.com/actions/setup-python/issues/825 #358

update macos release: https://github.com/actions/setup-python/issues/825

update macos release: https://github.com/actions/setup-python/issues/825 #358

Workflow file for this run

name: release
on:
push:
branches:
- prerelease
- release
jobs:
linux:
runs-on: ubuntu-latest
container: quay.io/pypa/manylinux_2_28_x86_64
strategy:
matrix:
python-version: [[39, "3.9"], [310, "3.10"], [311, "3.11"], [312, "3.12"]]
steps:
- uses: actions/checkout@v4
- name: Set python version
run: |
echo "/opt/python/cp${{ matrix.python-version[0] }}-cp${{ matrix.python-version[0] }}/bin" >> $GITHUB_PATH
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: rustfmt
target: aarch64-unknown-linux-gnu
default: true
- uses: extractions/setup-just@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: Gr1N/setup-poetry@v9
- name: Install tools
run: |
yum install -y epel-release
yum install -y mysql-devel postgresql-devel freetds-devel krb5-libs clang-devel
- name: Setup project
run: |
just bootstrap-python
- uses: PyO3/maturin-action@v1
with:
rust-toolchain: stable
command: build
args: -m connectorx-python/Cargo.toml -i python --release --manylinux 2_28 --features integrated-auth-gssapi
before-script-linux: |
# If we're running on rhel centos, install needed packages.
if command -v yum &> /dev/null; then
yum update -y && yum install -y perl-core openssl openssl-devel pkgconfig libatomic
# If we're running on i686 we need to symlink libatomic
# in order to build openssl with -latomic flag.
if [[ ! -d "/usr/lib64" ]]; then
ln -s /usr/lib/libatomic.so.1 /usr/lib/libatomic.so
fi
else
# If we're running on debian-based system.
apt update -y && apt-get install -y libssl-dev openssl pkg-config
fi
env:
SQLITE3_STATIC: 1
- name: Copy j4rs dependencies into dist
run: |
cp -rf connectorx-python/target/release/jassets connectorx-python/connectorx/dependencies
# rebuild the wheel to incorporate j4rs dependencies
- uses: PyO3/maturin-action@v1
with:
rust-toolchain: stable
command: build
args: -m connectorx-python/Cargo.toml -i python --release --manylinux 2_28 --features integrated-auth-gssapi
before-script-linux: |
# If we're running on rhel centos, install needed packages.
if command -v yum &> /dev/null; then
yum update -y && yum install -y perl-core openssl openssl-devel pkgconfig libatomic
# If we're running on i686 we need to symlink libatomic
# in order to build openssl with -latomic flag.
if [[ ! -d "/usr/lib64" ]]; then
ln -s /usr/lib/libatomic.so.1 /usr/lib/libatomic.so
fi
else
# If we're running on debian-based system.
apt update -y && apt-get install -y libssl-dev openssl pkg-config
fi
env:
SQLITE3_STATIC: 1
- uses: actions/upload-artifact@v4
with:
name: "ubuntu-latest-${{ matrix.python-version[1] }}"
path: connectorx-python/target/wheels/*.whl
# linux-aarch:
# runs-on: ubuntu-latest
# container: ghcr.io/rust-cross/manylinux_2_28-cross:aarch64
# strategy:
# matrix:
# python-version: [[38, "3.8"], [39, "3.9"], [310, "3.10"], [311, "3.11"]]
# steps:
# - uses: actions/checkout@v2
# - name: Set python version
# run: |
# echo "/opt/python/cp${{ matrix.python-version[0] }}-cp${{ matrix.python-version[0] }}/bin" >> $GITHUB_PATH
# - uses: actions-rs/toolchain@v1
# with:
# toolchain: 1.71.1
# components: rustfmt
# target: aarch64-unknown-linux-gnu
# default: true
# - uses: extractions/setup-just@v1
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# - uses: Gr1N/setup-poetry@v9
# - name: Install tools
# run: |
# yum install -y epel-release
# yum install -y mysql-devel postgresql-devel freetds-devel krb5-libs clang-devel
# - name: Setup project
# run: |
# just bootstrap-python
# - uses: PyO3/maturin-action@v1
# with:
# rust-toolchain: 1.71.1
# command: build
# args: -m connectorx-python/Cargo.toml --target aarch64-unknown-linux-gnu -i python --release --manylinux 2_28 --features integrated-auth-gssapi
# env:
# SQLITE3_STATIC: 1
# - name: Copy j4rs dependencies into dist
# run: |
# cp -rf connectorx-python/target/release/jassets connectorx-python/connectorx/dependencies
# # rebuild the wheel to incorporate j4rs dependencies
# - uses: PyO3/maturin-action@v1
# with:
# rust-toolchain: 1.71.1
# command: build
# args: -m connectorx-python/Cargo.toml --target aarch64-unknown-linux-gnu -i python --release --manylinux 2_28 --features integrated-auth-gssapi
# env:
# SQLITE3_STATIC: 1
# - uses: actions/upload-artifact@v3
# with:
# name: "aarch-${{ matrix.python-version[1] }}"
# path: connectorx-python/target/wheels/*.whl
win-and-mac:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: ["windows-latest", "macos-13"]
python-version: ["3.9", "3.10", "3.11", "3.12"]
include:
- os: "macos-13"
features: "--features integrated-auth-gssapi"
steps:
- uses: actions/checkout@v4
- uses: ankane/setup-mysql@v1
with:
mysql-version: 8
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
architecture: x64
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: rustfmt
default: true
- uses: extractions/setup-just@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: Gr1N/setup-poetry@v9
- name: Setup project
run: |
just bootstrap-python
- uses: PyO3/maturin-action@v1
with:
rust-toolchain: stable
maturin-version: v0.14.15
command: build
args: -m connectorx-python/Cargo.toml -i python --release ${{ matrix.features }}
env:
SQLITE3_STATIC: 1
- name: Copy j4rs dependencies into dist
run: |
cp -r connectorx-python/target/release/jassets connectorx-python/connectorx/dependencies
# rebuild the wheel to incorporate j4rs dependencies
- uses: PyO3/maturin-action@v1
with:
rust-toolchain: stable
maturin-version: v0.14.15
command: build
args: -m connectorx-python/Cargo.toml -i python --release ${{ matrix.features }}
env:
SQLITE3_STATIC: 1
- uses: actions/upload-artifact@v4
with:
name: "${{ matrix.os }}-${{ matrix.python-version }}"
path: connectorx-python/target/wheels/*.whl
apple-arm:
runs-on: macos-latest
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v4
- uses: ankane/setup-mysql@v1
with:
mysql-version: 8
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: rustfmt
target: aarch64-apple-darwin
default: true
- uses: extractions/setup-just@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: Gr1N/setup-poetry@v9
- name: Setup project
run: |
just bootstrap-python
- uses: PyO3/maturin-action@v1
with:
rust-toolchain: stable
maturin-version: v0.14.15
command: build
args: -m connectorx-python/Cargo.toml --target aarch64-apple-darwin -i python --release --features integrated-auth-gssapi
env:
SQLITE3_STATIC: 1
- name: Copy j4rs dependencies into dist
run: |
cp -rf connectorx-python/target/aarch64-apple-darwin/release/jassets connectorx-python/connectorx/dependencies
# rebuild the wheel to incorporate j4rs dependencies
- uses: PyO3/maturin-action@v1
with:
rust-toolchain: stable
maturin-version: v0.14.15
command: build
args: -m connectorx-python/Cargo.toml --target aarch64-apple-darwin -i python --release --features integrated-auth-gssapi
env:
SQLITE3_STATIC: 1
- uses: actions/upload-artifact@v4
with:
name: "macos-arm-${{ matrix.python-version }}"
path: connectorx-python/target/wheels/*.whl
verify:
runs-on: ${{ matrix.os }}
needs: [win-and-mac, linux]
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12"]
os: [macos-13, ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
architecture: x64
- uses: actions/download-artifact@v4
with:
name: "${{ matrix.os }}-${{ matrix.python-version }}"
- run: |
pip install *.whl
python -c "import connectorx"
verify-arm:
runs-on: ${{ matrix.os }}
needs: [apple-arm]
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12"]
os: [macos-latest]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- uses: actions/download-artifact@v4
with:
name: "macos-arm-${{ matrix.python-version }}"
- run: |
pip install *.whl
python -c "import connectorx"
upload:
runs-on: ubuntu-latest
needs: [verify, verify-arm]
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
- name: Setup environment
run: |
tree .
echo "/home/runner/.local/bin" >> $GITHUB_PATH
- name: Install Twine
run: pip install twine
- name: Upload to PyPI site
if: github.ref == 'refs/heads/release'
env:
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
run: |
for file in $(ls **/*)
do
twine upload --non-interactive -u __token__ -p $PYPI_TOKEN $file || continue
done
- name: Upload to PyPI test site
if: github.ref == 'refs/heads/prerelease'
env:
PYPI_TEST_TOKEN: ${{ secrets.PYPI_TEST_TOKEN }}
run: |
for file in $(ls **/*)
do
twine upload --non-interactive --repository-url https://test.pypi.org/legacy/ -u __token__ -p $PYPI_TEST_TOKEN $file --verbose || continue
done