Эйа, ребята,
Код этого поста можно найти на GitHub (см. здесь ).
Как указано в предыдущих постах, наш проект теперь можно загрузить из GitHub и установить через PIP на локальном уровне. Но пакеты Python обычно устанавливаются из индекса упаковки Python (PYPI) с простым именем, легко запоминающимся.
Итак, как мы можем выпустить наш проект, чтобы другие могли загрузить его удобно? Мы уверены, что наша основная линия находится в выпущенном состоянии, а затем мы
- Таким образом, отметьте наш проект и придерживайтесь схемы управления версиями
- Выпустить его на GitHub
- Выпустите его на PYPI
- Теги и выпуск GIT в GitHub
- Публикация в PYPI
- Автоматизированный выпуск с действиями GitHub
В зависимости от вида/размера разработчиков проекта используют рабочие процессы GIT, работая в качестве команды, но для небольших проектов достаточно работать на основной линии и создавать только филиалы при внедрении функций, которые могут повлиять на стабильность проекта. Таким образом, мы всегда сохраняем основную линию в высвобождаемом состоянии.
Затем мы сможем сделать новый релиз, поскольку мы собрали достаточно исправлений/функций. Разработчики выбирают любого Семантическое управление версией или Календарь версии как схема управления версиями. Мы используем первое и называем наш первый релиз V0.1.0
Анкет Мы указываем на коммит, который хотим освободить, отметив его.
Мы можем использовать легкие или аннотированные теги, которые содержат дополнительные метаданные. Мне нравится использовать легкие метки. Git Tag
Теги команды по умолчанию последний коммит. Мы также можем пометить старые коммиты при указании идентификатора коммита (пример: Tag v1.1.0 C52E686
). В этом случае мы будем пометить последний коммит и втянуть его в удаленное репо.
$ git tag v0.1.0 # git tag$ git tag # returns a list of all tags $ git push origin v0.1.0
Теперь мы просматриваем наш путь в репозиторий GitHub и создаем релиз. Мы идем в Выпуски
🠲 Создайте новый релиз
и введите тег, который мы хотим освободить. Мы можем добавить двоичные файлы, если мы выпустим проекты, которые используют скомпилированные языки или записи записи. Мне нравится документировать изменения релиза в ChangeLog.md
файл.
Наконец, мы публикуем релиз. В следующем разделе мы будем упаковать наш проект и опубликуем его в индексе упаковки Python (PYPI).
Чтобы опубликовать проект Python в PYPI, мы должны упаковать его, генерируя распределение источника (.tar.gz) и распределение колес (.whl).
$ pip install wheel $ python setup.py sdist bdist_wheel
Сгенерированные файлы можно найти в Dist
каталог. Теперь мы должны зарегистрироваться в Pypi Прежде чем мы сможем загрузить наш проект. Для целей тестирования удобно загрузить проект на Testpypi первый. Итак, давайте сделаем это.
$ pip install twine $ twine upload --repository testpypi dist/*
Теперь давайте проверим установку tihttp
Анкет
$ pip install -i https://test.pypi.org/pypi/ --extra-index-url https://pypi.org/simple tihttp
Наши инструменты работают отлично!
$ tihttp -H google.com
И теперь, когда мы уверены, что все работает, пришло время загрузить вещи в PYPI.
$ twine upload --repository pypi dist/* $ pip install tihttp
Имейте в виду, что вы можете загрузить конкретную семантическую версию только один раз в PYPI, поэтому важно проверить загрузку версии, когда только начинает процесс развертывания для нового проекта. В противном случае вы должны увеличить версию выпуска и повторить процесс (в этом случае мир тоже не закончится).
Оба процесса (выпуск и публикация GitHub в PYPI) могут быть автоматизированы с использованием действий GitHub. Автоматизация здесь не настолько мощная для проекта такого размера, но все же мне очень нравятся действия GitHub, и я хочу позволить вам помнить, насколько это приятно! 😀
Инструкции для рабочих процессов хранятся как Yaml-файл в рамках .github/Workflow/
каталог проекта. Теги можно автоматически выпустить, используя действие GitHub GH-обращение Анкет
name: GH Release on: push: tags: - 'v*.*.*' jobs: github-release: runs-on: ubuntu-latest steps: - uses: actions/checkout@master - name: Release uses: softprops/action-gh-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Как вы можете увидеть, каждый крупный, незначительный или патч -приращение создаст новый релиз.
Наконец, я хочу показать вам более мощный рабочий процесс для автоматической загрузки выпусков в PYPI.
name: Upload Python Package on: release: types: [created] jobs: pypi-release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 - name: Install dependencies run: | python -m pip install --upgrade pip pip install setuptools wheel twine - name: Build and publish env: TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} run: | python setup.py sdist bdist_wheel twine upload dist/*
Чтобы хранить учетные данные, откройте ваш репозиторий на GitHub, а затем перейдите к Настройки
🠲 Секреты
🠲 Новый репозиторий секрет
Затем введите имя (например, pypi_username) и его значение.
Хорошо, я надеюсь, что этот пост имел для вас какую -то ценность. Желаю всем отличного дня! 🤠
Оригинал: “https://dev.to/niklastiede/how-to-release-and-publish-python-apps-at-pypi-3nn9”