GitHub 작업을 사용하여 PyPI에 패키지 게시 및 릴리스 버전 자동화
1. PyPI에서 API 토큰 생성
API 토큰은 PyPI user account setting에서 만들 수 있습니다. 토큰을 생성하면 API 키 섹션에 나열됩니다.
2. GitHub 비밀에 API 키 추가
이제 동일한 것을 GitHub 리포지토리 비밀에 추가해야 합니다. 이를 추가하려면 저장소 설정으로 이동한 다음
Secrets > actions > New repository secret
를 클릭해야 합니다. 암호의 이름을 PYPI_API_TOKEN
로 추가합니다.3. GitHub 워크플로에 YML 파일 추가
저장소에서
.github/workflows/release_to_pypi.yml
파일을 생성합니다. 이 파일에서 패키지 게시를 위한 구성 코드를 작성해야 합니다. 시작하려면 릴리스 파일에 다음 코드를 작성하십시오.name: Publish ${package_name} to PyPI / GitHub
on:
push:
tags:
- "v*"
이름 키는 작업의 이름을 나타냅니다. 두 번째 청크
on
키는 이 조건이 실행되어야 하는 조건을 나타냅니다. 위의 경우 문자v
로 시작하는 태그가 GitHub에 푸시될 때마다 이 작업이 실행됩니다.이제 이 작업에 대한 작업을 추가하고
jobs:
build-n-publish:
name: Build and publish to PyPI
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: "3.x"
- name: Build source and wheel distributions
run: |
python -m pip install --upgrade build twine
python -m build
twine check --strict dist/*
- name: Publish distribution to PyPI
uses: pypa/gh-action-pypi-publish@master
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
- name: Create GitHub Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
draft: false
prerelease: false
- name: Get Asset name
run: |
export PKG=$(ls dist/ | grep tar)
set -- $PKG
echo "name=$1" >> $GITHUB_ENV
- name: Upload Release Asset (sdist) to GitHub
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: dist/${{ env.name }}
asset_name: ${{ env.name }}
asset_content_type: application/zip
이러한 모든 것은 패키지를 PyPI 라이브러리에 게시하고 GitHub 버전을 릴리스하기 위한 기본 사항입니다. 이 코드를 복사하여
release_to_pypi.yml
라이브러리에 붙여넣기만 하면 됩니다.I only want to address two things here, the first one is, in the password key(
password: ${{ secrets.PYPI_API_TOKEN }}
), the secrets we created in previous step is going to use. Make sure the name of the secret creating in the GitHub repository matched to the name of the above variable. Another things is, the GITHUB_TOKEN key (GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
), this secret is provided by GitHub actions, you don't need to create your own token.
패키지를 PyPI에만 게시하려는 경우(GitHub에서 릴리스하지 않으려면 위 코드에서 마지막 두 섹션, 즉
- name: Create GitHub Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
draft: false
prerelease: false
- name: Get Asset name
run: |
export PKG=$(ls dist/ | grep tar)
set -- $PKG
echo "name=$1" >> $GITHUB_ENV
- name: Upload Release Asset (sdist) to GitHub
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: dist/${{ env.name }}
asset_name: ${{ env.name }}
asset_content_type: application/zip
4. 작동 여부 테스트
마지막으로 작업 흐름이 작동하는지 여부를 테스트할 때입니다. 이를 테스트하려면 먼저
git
를 사용하여 버전을 생성하고,git tag -a "v0.0.1-beta" -m "beta version testing"
git push --tags
이
tag
를 GitHub에 푸시한 후 아래와 같이 GitHub 작업을 트리거해야 합니다.축하합니다! 이 자동화를 성공적으로 통합했습니다.
이 블로그가 마음에 드시면 제 YouTube 채널을 구독하여 지원해 주세요.
Reference
이 문제에 관하여(GitHub 작업을 사용하여 PyPI에 패키지 게시 및 릴리스 버전 자동화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/iamtekson/publish-package-to-pypi-and-release-new-version-using-github-actions-108k텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)