Можно использовать действия github для публикации в PyPI каждый раз, когда в основной ветке происходит обновление.
Например, можно использовать: https://github.com/marketplace/actions/publish-python-poetry-package
По уважительным причинам публикация на PyPI не удастся, если номер версии не будет обновлен («Ошибка HTTP 400: файл уже существует».). (уважительные причины объясняются здесь: https://pypi.org/help/#file-name-reuse)
Тем не менее, содержимое ветки master иногда может обновляться способами, которые не оправдывают обновления номера версии (например, если обновляются действия github, а не программное обеспечение).
Какой рекомендуемый способ справиться с этим и как это можно реализовать? Например, можно ли запустить действие github для публикации только в том случае, если есть обновление версии? или только если исходный код был обновлен? Или есть способ игнорировать ошибку Http 400 (т. е. не получать значок отказа, если эта ошибка возникает)?
Большинство конвейеров CI/CD, которые я знаю, написаны так, что они пытаются загрузить в PyPI только тогда, когда тег git отправляется в репозиторий. Существует множество руководств, показывающих, как это сделать.
Как предложил @sinoroc, кажется подходящим для публикации в новом теге.
---
name: pypi_publish
on:
push:
tags:
- '**'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build and publish to pypi
uses: JRubics/[email protected]
with:
pypi_token: ${{ secrets.PYPI_TOKEN }}
Действия GitHub выглядят так, как будто поддерживают включение/исключение определенных папок. Может быть, вы можете инициировать загрузку PyPI только тогда, когда ваш каталог
src/
обновляется в мастере? docs.github.com/en/actions/using-workflows/…