File: package-publish.yml

package info (click to toggle)
sqlglot 30.0.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 15,644 kB
  • sloc: python: 96,110; sql: 23,456; makefile: 75
file content (144 lines) | stat: -rw-r--r-- 4,221 bytes parent folder | download | duplicates (2)
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'