การกระทำของ GitHub ที่มีความคิดเห็นเพื่อทำให้แพ็คเกจการเผยแพร่เป็นไปโดยอัตโนมัติไปยัง PYPI - โดยใช้บทกวีและ GitHub เผยแพร่
เราเผยแพร่การกระทำนี้เพราะเราใช้มันในโครงการของเราและคิดว่ามันจะเป็นประโยชน์กับผู้อื่นเช่นกัน การกระทำนี้ เปิดให้มีการทำงานร่วมกันและการบริจาคทุกประเภท - เรายินดีที่จะรับข้อเสนอแนะปัญหาปัญหาดึงคำขอหรือเพียงแค่ความรุ่งโรจน์
main , master , beta ฯลฯข้ามไปที่ตัวอย่าง: - เผยแพร่ไปยัง PYPI สาธารณะ - ด้วยการพึ่งพาส่วนตัว - ไปยัง PYPI ส่วนตัว - ด้วยการพึ่งพาส่วนตัว
การกระทำนี้จะถือว่าคุณใช้บทกวีเป็นตัวจัดการแพ็คเกจของคุณและมีไฟล์ pyproject.toml และ poetry.lock ในไดเรกทอรีรากของที่เก็บของคุณ
my_project/
├─ example_package/
│ ├─ __init__.py
├─ pyproject.toml
├─ poetry.lock
หากคุณไม่ได้ใช้นักวิ่งที่กำหนดเองคุณสามารถใช้ฟังก์ชั่นในตัว
GITHUB_TOKENกับการอนุญาตการเขียนเป็นACCESS_TOKENเท่าที่เห็นในตัวอย่างแรก ดู [https://docs.github.com/en/actions/security-guides/automatic-token-authentication#using-the-github_token-in-workflow เหมือนที่พบ-//docs.github. com/en/en/action/security
เราขอแนะนำให้คุณใช้เวิร์กโฟลว์นี้กับรีจิสทรีทดสอบ PYPI เช่น PUBLISH_REGISTRY: "https://test.pypi.org/simple/"จนกว่าคุณจะสามารถยืนยันว่าเวิร์กโฟลว์ของคุณทำงานตามที่คาดไว้
name : Build and publish python package
on :
release :
types : [ published ]
jobs :
publish-service-client-package :
runs-on : ubuntu-latest
permissions :
contents : write
steps :
- name : Publish PyPi package
uses : code-specialist/pypi-poetry-publish@v1
with :
ACCESS_TOKEN : ${{ secrets.GITHUB_TOKEN }}
PUBLISH_REGISTRY_PASSWORD : ${{ secrets.PYPI_TOKEN }} 1.0.0 (ทริกเกอร์)pyproject.toml และ __init__.py ในไดเรกทอรีแพ็คเกจตามแท็ก./pyproject.toml
[ tool . poetry ]
name = " code-specialist-example-package "
version = " 0.1.0 "
description = " Example package "
authors = [ " Code Specialist " ]
packages = [{ include = " example_package " }]
[ tool . poetry . dependencies ]
python = " ^3.10 "./example_package/init.py
__version__ = "0.1.0"การกระทำจะเปลี่ยนแปลงเนื้อหาของที่เก็บของคุณเพื่อหลีกเลี่ยงความขัดแย้งและเวอร์ชันที่ไม่ตรงกัน:
pyproject.toml
[ tool . poetry ]
name = " code-specialist-example-package "
version = " 1.0.0 " # adjusted to 1.0.0
description = " Example package "
authors = [ " Code Specialist " ]
packages = [{ include = " example_package " }]
[ tool . poetry . dependencies ]
python = " ^3.10 "./example_package/init.py
__version__ = "1.0.0" # adjusted to 1.0.0 จำเป็นต้องใช้อินพุตที่ทำเครื่องหมายด้วย (✓) หากตั้งค่า
POETRY_DEPENDENCY_REGISTRY_URL
| ชื่อ | คำอธิบาย | บังคับ | ค่าเริ่มต้น |
|---|---|---|---|
ACCESS_TOKEN | โทเค็น GitHub ที่มีการเข้าถึงการเขียนไปยังที่เก็บเพื่อปรับเวอร์ชัน | ||
PUBLISH_REGISTRY_PASSWORD | ไม่ว่าจะเป็นรหัสผ่านสำหรับผู้ใช้รีจิสทรีหรือโทเค็นร่วมกับ __token__ เป็น PUBLISH_REGISTRY_USERNAME | ||
PUBLISH_REGISTRY_USERNAME | ชื่อผู้ใช้สำหรับรีจิสทรี PYPI | __token__ | |
PACKAGE_DIRECTORY | ไดเรกทอรีแพ็คเกจอยู่ในเช่น ./src/ , ./example_package | - | |
POETRY_VERSION | เวอร์ชันบทกวีเพื่อดำเนินการสร้างด้วย | 1.1.8 | |
POETRY_CORE_VERSION | เวอร์ชันรหัสบทกวีเพื่อดำเนินการบิลด์ด้วย | 1.0.4 | |
PYTHON_VERSION | เวอร์ชัน Python เพื่อดำเนินการสร้างด้วย | 3.10 | |
BRANCH | สาขาที่จะเผยแพร่จาก | master | |
PUBLISH_REGISTRY | รีจิสทรีเพื่อเผยแพร่ไปยัง https://test.pypi.org/simple/ | https://pypi.org/simple/ | |
POETRY_DEPENDENCY_REGISTRY_URL | อนุญาตให้กำหนดรีจิสทรีที่กำหนดเองที่จะใช้โดยบทกวีสำหรับการติดตั้งการพึ่งพาเช่น https://pypi.code-specialist.com/simple/ | ||
POETRY_DEPENDENCY_REGISTRY_NAME | ชื่อที่ใช้สำหรับรีจิสทรีที่กำหนดเองในการพึ่งพา ต้องตรงกับชื่อใน pyproject.toml | () | |
POETRY_DEPENDENCY_REGISTRY_USERNAME | ชื่อผู้ใช้สำหรับรีจิสทรีที่กำหนดเอง | () | |
POETRY_DEPENDENCY_REGISTRY_PASSWORD | รหัสผ่านสำหรับรีจิสทรีที่กำหนดเอง | () | |
POETRY_CUSTOM_REGISTRY_AUTH | ประเภทการรับรองความถูกต้องสำหรับรีจิสทรีที่กำหนดเอง | http-basic |
แต่ละตัวอย่างต้องการให้คุณ:
.github/workflows/publish.yaml1.0.0 และการกระทำจะถูกเรียกใช้และเผยแพร่แพ็คเกจของคุณหากมีกรณีการใช้งานที่คุณต้องการดูโปรดเปิดปัญหาหรือคำขอดึง
PUBLISH_REGISTRY_PASSWORD ด้วยโทเค็นที่ถูกต้อง ในการใช้ GITHUB_TOKEN คุณต้องให้สิทธิ์สำหรับโทเค็น ในกรณีนี้คุณต้องการ contents:write
publish.yaml
name : Build and publish python package
on :
release :
types : [ published ]
jobs :
publish-service-client-package :
runs-on : ubuntu-latest
permissions :
contents : write
steps :
- name : Publish PyPi package
uses : code-specialist/pypi-poetry-publish@v1
with :
PACKAGE_DIRECTORY : " ./example-package/ "
PYTHON_VERSION : " 3.10 "
ACCESS_TOKEN : ${{ secrets.GITHUB_TOKEN }}
PUBLISH_REGISTRY_PASSWORD : ${{ secrets.PUBLISH_REGISTRY_PASSWORD }}PUBLISH_REGISTRY_PASSWORD ด้วยโทเค็นที่ถูกต้องACCESS_TOKEN access ด้วยการเข้าถึงการเขียนไปยังที่เก็บ GitHubpublish.yaml
name : Build and publish python package
on :
release :
types : [ published ]
jobs :
publish-service-client-package :
runs-on : ubuntu-latest
steps :
- name : Publish PyPi package
uses : code-specialist/pypi-poetry-publish@v1
with :
PACKAGE_DIRECTORY : " ./example-package/ "
PYTHON_VERSION : " 3.10 "
ACCESS_TOKEN : ${{ secrets.ACCESS_TOKEN }}
PUBLISH_REGISTRY_PASSWORD : ${{ secrets.PUBLISH_REGISTRY_PASSWORD }}
PUBLISH_REGISTRY : " https://test.pypi.org/legacy/ "PUBLISH_REGISTRY_USER ชื่อผู้ใช้สำหรับ PYPI RegistryPUBLISH_REGISTRY_PASSWORD ด้วยรหัสผ่านสำหรับผู้ใช้ PUBLISH_REGISTRY_USERACCESS_TOKEN access ด้วยการเข้าถึงการเขียนไปยังที่เก็บ GitHubpublish.yaml
name : Build and publish python package
on :
release :
types : [ published ]
jobs :
publish-service-client-package :
runs-on : ubuntu-latest
steps :
- name : Publish PyPI package
uses : code-specialist/pypi-poetry-publish@v1
with :
PACKAGE_DIRECTORY : " ./example-package/ "
PYTHON_VERSION : " 3.10 "
ACCESS_TOKEN : ${{ secrets.ACCESS_TOKEN }}
PUBLISH_REGISTRY_PASSWORD : ${{ secrets.PUBLISH_REGISTRY_PASSWORD }}
PUBLISH_REGISTRY_USER : ${{ secrets.PUBLISH_REGISTRY_USER }}
PUBLISH_REGISTRY : " https://pypi.code-specialist.com/simple/ "ACCESS_TOKEN access ด้วยการเข้าถึงการเขียนไปยังที่เก็บ GitHubPUBLISH_REGISTRY_USER ชื่อผู้ใช้สำหรับ PYPI RegistryPUBLISH_REGISTRY_PASSWORD ด้วยรหัสผ่านสำหรับผู้ใช้ PUBLISH_REGISTRY_USERPOETRY_DEPENDENCY_REGISTRY_USERNAME ชื่อผู้ใช้สำหรับรีจิสทรีที่กำหนดเองPOETRY_DEPENDENCY_REGISTRY_PASSWORD รหัสผ่านสำหรับรีจิสทรีที่กำหนดเองpublish.yaml
name : Build and publish python package
on :
release :
types : [ published ]
jobs :
publish-service-client-package :
runs-on : ubuntu-latest
steps :
- name : Publish PyPI package
uses : code-specialist/pypi-poetry-publish@v1
with :
ACCESS_TOKEN : ${{ secrets.ACCESS_TOKEN }}
PUBLISH_REGISTRY_USER : ${{ secrets.PUBLISH_REGISTRY_USER }}
PUBLISH_REGISTRY_PASSWORD : ${{ secrets.PUBLISH_REGISTRY_PASSWORD }}
PUBLISH_REGISTRY : " https://pypi.code-specialist.com "
POETRY_DEPENDENCY_REGISTRY_URL : " https://pypi.code-specialist.com "
POETRY_DEPENDENCY_REGISTRY_NAME : " codespecialist "
POETRY_DEPENDENCY_REGISTRY_USERNAME : ${{ secrets.CUSTOM_PUBLISH_REGISTRY_USERNAME }}
POETRY_DEPENDENCY_REGISTRY_PASSWORD : ${{ secrets.CUSTOM_PUBLISH_REGISTRY_PASSWORD }} สำหรับสิ่งนี้เพื่อติดตั้งการพึ่งพา private-code-specialist-example-package จาก https://pypi.code-specialist.com/simple/ , pyproject.toml ที่สอดคล้องกันจะมีลักษณะเช่นนี้:
[ tool . poetry ]
name = " code-specialist-example-package "
version = " 1.0.0 " # adjusted to 1.0.0
description = " Example package "
authors = [ " Code Specialist " ]
packages = [{ include = " example_package " }]
[[ tool . poetry . source ]]
name = " codespecialist "
url = " https://pypi.code-specialist.com "
[ tool . poetry . dependencies ]
python = " ^3.10 "
private-code-specialist-example-package = { version = " ^1.0.0 " , source = " codespecialist " }