ควรจัดการลิงก์พึ่งพาส่วนตัวใน setup.py อย่างไร


10

ที่ทำงานเราใช้เซิร์ฟเวอร์ pypi ส่วนตัว เซิร์ฟเวอร์ pypi นี้มีการระบุไว้เป็นลิงค์พึ่งพา:

...
from setuptools import setup

config = ConfigParser.ConfigParser()
rc = os.path.join(os.path.expanduser('~'), '.pypirc')
config.read(rc)
dependency_links = [
    'https://{}:{}@<private_url>'.format(
        config.get('dc', 'username'), config.get('dc', 'password'))]

setup(
    dependency_links=dependency_links,
    ...)

สิ่งนี้ใช้ได้ดีในกรณีส่วนใหญ่ของเรา อย่างไรก็ตามเมื่อไม่นานมานี้เราต้องติดตั้งแพ็คเกจบนเซิร์ฟเวอร์ลูกค้า สำหรับสิ่งนี้เราต้องคัดลอกที่ถูกต้อง.pypircก่อนที่เราจะสามารถติดตั้งแพ็คเกจใด ๆ

รหัสข้างต้นก็รู้สึกเหมือนแฮ็คสกปรก

วิธีที่เหมาะสมในการระบุลิงค์พึ่งพาอย่างปลอดภัยโดยไม่ต้องใช้ข้อมูลประจำตัว hardcoding คืออะไร?


1
ฉันเห็นสิ่งที่คุณหมายถึง ไม่ใช่ว่าแฮ็คสกปรก แต่หมายความว่าคุณกำลังเชื่อมต่อการรับรองความถูกต้องกับการจัดการการพึ่งพาแบบต่อแพคเกจ วิธีการนี้ไม่สามารถพกพาหรือปรับขนาดได้
Joel Cornett

คำตอบ:


1

ดูเหมือนว่าสมเหตุสมผลและไม่ใช่แฮ็คที่สกปรกเลย

  1. มีไฟล์กำหนดค่าสำหรับข้อมูลรับรอง
  2. มีวิธีฉีด URL ที่กำหนดเอง + เครดิตเข้าสู่การอ้างอิง

งานกำลังทำอยู่และทำได้ดีวิธีเดียวที่จะทำให้สิ่งนี้ดีขึ้นคือการจัดทำเอกสารและลองใช้กับการตั้งค่าที่แตกต่างหลากหลายหรือกับเซิร์ฟเวอร์ pypi หลายตัวและปัญหาที่อยู่ที่เกิดขึ้นจากสิ่งนั้น


0

หนึ่งเป็นไปได้จะได้รับการตั้งค่าตัวแปรของสภาพแวดล้อม นี้สามารถทำได้ด้วยเครื่องมือที่ใช้งานเช่นเบิ้ล จัดเก็บความลับของคุณด้วยBlackboxหรือVault ของ Ansible

อีกทางเลือกหนึ่ง: การสร้างคอนเทนเนอร์จะช่วยได้เนื่องจากทุกอย่างที่จำเป็นในการใช้งานซอฟต์แวร์นั้นถูกสร้างขึ้น


0

ระวังให้มากเมื่อใช้โซลูชันนี้ ตามที่ระบุไว้ในเอกสาร :

พวกเขาจะถูกเขียนลงในเมตาดาต้าของไข่เพื่อใช้งานโดยเครื่องมือเช่น EasyInstall เพื่อใช้เมื่อติดตั้งไฟล์ .egg

.eggเช่นข้อมูลประจำตัวของคุณจะถูกกระจายใน โดยการรูตผ่านsetuptoolsซอร์สโค้ดฉันพบว่าภายในดูเหมือนว่าจะใช้easy_installคำสั่งเพื่อติดตั้งการพึ่งพา ดังนั้นการเพิ่มสิ่งต่อไปนี้เข้ากับsetup.cfgสาเหตุของคุณเพื่อรับ repo ส่วนตัว

[easy_install]
index_url=https://username:password@your.repo/simple

นี่ยังมี snafu ที่ข้อมูลประจำตัวของคุณถูกพิมพ์ไปยังเทอร์มินัลเมื่อติดตั้ง แต่อย่างน้อยพวกเขาก็ไม่ได้อยู่ในการแจกจ่ายของคุณ โปรดทราบว่าโซลูชันนี้จะแทนที่ URL ดัชนีของคุณดังนั้น repo ส่วนตัวของคุณก็จะต้องทำสำเนาสาธารณะ ฉันไม่เห็นการสนับสนุนสำหรับการเพิ่ม URL ดัชนีอย่างชัดเจน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.