Skip to content

Update ci to run on Python 3.14 as well (#1703) #4855

Update ci to run on Python 3.14 as well (#1703)

Update ci to run on Python 3.14 as well (#1703) #4855

Workflow file for this run

name: CI
on:
workflow_dispatch: {}
push:
branches:
- master
- beta
- sdk-release/**
- feature/**
tags:
- v[0-9]+.[0-9]+.[0-9]+*
pull_request:
branches:
- master
- beta
- private-preview
- sdk-release/**
- feature/**
jobs:
lint:
name: Static Checks
runs-on: "ubuntu-24.04"
steps:
- uses: extractions/setup-just@v2
- uses: actions/checkout@v3
- name: Set up Python 3
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: check examples w/ mypy (against [email protected])
run: just typecheck-examples
# skip deps on all these since mypy installed everything
- name: check linting
run: just --no-deps lint
- name: check formatting
run: just --no-deps format-check
# pyright depends on node, which it handles and installs for itself as needed
# we _could_ run setup-node to make it available for it if we're having reliability problems
- name: check types (all Python versions)
run: |
set -eox
for minor in {6..12}; do
just --no-deps typecheck $minor
done
build:
name: Build
runs-on: "ubuntu-24.04"
steps:
- uses: extractions/setup-just@v2
- uses: actions/checkout@v3
- name: Set up Python 3
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Build and check package
run: |
just build
- name: "Upload Artifact"
uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
test:
# Specific ubuntu version to support python 3.7 testing
# see https://github.com/actions/setup-python/issues/544#issuecomment-1332535877 for list of supported versions
# move to ubuntu-latest when we drop 3.7
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
python_version:
# The last ~5 versions, once we're on schedule
# https://docs.stripe.com/sdks/versioning?lang=python#stripe-sdk-language-version-support-policy
- "3.7"
- "3.8"
- "3.9"
- "3.10"
- "3.11"
- "3.12"
- "3.13"
- "3.14"
- "pypy-3.7"
- "pypy-3.8"
- "pypy-3.9"
- "pypy-3.10"
- "pypy-3.11"
name: Test (${{ matrix.python_version }})
steps:
- uses: extractions/setup-just@v2
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python_version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python_version }}
- uses: stripe/openapi/actions/stripe-mock@master
- name: "run tests"
run: just test
publish:
name: Publish
if: >-
((github.event_name == 'workflow_dispatch') || (github.event_name == 'push')) &&
startsWith(github.ref, 'refs/tags/v') &&
endsWith(github.actor, '-stripe')
needs: [build, test, lint]
runs-on: "ubuntu-24.04"
steps:
- uses: extractions/setup-just@v2
- uses: actions/checkout@v3
- name: Download all workflow run artifacts
uses: actions/download-artifact@v4
with:
name: dist
path: dist
- name: Set up Python 3
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Install tools
run: just install-build-deps
- name: Publish packages to PyPI
# could probably move this into a just recipe too?
run: |
set -ex
source .venv/bin/activate
python -m twine upload --verbose dist/*
env:
TWINE_USERNAME: ${{ secrets.TWINE_USERNAME }}
TWINE_PASSWORD: ${{ secrets.TWINE_PASSWORD }}
- uses: stripe/openapi/actions/notify-release@master
if: always()
with:
bot_token: ${{ secrets.SLACK_BOT_TOKEN }}