Skip to content

DataFrame output: omit timezone by default, NaN for float nulls #290

DataFrame output: omit timezone by default, NaN for float nulls

DataFrame output: omit timezone by default, NaN for float nulls #290

name: Build & Test Linux(musllinux) arm64
on:
workflow_dispatch:
inputs:
TAG_NAME:
description: 'Release Version Tag'
required: true
release:
types: [created]
push:
branches:
- main
paths-ignore:
- '**/*.md'
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
branches:
- main
paths-ignore:
- '**/*.md'
jobs:
build_musllinux_wheels:
name: Build & Test musllinux wheels (Alpine Linux aarch64)
runs-on: [self-hosted, linux, arm64, ubuntu-latest]
if: ${{ !github.event.pull_request.draft }}
steps:
- name: Setup Python and install twine for PyPI upload
run: |
echo "=== Setting up Python for PyPI upload ==="
# Install pip if not available
sudo apt-get update
sudo apt-get install -y python3-pip
python3 --version
python3 -m pip --version
echo "=== Installing twine ==="
python3 -m pip install --upgrade pip --break-system-packages
python3 -m pip install twine --break-system-packages
if ! python3 -m twine --version; then
echo "ERROR: Twine installation failed!"
exit 1
fi
echo "Twine installed successfully"
- name: Install GitHub CLI
run: |
wget https://github.com/cli/cli/releases/download/v2.82.1/gh_2.82.1_linux_arm64.tar.gz -O gh.tar.gz
tar -xf gh.tar.gz
sudo cp gh_*/bin/gh /usr/local/bin/
sudo chmod +x /usr/local/bin/gh
if ! gh --version; then
echo "ERROR: GitHub CLI installation failed!"
exit 1
fi
echo "GitHub CLI installed successfully"
- name: Setup Docker permissions
run: |
# Ensure Docker is running
sudo systemctl start docker
sudo systemctl enable docker
# Add current user to docker group
sudo usermod -aG docker $USER
# Set proper permissions on docker socket
sudo chmod 666 /var/run/docker.sock
# Verify Docker is working
docker --version
docker info
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Configure git safe directory
run: |
git config --global --add safe.directory '*'
- name: Update submodules
run: |
git submodule update --init --recursive --jobs 4
- name: Build chdb wheels in container
run: |
docker run --rm -v ${{ github.workspace }}:/workspace --privileged -e GITHUB_REF=${{ github.ref }} \
quay.io/pypa/musllinux_1_2_aarch64 /bin/sh /workspace/.github/scripts/build-musllinux-arm64.sh
continue-on-error: false
# Check test success before upload
- name: Verify test completion
run: |
echo "=== Verifying test completion ==="
if [ ! -f ".test_success_marker" ]; then
echo "ERROR: Test success marker file not found!"
echo "This indicates that the wheel testing did not complete successfully."
echo "Aborting upload process."
exit 1
fi
echo "Test success marker found. All tests completed successfully."
echo "Proceeding with wheel upload..."
ls -la ./dist/
continue-on-error: false
# Upload wheels to release
- name: Upload wheels to release
if: startsWith(github.ref, 'refs/tags/v')
run: |
echo "=== Uploading wheels to release ==="
ls -la ./dist/
gh release upload ${{ github.ref_name }} ./dist/*.whl --clobber
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
continue-on-error: true
# Upload to PyPI
- name: Upload pypi
if: startsWith(github.ref, 'refs/tags/v')
run: |
echo "=== Uploading to PyPI ==="
ls -la ./dist/
python3 -m twine upload dist/*.whl
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
# Upload artifacts
- name: Upload build artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: chdb-artifacts-musllinux-aarch64
path: |
./dist/*.whl
overwrite: true