Skip to content

Commit

Permalink
Add release workflow
Browse files Browse the repository at this point in the history
- The workflow does no release if a valid environment is not selected.
- By default, the workflow will create a .devN release using the
  current uap-core master.
  • Loading branch information
masklinn committed Nov 23, 2024
1 parent 4dcf29c commit e416ccc
Show file tree
Hide file tree
Showing 2 changed files with 112 additions and 0 deletions.
89 changes: 89 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
name: Publish Python distribution to PyPI and TestPyPI

on:
schedule:
# schedule a dev release on every 1st of the month, at 2034 UTC
- cron: "34 20 1 * *"
workflow_dispatch:
inputs:
tag:
description: "uap-core ref to release"
type: string
environment:
description: "environment to release for (testpypy or pypy)"
type: environment

jobs:
build:
name: Build distribution
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
- name: update core
# needs to detach because we can update to a tag
run: git -C uap-core switch --detach ${{ inputs.tag || 'master' }}
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.x"

- name: Install pypa/build
run: python3 -m pip install build --user
- name: Build a binary wheel and a source tarball
run: python3 -m build -w ua-parser-builtins
- run: mv ua-parser-builtins/dist .
- name: Store the distribution packages
uses: actions/upload-artifact@v4
with:
name: python-package-distributions
path: dist/

publish-to-testpypi:
name: Publish to TestPyPI
if: ${{ github.event.inputs.environment == 'testpypi' }}
needs:
- build
runs-on: ubuntu-latest

environment:
name: testpypi
url: https://test.pypi.org/p/ua-parser-builtins

permissions:
id-token: write

steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Publish
uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/

publish-to-pypi:
name: publish
if: ${{ github.event_name == 'schedule' || github.event.inputs.environment == 'pypi' }}
needs:
- build
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/ua-parser-builtins
permissions:
id-token: write

steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Publish
uses: pypa/gh-action-pypi-publish@release/v1
23 changes: 23 additions & 0 deletions ua-parser-builtins/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,32 @@ name = "ua-parser-builtins"
description = "Precompiled rules for User Agent Parser"
readme = "README.md"
dependencies = ["ua-parser"]
requires-python = ">=3.9"
license = {text = "Apache 2.0"}
urls = {repository = "https://github.com/ua-parser/uap-python"}
dynamic = ["version"]
maintainers = [
{ name = "masklinn", email = "[email protected]" }
]

classifiers = [
"Development Status :: 4 - Beta",
"Environment :: Web Environment",
"Intended Audience :: Developers",
"Operating System :: OS Independent",
"License :: OSI Approved :: Apache Software License",
"Programming Language :: Python",
"Topic :: Internet :: WWW/HTTP",
"Topic :: Software Development :: Libraries :: Python Modules",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
# "Programming Language :: Python :: Implementation :: GraalPy",
]

[tool.hatch.build.hooks.custom]

Expand Down

0 comments on commit e416ccc

Please sign in to comment.