chore: syphar is deprecated. fangle python actions #182
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release hogql-parser | |
on: | |
push: | |
branches: | |
- master | |
paths: | |
- hogql_parser/** | |
- .github/workflows/build-hogql-parser.yml | |
pull_request: | |
paths: | |
- hogql_parser/** | |
- .github/workflows/build-hogql-parser.yml | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
check-version: | |
name: Check version legitimacy | |
if: github.repository == 'PostHog/posthog' | |
runs-on: ubuntu-22.04 | |
outputs: | |
parser-release-needed: ${{ steps.version.outputs.parser-release-needed }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Fetching all for comparison since last push (not just last commit) | |
- name: Check if hogql_parser/ has changed | |
id: changed-files | |
uses: tj-actions/changed-files@v43 | |
with: | |
since_last_remote_commit: true | |
files_yaml: | | |
parser: | |
- hogql_parser/** | |
- name: Check if version was bumped | |
shell: bash | |
id: version | |
run: | | |
parser_release_needed='false' | |
if [[ ${{ steps.changed-files.outputs.parser_any_changed }} == 'true' ]]; then | |
published=$(curl -fSsl https://pypi.org/pypi/hogql-parser/json | jq -r '.info.version') | |
local=$(python hogql_parser/setup.py --version) | |
if [[ "$published" != "$local" ]]; then | |
parser_release_needed='true' | |
else | |
message_body="It looks like the code of \`hogql-parser\` has changed since last push, but its version stayed the same at $local. 👀\nMake sure to resolve this in \`hogql_parser/setup.py\` before merging!" | |
curl -s -u posthog-bot:${{ secrets.POSTHOG_BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} -X POST -d "{ \"body\": \"$message_body\" }" "https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/comments" | |
fi | |
fi | |
echo "parser-release-needed=$parser_release_needed" >> $GITHUB_OUTPUT | |
build-wheels: | |
name: Build wheels on ${{ matrix.os }} | |
needs: check-version | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 30 | |
if: ${{ needs.check-version.outputs.parser-release-needed == 'true' }} | |
strategy: | |
matrix: | |
# As of October 2023, GitHub doesn't have ARM Actions runners… and ARM emulation is insanely slow | |
# (20x longer) on the Linux runners (while being reasonable on the macOS runners). Hence, we use | |
# BuildJet as a provider of ARM runners - this solution saves a lot of time and consequently some money. | |
os: [ubuntu-22.04, buildjet-2vcpu-ubuntu-2204-arm, macos-12] | |
steps: | |
- uses: actions/checkout@v4 | |
- if: ${{ !endsWith(matrix.os, '-arm') }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11' | |
- if: ${{ endsWith(matrix.os, '-arm') }} | |
uses: deadsnakes/[email protected] # Unfortunately actions/setup-python@v4 just doesn't work on ARM! This does | |
with: | |
python-version: '3.11' | |
- name: Build sdist | |
if: matrix.os == 'ubuntu-22.04' # Only build the sdist once | |
run: cd hogql_parser && python setup.py sdist | |
# uv is a fast pip alternative: https://github.com/astral-sh/uv/ | |
- run: pip install uv | |
- name: Install cibuildwheel | |
run: uv pip install --system cibuildwheel==2.16.* | |
- name: Build wheels | |
run: cd hogql_parser && python -m cibuildwheel --output-dir dist | |
env: | |
MACOSX_DEPLOYMENT_TARGET: '12' # A modern target allows us to use C++20 | |
- uses: actions/upload-artifact@v3 | |
with: | |
path: | | |
hogql_parser/dist/*.whl | |
hogql_parser/dist/*.tar.gz | |
if-no-files-found: error | |
publish: | |
name: Publish on PyPI | |
needs: build-wheels | |
environment: pypi-hogql-parser | |
permissions: | |
id-token: write | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Fetch wheels | |
uses: actions/download-artifact@v3 | |
with: | |
name: artifact | |
path: dist/ | |
- name: Publish package to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
- uses: actions/checkout@v4 | |
with: | |
token: ${{ secrets.POSTHOG_BOT_GITHUB_TOKEN }} | |
ref: ${{ github.event.pull_request.head.ref }} | |
- name: Update hogql-parser in requirements | |
shell: bash | |
run: | | |
local=$(python hogql_parser/setup.py --version) | |
sed -i "s/hogql-parser==.*/hogql-parser==${local}/g" requirements.in | |
sed -i "s/hogql-parser==.*/hogql-parser==${local}/g" requirements.txt | |
- uses: EndBug/add-and-commit@v9 | |
with: | |
add: '["requirements.in", "requirements.txt"]' | |
message: 'Use new hogql-parser version' | |
default_author: github_actions | |
github_token: ${{ secrets.POSTHOG_BOT_GITHUB_TOKEN }} |