Skip to content

update release script #395

update release script

update release script #395

Workflow file for this run

name: release
on:
push:
branches:
- prerelease
- release
jobs:
linux:
runs-on: ${{ matrix.platform.runs-on }}
container: quay.io/pypa/manylinux_2_28_${{ matrix.platform.arch }}
strategy:
matrix:
platform:
[
{ "arch": "x86_64", "runs-on": "ubuntu-latest" },
{ "arch": "aarch64", "runs-on": "ubuntu-22.04-arm" },
]
python-version:
[[310, "3.10"], [311, "3.11"], [312, "3.12"], [313, "3.13"], [314, "3.14"]]
steps:
- uses: actions/checkout@v5
- 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@v3
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 libffi-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
- uses: actions/upload-artifact@v4
with:
name: "linux-${{matrix.platform.arch}}-${{ matrix.python-version[1] }}"
path: connectorx-python/target/wheels/*.whl
win-and-mac:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: ["windows-latest", "macos-15-intel"]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
include:
- os: "macos-15-intel"
features: "--features integrated-auth-gssapi"
steps:
- uses: actions/checkout@v5
- 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@v3
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
- 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.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v5
- 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@v3
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
- 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.10", "3.11", "3.12", "3.13", "3.14"]
os:
[
macos-15-intel,
ubuntu-latest,
windows-latest,
ubuntu-22.04-arm,
macos-latest,
]
include:
# override artifact-prefix for linux variants
- os: "ubuntu-latest"
artifact-prefix: "linux-x86_64"
- os: "ubuntu-22.04-arm"
artifact-prefix: "linux-aarch64"
- os: "macos-latest"
artifact-prefix: "macos-arm"
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- uses: actions/download-artifact@v5
with:
name: "${{ matrix.artifact-prefix || matrix.os }}-${{ matrix.python-version }}"
- run: |
pip install *.whl
python -c "import connectorx"
upload:
runs-on: ubuntu-latest
needs: [verify]
steps:
- name: Download all artifacts
uses: actions/download-artifact@v5
- name: Setup environment
run: |
tree .
echo "/home/runner/.local/bin" >> $GITHUB_PATH
- name: Install Twine
run: |
pip install twine
pip install packaging -U
- 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