ci: adopt python-semantic-release, fix hardcoded version strings
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
3866c6d6f0
commit
6c31b331f7
3 changed files with 41 additions and 3 deletions
27
.github/workflows/release.yml
vendored
Normal file
27
.github/workflows/release.yml
vendored
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
name: Release
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
|
||||
jobs:
|
||||
release:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.repository == 'JustinZeus/scholarr'
|
||||
permissions:
|
||||
contents: write
|
||||
id-token: write
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.12"
|
||||
- run: pip install python-semantic-release
|
||||
- name: Semantic Release
|
||||
id: release
|
||||
run: semantic-release publish
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
|
@ -5,16 +5,19 @@ import logging
|
|||
import re
|
||||
import threading
|
||||
import time
|
||||
from importlib.metadata import version as pkg_version
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from crossref.restful import Etiquette, Works
|
||||
|
||||
from app.logging_utils import structured_log
|
||||
from app.services.domains.doi.normalize import normalize_doi
|
||||
from app.services.doi.normalize import normalize_doi
|
||||
from app.settings import settings
|
||||
|
||||
_APP_VERSION = pkg_version("scholarr")
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from app.services.domains.publications.types import PublicationListItem, UnreadPublicationItem
|
||||
from app.services.publications.types import PublicationListItem, UnreadPublicationItem
|
||||
|
||||
TOKEN_RE = re.compile(r"[a-z0-9]+")
|
||||
NON_ALNUM_RE = re.compile(r"[^a-z0-9\\s]+")
|
||||
|
|
@ -292,7 +295,7 @@ def _best_candidate_doi(
|
|||
|
||||
def _works_client(email: str | None) -> Works:
|
||||
if email:
|
||||
etiquette = Etiquette(settings.app_name, "0.1.0", "https://scholarr.local", email)
|
||||
etiquette = Etiquette(settings.app_name, _APP_VERSION, "https://scholarr.local", email)
|
||||
return Works(etiquette=etiquette)
|
||||
return Works()
|
||||
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ dependencies = [
|
|||
dev = [
|
||||
"pytest>=8.3,<9.0",
|
||||
"pytest-asyncio>=0.25,<0.26",
|
||||
"python-semantic-release>=9.0,<10.0",
|
||||
"ruff>=0.9",
|
||||
"mypy>=1.14",
|
||||
]
|
||||
|
|
@ -61,6 +62,13 @@ ignore_missing_imports = true
|
|||
check_untyped_defs = false
|
||||
warn_unused_ignores = true
|
||||
|
||||
[tool.semantic_release]
|
||||
version_toml = ["pyproject.toml:project.version"]
|
||||
version_variables = ["frontend/package.json:version"]
|
||||
branch = "main"
|
||||
build_command = ""
|
||||
commit_message = "chore(release): v{version}"
|
||||
|
||||
[tool.setuptools]
|
||||
include-package-data = true
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue