Нажатие на pypi через действия github: как управлять изменениями без обновления номера версии?

Можно использовать действия 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 (т. е. не получать значок отказа, если эта ошибка возникает)?

Действия GitHub выглядят так, как будто поддерживают включение/исключение определенных папок. Может быть, вы можете инициировать загрузку PyPI только тогда, когда ваш каталог src/ обновляется в мастере? docs.github.com/en/actions/using-workflows/…

SNygard 18.04.2023 16:06

Большинство конвейеров CI/CD, которые я знаю, написаны так, что они пытаются загрузить в PyPI только тогда, когда тег git отправляется в репозиторий. Существует множество руководств, показывающих, как это сделать.

sinoroc 18.04.2023 16:19
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как предложил @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 }}

Другие вопросы по теме