1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
|
name: Publish sqlglot to PyPI
on:
push:
tags:
- "v*"
permissions:
contents: read
jobs:
# Build mypyc wheels for each platform and Python version.
build-wheels:
name: Build wheels (${{ matrix.platform.os }}, ${{ matrix.platform.archs }}, ${{ matrix.python }})
runs-on: ${{ matrix.platform.os }}
strategy:
matrix:
python: ["cp39", "cp310", "cp311", "cp312", "cp313", "cp314"]
platform:
- os: ubuntu-latest
archs: x86_64
- os: ubuntu-24.04-arm
archs: aarch64
- os: macos-latest
archs: universal2
- os: windows-latest
archs: AMD64
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
- uses: pypa/cibuildwheel@v3.3.1
with:
package-dir: sqlglotc
output-dir: wheelhouse
env:
CIBW_BUILD: ${{ matrix.python }}-*
CIBW_SKIP: "*-musllinux_*"
CIBW_ARCHS: ${{ matrix.platform.archs }}
- uses: actions/upload-artifact@v4
with:
name: wheels-${{ matrix.platform.os }}-${{ matrix.platform.archs }}-${{ matrix.python }}
path: ./wheelhouse/*.whl
# Build the sqlglotc sdist (source-only, no wheels — always compiles on install).
sdist-c:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Install build tools
run: pip install build
- name: Build sdist
run: |
cd sqlglotc
python -m build --sdist
- name: Upload sdist
uses: actions/upload-artifact@v4
with:
name: sqlglotc-sdist
path: sqlglotc/dist/*.tar.gz
# Publish sqlglotc wheels and sdist to PyPI.
publish-sqlglotc:
needs: [build-wheels, sdist-c]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
with:
pattern: wheels-*
path: dist/
merge-multiple: true
- uses: actions/download-artifact@v4
with:
name: sqlglotc-sdist
path: dist/
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_API_TOKEN }}
# Publish the main sqlglot package.
deploy:
needs: publish-sqlglotc
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v3
with:
python-version: "3.10"
- name: Install dependencies
run: |
python -m venv .venv
source ./.venv/bin/activate
python -m pip install --upgrade pip
pip install build twine
make install-dev
- name: Build and publish
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
run: |
source ./.venv/bin/activate
python -m build
twine upload dist/*
- name: Update CHANGELOG
id: changelog
continue-on-error: true
uses: requarks/changelog-action@v1
with:
token: ${{ github.token }}
tag: ${{ github.ref_name }}
- name: Commit CHANGELOG.md
continue-on-error: true
uses: stefanzweifel/git-auto-commit-action@v4
with:
branch: main
commit_message: "Update CHANGELOG.md for ${{ github.ref_name }} [skip ci]"
file_pattern: "CHANGELOG.md"
- name: Update API docs
run: |
source ./.venv/bin/activate
make docs
echo "sqlglot.com" > docs/CNAME
mv docs /tmp/generated-docs
git checkout -B api-docs origin/main
rm -rf docs
mv /tmp/generated-docs docs
- name: Commit API docs
uses: stefanzweifel/git-auto-commit-action@v4
with:
branch: api-docs
commit_message: 'Update API docs for ${{ github.ref_name }} [skip ci]'
file_pattern: 'docs'
push_options: '--force'
|