feat(ci): add Forgejo PyPI publish workflow and make target
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s

Adds publish-forgejo and a workflow_dispatch/tag workflow so issue-core
0.2.x can be published to forgejo.coulomb.social before vergabe-teilnahme
drops Gitea lockfile URLs.
This commit is contained in:
tegwick 2026-07-12 00:42:52 +02:00
parent 36ed581d89
commit d030c20dff
2 changed files with 52 additions and 0 deletions

View file

@ -0,0 +1,41 @@
name: Publish Python package
on:
push:
tags:
- "v*"
workflow_dispatch:
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Fetch source archive
env:
REF: ${{ github.sha }}
run: |
set -eu
mkdir -p buildctx
wget -qO /tmp/repo.tar.gz \
"https://forgejo.coulomb.social/${GITHUB_REPOSITORY}/archive/${REF}.tar.gz"
tar xzf /tmp/repo.tar.gz -C buildctx --strip-components=1
- name: Set up Python
run: |
python3 -m pip install --upgrade pip build twine
- name: Build and validate distributions
working-directory: buildctx
run: |
python3 -m build
python3 -m twine check dist/*
- name: Upload to Forgejo PyPI
working-directory: buildctx
env:
TWINE_USERNAME: ${{ secrets.FORGEJO_PYPI_USER }}
TWINE_PASSWORD: ${{ secrets.FORGEJO_PYPI_TOKEN }}
run: >-
python3 -m twine upload
--repository-url https://forgejo.coulomb.social/api/packages/coulomb/pypi
dist/*

View file

@ -66,6 +66,7 @@ ISSUE_CLI := $(shell command -v issue 2> /dev/null)
PYTHON ?= python3
GITEA_PACKAGE_OWNER ?= coulomb
GITEA_PYPI_REPOSITORY_URL ?= https://gitea.coulomb.social/api/packages/$(GITEA_PACKAGE_OWNER)/pypi
FORGEJO_PYPI_REPOSITORY_URL ?= https://forgejo.coulomb.social/api/packages/$(GITEA_PACKAGE_OWNER)/pypi
# Core Issue Operations
.PHONY: issue-list
@ -238,6 +239,16 @@ ifndef TWINE_PASSWORD
endif
$(PYTHON) -m twine upload --repository-url "$(GITEA_PYPI_REPOSITORY_URL)" dist/*
.PHONY: publish-forgejo
publish-forgejo: package-check ## Publish distributions to the Coulomb Forgejo PyPI registry
ifndef TWINE_USERNAME
$(error TWINE_USERNAME is required)
endif
ifndef TWINE_PASSWORD
$(error TWINE_PASSWORD is required)
endif
$(PYTHON) -m twine upload --repository-url "$(FORGEJO_PYPI_REPOSITORY_URL)" dist/*
# Feedback and Continuous Improvement
.PHONY: feedback
feedback: ## Submit feedback (Usage: make feedback MSG="your feedback")