ใช้คีย์ลับ api บน travis-ci


92

ฉันต้องการที่จะใช้เทรวิส-CIหนึ่งของฉันโครงการ

โปรเจ็กต์นี้เป็น API Wrapper ดังนั้นการทดสอบจำนวนมากจึงอาศัยการใช้คีย์ API ลับ เพื่อทดสอบในพื้นที่ฉันเพียงแค่เก็บไว้เป็นตัวแปรสภาพแวดล้อม วิธีที่ปลอดภัยในการใช้คีย์เหล่านี้กับ Travis คืออะไร?

คำตอบ:


99

Travis มีคุณสมบัติในการเข้ารหัสตัวแปรสภาพแวดล้อม ( "การเข้ารหัสตัวแปรสภาพแวดล้อม" ) สามารถใช้เพื่อป้องกันคีย์ API ลับของคุณ ฉันใช้สิ่งนี้สำเร็จแล้วสำหรับคีย์ Heroku API ของฉัน

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

gem install --user travis
travis encrypt MY_SECRET_ENV=super_secret -r my_username/my_repo

สิ่งนี้ให้ผลลัพธ์ต่อไปนี้:

Please add the following to your .travis.yml file:

  secure: "OrEeqU0z6GJdC6Sx/XI7AMiQ8NM9GwPpZkVDq6cBHcD6OlSppkSwm6JvopTR\newLDTdtbk/dxKurUzwTeRbplIEe9DiyVDCzEiJGfgfq7woh+GRo+q6+UIWLE\n3nowpI9AzXt7iBhoKhV9lJ1MROrnn4DnlKxAEUlHTDi4Wk8Ei/g="

12
อย่าลืมบันทึกว่าคุณใช้ตัวแปรอะไรและเพราะอะไรเนื่องจากเมื่อเข้ารหัสแล้วจะมีเพียงคนที่มีคีย์ดั้งเดิมเท่านั้นที่สามารถกู้คืนได้
jerseyboy

2
ดูเหมือนว่ารุ่นใหม่ของอัญมณีเทรวิสต้องการให้มีการขัดแย้งของพวกเขาในการสั่งซื้อตรงข้ามคือคุณจะต้องการที่จะทำtravis encrypt [args..] [options] travis encrypt MY_SECRET_ENV=super_secret -r my_username/my_repoใส่ตัวเลือกก่อนและข้อมูลที่จะเข้ารหัสล่าสุดจะแสดงคำเตือน
Jordan Running

3
ด้วยตัวเลือก--add env.globalสำหรับtravisคำสั่งมันจะแก้ไข. travis.yml ของคุณโดยอัตโนมัติ
Thomas

1
@RamIdavalapati: เนื่องจากความลับถูกเข้ารหัสจึงถือว่าปลอดภัยใช่
Odi

1
@ Ramesh-X: ใช่เนื่องจากการเข้ารหัสนี้มีไว้สำหรับ TravisCI หากมีคนควบคุม TravisCI พวกเขาสามารถรับ SECRET_ENV
Odi

7

ตามนี้ในเอกสารของ travis ci ได้กล่าวไว้ว่า:

หากคุณติดตั้งทั้งไคลเอนต์บรรทัดคำสั่ง Heroku และ Travis CI คุณจะได้รับคีย์เข้ารหัสและเพิ่มลงใน. travis.yml ของคุณโดยรันคำสั่งต่อไปนี้จากไดเร็กทอรีโปรเจ็กต์ของคุณ:

travis encrypt $(heroku auth:token) --add deploy.api_key

อ้างถึงบทช่วยสอนต่อไปนี้เพื่อติดตั้งไคลเอนต์ heroku ตามระบบปฏิบัติการของคุณ


ฉันแค่ต้องการยืนยัน: คีย์ที่เพิ่มลงในไฟล์ของคุณปลอดภัยที่จะอัปโหลดไปยังการควบคุมเวอร์ชันใช่ไหม
vapurrmaid

5

คุณยังสามารถกำหนดตัวแปรลับในการตั้งค่าที่เก็บ :

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

กำหนดตัวแปรใน Repository Settings ที่:

  • แตกต่างกันไปตามที่เก็บ
  • มีข้อมูลที่ละเอียดอ่อนเช่นข้อมูลรับรองของบุคคลที่สาม

ในการกำหนดตัวแปรในการตั้งค่าที่เก็บโปรดตรวจสอบว่าคุณได้ลงชื่อเข้าใช้แล้วไปที่ที่เก็บที่มีปัญหาเลือก "การตั้งค่า" จากเมนูฟันเฟืองแล้วคลิกที่ "เพิ่มตัวแปรใหม่" ในส่วน "ตัวแปรสภาพแวดล้อม"


1
ไม่เข้าใจวิธีสร้างตัวแปรลับ เมื่อใช้ googling ผลลัพธ์จะอธิบายวิธีเข้ารหัส
XedinUnknown

@XedinUnknown สามารถใช้สำหรับตัวแปรลับ จากลิงก์: "โดยค่าเริ่มต้นค่าของตัวแปรสภาพแวดล้อมใหม่เหล่านี้จะถูกซ่อนจากบรรทัดการส่งออกในบันทึกซึ่งสอดคล้องกับลักษณะการทำงานของตัวแปรที่เข้ารหัสใน. travis.yml ของคุณตัวแปรจะถูกเก็บไว้โดยเข้ารหัสในระบบของเราและ ได้รับการถอดรหัสเมื่อสร้างสคริปต์การสร้าง "
bmaupin

0

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


4
คุณ "ทำแบบเดียวกัน" หมายความว่าอย่างไร ฉันไม่ชอบแนวคิดในการจัดเก็บคีย์ API ใน repo (เช่นในไฟล์. travis.yml) แต่ดูเหมือนจะไม่มีวิธีอื่นในการกำหนดค่าตัวแปรสภาพแวดล้อมบน travis
BM5k

ตัวแปร env จะได้รับการเข้ารหัสด้วยคีย์สาธารณะดังนั้นมีเพียงเจ้าของคีย์ลับเท่านั้นที่สามารถถอดรหัสได้ คุณไม่ควรใช้โทเค็นที่สำคัญ ในกรณีของฉันฉันใช้อันที่ travis มีอยู่แล้วสำหรับ GitHub สิ่งนี้ทำงานได้ค่อนข้างดีและจากภายใน github ฉันสามารถเพิกถอนโทเค็นนั้นได้ทุกเมื่อที่ฉันรู้สึกว่า travis มีความเสี่ยง การมีโทเค็นที่เข้ารหัสใน repo ของฉันไม่ได้ทำให้ฉันนอนไม่หลับ github.com/ecki/GCViewer/blob/topic-ciupload/.travis.yml
เช่น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.