Рубрики
Без рубрики

Создайте пакет Pypi (PIP), проверьте его и опубликуйте его, используя действия GitHub (часть 2)

Добро пожаловать назад! Давайте будем использовать действия GitHub для развертывания вашего блестящего нового пакета для Pypi! Базовый SE … помечен Python, DevOps, Github, Pip.

Использование действий GitHub для создания, тестирования и публикации пакета Python (2 части серии)

Добро пожаловать назад! Давайте будем использовать действия GitHub для развертывания вашего блестящего нового пакета для Pypi!

Основная настройка

У нас еще нет репозитория Git, поэтому создайте один:

git init

Далее давайте создадим Репозиторий GitHub

Как только вы закончите с этим, давайте связым вашему репозиторию Git на ваш репозиторий GitHUB:

git remote add origin "https://github.com/USERNAME/REPOSITORY.git"

Далее мы будем совершать и толкать наши изменения:

git add .
git commit -m "First Commit!"
git push origin master

Вы должны увидеть ваш код в прямом эфире на вашем репозитории GitHUB.

Настройка вашего первого действия

Действие GitHub – это файл yaml. Он может быть отредактирован в любом редакторе кода, но я рекомендую собственный редактор Github, потому что он обеспечивает IntelliSense при навеске Ctrl + Пространство Отказ

Создать действие, отправляйтесь на Действия вкладка. Я создам действие для автоматического тестирования и публиковать наш пакет на TestPypi Всякий раз, когда мы подтолкнули наш код в главную ветку.

Мы можем выбрать шаблон действий, или мы можем начать с нуля. Я собираюсь выбрать последний, поэтому нажмите Установите рабочий процесс самостоятельно ссылка.

Это создаст новый файл, который вы можете назвать все возможное. Я назову это Test-and-upload-to-testpi.yml Отказ Убедитесь, что у него есть расширение ямл или yml. иначе GitHub не будет запускать его.

Это должен быть стартовый код, который вы получаете:

# This is a basic workflow to help you get started with Actions

name: CI

# Controls when the action will run. 
on:
  # Triggers the workflow on push or pull request events but only for the master branch
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v2

      # Runs a single command using the runners shell
      - name: Run a one-line script
        run: echo Hello, world!

      # Runs a set of commands using the runners shell
      - name: Run a multi-line script
        run: |
          echo Add other actions to build,
          echo test, and deploy your project.

Анатомия Действия GitHub

Давайте пройдемся через этот файл пошаговый.

имя : Это имя вашего действия. Он появится на вкладке Действия под этим именем

на : Контролирует, какие события вызывают ваше действие. В настоящее время действие работает, когда есть запрос на тягу или толчок на Мастер Филиал, но есть и другие мероприятия, как и создание релизов, проблем, добавления сотрудников и т. Д. Рабочий процесс-Диспетчер Событие добавит кнопку на вкладке «Действия», которые позволят вам запустить это действие.

Работа : Определяет работу в действии. Здесь у нас есть одна работа под названием построить Отказ

Внутри работы постройки:

пробега : ОС для работы. Поддерживает Ubuntu-Neighle , Windows-Neighle и MacOS-Neighle Отказ

Шаги : Шаги в вашей работе.

Внутри шагов

использует : Другое действие GitHub для использования (это необязательно)

Имя : Имя шага. Появится на вкладке Действия.

Беги : Команда для запуска.

Трубопровод ( | ), что вы видите после команды запуска в некоторых шагах, это Multi-line string string yaml. Это позволяет строку проводить несколько строк, каждую новую строку, указывающую новую команду.

Специальные действия

Вы можете увидеть, что наши действия используют версию v2 Действия/Оформление . Это действие, сделанное кем-то еще, и мы используем его. Он проверяет наш код и копирует его на машину, поэтому мы можем использовать его. Есть несколько других действий, таких как доступные в Github Marketplace

Создавая наше действие

У нас будет 5 основных шагов в наших действиях:

  • Оформить заказ наш код
  • Установите Python
  • Установите наши зависимости
  • Испытайте, используя Unittest.
  • Опубликовать для TestPypi

Для первых двух шагов у нас есть действия, которые сделают это для нас, а именно Действие/Оформление @ v2 и Действия/Setup-Python @ v2 Отказ

Я хочу, чтобы действие было запущено, когда мы подтолкнули наш код в главную ветку, и я также хочу иметь кнопку на вкладке «Действия», чтобы вручную проверить и загрузить для меня проект.

Вот окончательный код для наших действий:

# This is a basic workflow to help you get started with Actions

name: Test & Upload to TestPyPI

# Controls when the action will run. 
on:
  # Triggers the workflow on push to the master branch
  push:
    branches: [ master ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v2

      # Sets up python3
      - uses: actions/setup-python@v2
        with:
          python-version: 3.8 

      # Installs and upgrades pip, installs other dependencies and installs the package from setup.py
      - name: "Installs and upgrades pip, installs other dependencies and installs the package from setup.py"
        run: |
          # Upgrade pip
          python3 -m pip install --upgrade pip
          # Install build deps
          python3 -m pip install setuptools wheel twine
          # If requirements.txt exists, install from it
          if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
          # Install the package from setup.py
          python3 setup.py install

      # Tests with unittest
      - name: Test with unittest
        run: |
          cd tests
          python3 -m unittest discover
          cd ..

      # Upload to TestPyPI
      - name: Build and Upload to TestPyPI
        run: |
          python3 setup.py sdist bdist_wheel
          python3 -m twine upload dist/*
        env:
          TWINE_USERNAME: __token__
          TWINE_PASSWORD: ${{ secrets.TWINE_TEST_TOKEN }}
          TWINE_REPOSITORY: testpypi

Что такое секреты?

Секреты являются способом прохождения переменных среды для наших действий. В этом случае мы использовали секрет Twine_test_token держать наш ключ API.

Создание секрета

Перейдите на вкладку «Настройки» и выберите «Секреты». Нажмите Создать секрет сверху справа и поставьте Twine_test_token Для имени и вставьте ключ вашей API для значения.

Теперь сохраните файл и просмотрите свои действия работы с вкладки Действия!

На нашей вкладке Действия мы видим, что это действие работает:

После исправления небольшой ошибки с нашими тестами , вы можете увидеть, что наши действия потерпели неудачу, указанные значком Red X

Это потому, что всякий раз, когда мы загружаем пакет на Pypi (или TestPypi), мы не можем загрузить пакет одной и той же версии дважды, Итак, давайте вернемся к Setup.py.

И наши действия успешно выполнены!

Загрузка в Pypi

Мы сделали TEATPYPI. А как насчет настоящего индекса пакета Python? Я не собираюсь загружать пакет каждый раз, когда мы нажимаем Master, так как могут быть некоторые изменения, не готовы к производству. Вместо этого я собираюсь использовать функцию релизов Github.

Создайте новое действие, нажав новый рабочий процесс на вкладке «Действия» и следуя тем же этапам, что и ранее. На этот раз я называю свои действия Загрузить в PIP.yml

Вот мои действия:

# This is a basic workflow to help you get started with Actions

name: Upload to PIP

# Controls when the action will run. 
on:
  # Triggers the workflow when a release is created
  release: 
    types: [created]
  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "upload"
  upload:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v2

      # Sets up python
      - uses: actions/setup-python@v2
        with:
          python-version: 3.8

      # Install dependencies
      - name: "Installs dependencies"
        run: |
          python3 -m pip install --upgrade pip
          python3 -m pip install setuptools wheel twine

      # Build and upload to PyPI
      - name: "Builds and uploads to PyPI"
        run: |
          python3 setup.py sdist bdist_wheel
          python3 -m twine upload dist/*
        env:
          TWINE_USERNAME: __token__
          TWINE_PASSWORD: ${{ secrets.TWINE_TOKEN }}

Добавляя другой секрет

Давайте добавим еще один секрет, на этот раз называется Twine_token И дайте ему ценность вашего токена Pypi API.

Тестирование нашего действия

Давайте создадим новый выпуск, перейдя в раздел «Выпуск» (чтобы сделать это, нажмите «Новый релиз» на правой стороне вкладки «Основной код»).

Я предлагаю назвать тег с версией в setup.py префикс с V Отказ

И наш проект успешно загружен в Pypi!

Поздравляем 🥳! Вы только что узнали основы действий GitHub, Pypi Projects и DEVOPS! Дайте себе погладить на спину!

Застрявший? Github repo Pypi Github Действия QuickStart Загрузка пакета на Pypi

Если вы наслаждались этим постом, и хотели бы увидеть больше, дайте мне знать в комментариях, а также следуйте за мной для большего количества контента, как это 😀

Использование действий GitHub для создания, тестирования и публикации пакета Python (2 части серии)

Оригинал: “https://dev.to/arnu515/create-a-pypi-pip-package-test-it-and-publish-it-using-github-actions-part-2-1o83”