ทริกเกอร์สร้าง Travis-CI ใหม่โดยไม่ต้องกดคอมมิชชัน?


414

การใช้ Travis-CI เป็นไปได้ไหมที่จะทริกเกอร์การสร้างใหม่โดยไม่ต้องส่งคำสั่งใหม่ไปที่ GitHub?

ใช้กรณี: การสร้างล้มเหลวเนื่องจากภายนอก แหล่งที่มานั้นถูกต้องจริง มันจะสร้างตกลงและผ่านถ้าเพียงแค่เรียกใช้ใหม่

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

มีวิธีใดบ้างที่จะผลัก Travis-CI ไปสร้างสิ่งอื่นนอกเหนือจากการผลักดัน "จำลอง"

คำตอบ:


458
  • ถ้าคุณมีสิทธิ์ในการเขียนไปซื้อคืน : บนหน้าจอรายละเอียดการสร้างที่มีปุ่ม↻เริ่มต้นใหม่รูปร่าง ภายใต้ "ตัวเลือกเพิ่มเติม" ยังมีรายการเมนูสร้างทริกเกอร์

    หมายเหตุ : ส่วนขยายเบราว์เซอร์เช่น Ghostery อาจป้องกันไม่ให้ปุ่มรีสตาร์ทปรากฏขึ้น ลองปิดใช้งานส่วนขยายหรือรายการขาว Travis CI

    Note2 : หาก.travis.ymlการกำหนดค่ามีการเปลี่ยนแปลงในอัปสตรีมการคลิกปุ่มสร้างใหม่จะเรียกใช้เทรวิสด้วยการกำหนดค่าเก่า ในการใช้การเปลี่ยนแปลงอัปสตรีมสำหรับการกำหนดค่าเทรวิสนั้นต้องเพิ่มการกระทำไปยัง PR หรือปิด / เปิดใหม่อีกครั้ง

  • หากคุณได้ส่งคำขอดึง : คุณสามารถปิดการประชาสัมพันธ์แล้วเปิดอีกครั้ง สิ่งนี้จะทริกเกอร์การสร้างใหม่

เริ่มสร้างใหม่:

เริ่มช็อตหน้าจอบิลด์ใหม่

ทริกเกอร์สร้าง:

Trigger Build Screen Shot


1
ฉันได้พบและใช้งานในกรณีอื่น ๆ แต่ฉันสามารถสาบานได้ว่าฉันมีกรณีที่มีข้อผิดพลาดด้วยเหตุผลที่ฉันอธิบายไว้ข้างต้นและเมนูรูปเฟืองไม่มีตัวเลือกนั้น บางทีนั่นอาจเป็นความบังเอิญครั้งเดียวหรือบางทีฉันก็เข้าใจผิด อย่างไรก็ตามฉันคิดว่าคุณตอบว่ามันควรจะทำงานอย่างไรดังนั้นฉันจะไปข้างหน้าและทำเครื่องหมายคำตอบของคุณเป็นที่ยอมรับ ขอบคุณ!
Greg Hendershott

3
หากฉันดูประวัติการสร้างของโครงการใด ๆ ที่ฉันเป็นเจ้าของผิดพลาดหรือล้มเหลวก็จะมีปุ่มรีสตาร์ท
jbtule

20
ฉันคิดว่ากรณีที่ยุ่งยากคือที่ที่คุณส่งคำขอดึงสำหรับโครงการของคนอื่นและข้อผิดพลาดด้วยเหตุผลที่ไม่เกี่ยวข้องกับการประชาสัมพันธ์ของคุณต่อและคุณรู้ว่ามันจะประสบความสำเร็จหากคุณสามารถผลักดันให้ลองอีกครั้ง เป็นที่เข้าใจได้ว่าทำไมคุณไม่สามารถ (ไม่ใช่โครงการของคุณ) - แต่ยังเข้าใจได้ว่าทำไมคุณถึงต้องการ (PR ของคุณไม่ถูกต้อง "ดูไม่ดี")
Greg Hendershott

94
อย่าลืมว่าคุณต้องลงชื่อเข้าใช้เพื่อดูสิ่งนี้: P
Michael J. Calkins

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

206

หากคุณเปิดแท็บการตั้งค่าสำหรับพื้นที่เก็บข้อมูลบน GitHub ให้คลิกที่การรวมระบบและบริการค้นหาTravis CIและคลิกแก้ไขคุณจะเห็นปุ่มทดสอบบริการ สิ่งนี้จะทริกเกอร์บิลด์


6
ฉันคิดว่าเทรวิส - ci ลบปุ่มสร้างเริ่มต้นใหม่ดังนั้นนี่เป็นวิธีเดียวที่เหมาะกับฉัน มันทำงานสองงานสร้าง…
Blaise

1
@Blaise โดยโอกาสใดที่คุณใช้ Ghostery (หรือคล้ายกัน)? ลองปิดการใช้งาน สำหรับฉันแล้วนี่เป็นสาเหตุที่ทำให้ปุ่มรีสตาร์ท Build ปรากฏขึ้นอีกครั้ง
Greg Hendershott

29
สิ่งนี้จะทำงานเมื่อคุณเปิดใช้งานอาคาร Travis CI สำหรับการซื้อคืน ปุ่ม "reload build" ไม่มีอยู่สำหรับ repo ที่ไม่มี builds ก่อนหน้านี้
Brian J. Miller

12
หมายเหตุสำหรับคนบ้าเช่นฉัน: เปิดSettingsในที่เก็บใน Githubไม่ใช่ในหน้า repo ของ Travis! ฉันไม่อยากจะเชื่อเลยว่าฉันเสียเวลา 20 นาทีในการพยายามค้นหาService Hooksหน้าของเทรวิส :(
John Red

83

ฉันรู้ว่าคุณพูดโดยไม่ผลักภาระ แต่สิ่งที่มีประโยชน์ถ้าคุณทำงานในสาขาอื่นที่ไม่ใช่เจ้านาย

git commit --allow-empty -m "Trigger"

คุณสามารถ rebase ในที่สุดและลบสควอช / ลบการกระทำที่ว่างเปล่าและทำงานในทุกตะขอคอมไพล์ :)


1
นั่นมันยอดเยี่ยมมากขอบคุณ! ฉันแค่ต้องการเพิ่มว่าฉันต้องรีบูตเพื่อย้าย "ทริกเกอร์" กระทำต่อไปในประวัติศาสตร์; ไม่เช่นนั้นมันก็จะทิ้งสิ่งก่อสร้างใหม่เมื่อทำการลบคำสั่ง "ทริกเกอร์"
pmos

63
ในหลอดเลือดดำเดียวกันคุณสามารถแก้ไขการคอมมิชชันและการบังคับที่มีอยู่: git คอมมิชชัน - แก้ไข - ไม่แก้ไข && git push -f
grahamrhay

4
@grahamrhay เป็นวิธีที่ดีที่สุดในการเรียกใช้งานบิลด์ประชาสัมพันธ์เมื่อคุณไม่ได้เป็นเจ้าของ repo เป้าหมายมันจะเก็บเนื้อหาไม่จำเป็นต้องรวมหรือปฏิเสธหรือทำอะไรเลย โปรดทำให้เป็นคำตอบเพื่อให้สามารถโหวตได้อย่างชัดเจนยิ่งขึ้น
TWiStErRob

ฉันแยกที่เก็บที่ฉันไม่สามารถเข้าถึงได้และนี่เป็นสิ่งเดียวที่ใช้ได้กับฉันเพราะเทรวิสไม่มีงานสร้างใด ๆ ที่ฉันสามารถรีสตาร์ทบนทางแยกที่สร้างขึ้นใหม่ของฉัน
Nick McCurdy

1
@TWiStErRob มีคนอื่นเขียนคำตอบดังกล่าวด้านล่าง
Franklin Yu

30

ฉันพบวิธีอื่นในการบังคับให้รัน CI บิลด์และทริกเกอร์อื่น ๆ อีกครั้ง:

  1. ทำงานgit commit --amend --no-editโดยไม่มีการเปลี่ยนแปลงใด ๆ การดำเนินการนี้จะสร้างการส่งมอบครั้งล่าสุดในสาขาปัจจุบัน
  2. git push --force-with-lease origin pr-branch.

8
ฉันจะไม่แนะนำสิ่งนี้ มันจะปรับเปลี่ยนประวัติศาสตร์อย่างทำลายล้างดังนั้นมันอาจสร้างความสับสนให้กับคนที่มีสาขาที่อิงกับการกระทำนี้และ--amendธงก็อาจไม่เปลี่ยนการHEADกระทำในบางกรณี
Nick McCurdy

7
ฉันคิดว่ามันดีสำหรับโอกาสที่หายากเมื่อคุณต้องการเพียงแค่ BACK webhooks สำหรับการประชาสัมพันธ์ ไม่มีใครควรแยกออกจากคำขอการดึงดังนั้นจึงไม่มีใครเชื่อถือรหัสประจำตัวที่แน่นอนได้
Vlad Frolov

4
ไปเพื่อgit push --force-with-lease origin pr-branchให้คุณไม่ได้ตั้งใจทำให้คนอื่นเปลี่ยนแปลงโดยไม่ตั้งใจ
binarymason

21

เข้าสู่ระบบเพื่อ Travis และไปที่หน้าสร้าง คุณจะเห็นปุ่ม "เริ่มการสร้างใหม่" ที่มุมบนขวาถัดจากไอคอนรูปเฟือง:

Screengrab

หมายเหตุ: คุณต้องมีสิทธิ์เขียนเพื่อเข้าถึง repo ของ GitHub ที่เชื่อมโยงเพื่อให้สามารถใช้งานได้


11
คำตอบนี้โดยพื้นฐานแล้วเหมือนกับคำตอบที่ได้รับการยอมรับ
Dan Dascalescu

5
@DanDascalescu ไม่มีภาพหน้าจอเมื่อฉันโพสต์ และตอนนี้ฉันเพิ่งรู้ว่าคุณสามารถแก้ไขคำตอบของคนอื่นได้! ;)
Juan

1
@Juan คุณยังสามารถลบคำตอบที่ฉันแนะนำให้ทำเพราะมันเพิ่มความยุ่งเหยิงที่ไม่จำเป็น
Rafal Enden

20

หากคุณมีโครงการใหม่ใน GitHub ซึ่งมี .travis.yml แต่ไม่เคยทดสอบคุณสามารถรันการทดสอบได้โดยไม่ต้องใช้วิธีนี้:

  1. เปิดใช้งานการทดสอบในการตั้งค่าเทรวิส CI
  2. เปิดหน้าโครงการใน GitHub
  3. เปิดการตั้งค่า -> เว็บบล็อกและบริการ
  4. ค้นหา Travis CI ในบริการและกดปุ่มแก้ไข
  5. กด "ทดสอบบริการ"

3
นี่คือคำตอบสำหรับผู้ที่มีโครงการที่สร้างขึ้นใหม่
Eric MORAND

16

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

travis login --org --auto
travis token

คุณสามารถเก็บโทเค็นนี้ไว้ในตัวแปรสภาพแวดล้อมได้ TRAVIS_TOKENตราบใดที่ไฟล์ที่คุณเก็บไว้นั้นไม่ได้ควบคุมด้วยเวอร์ชันในที่สาธารณะ

ฉันใช้ฟังก์ชันนี้เพื่อส่งทริกเกอร์:

function travis_trigger() {
     local org=$1 && shift
     local repo=$1 && shift
     local branch=${1:-master} && shift

     body="{
             \"request\": {
               \"branch\": \"${branch}\"
              }
           }"

     curl -s -X POST \
          -H "Content-Type: application/json" \
          -H "Accept: application/json" \
          -H "Travis-API-Version: 3" \
          -H "Authorization: token $TRAVIS_TOKEN" \
          -d "$body" \
          "https://api.travis-ci.org/repo/${org}%2F${repo}/requests"
 }

คุณสามารถตั้งค่าเทรวิสของคุณเองสร้างสำหรับส้อมของคุณ
Sam Brightman

คุณสามารถสร้างสาขาของส้อมของคุณที่ทำคำขอดึง
Sam Brightman

สาขาของ PR และ PR ของคุณนั้นเหมือนกันใช่มั้ย หากอัปสตรีมมีการเปลี่ยนแปลงอื่น ๆ ตั้งแต่ที่คุณทำ PR คุณต้องรีบูตเพื่อให้แน่ใจ 100% แต่นั่นจะต้องเกิดขึ้นต่อไปและ GitHub ควรแสดงปุ่ม rebase ใน UI ซึ่งจะทำให้เกิดการสร้าง PR ใหม่ในกรณีนั้น
Sam Brightman

11

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

ตัวเลือกเพิ่มเติม→สร้างทริกเกอร์

จากนั้นคุณจะเห็นกล่องโต้ตอบที่คุณสามารถเลือกสาขาและกำหนดค่าเอง:

กล่องโต้ตอบการสร้างแบบกำหนดเอง

ในขณะที่ฉันกำลังเขียนมันอยู่ในรุ่นเบต้าและดูเหมือนจะเป็นรถเล็ก ๆ น้อย ๆ (แต่ฉันคาดว่าพวกเขาจะได้รับการแก้ไขปัญหาเร็ว ๆ นี้)


2
ขอบคุณ สำหรับฉันมันเป็นการตอบสนองที่ดีที่สุดเพราะทริกเกอร์บิลด์การเปลี่ยนแปลงยังสร้าง ID ของบิลด์ไม่ใช่ด้วยการสร้างใหม่ง่ายๆ (ผ่านปุ่ม) หากคุณใช้รหัสเทรวิสในสคริปต์ของคุณสิ่งสำคัญคือต้องรู้
Karima Rafes

2
สิ่งนี้จะต้องสูงขึ้น
Gillespie

8

หากคุณติดตั้งTravis CI Clientคุณสามารถใช้travis restart <job#>เพื่อเรียกใช้บิลด์จากคอนโซลอีกครั้ง คุณสามารถหางานล่าสุด # สำหรับสาขาที่ใช้travis show <branch>

travis show master
travis restart 48 #use Job number without .1
travis logs master

Travis CI Client

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


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

@redanimalwar กรณีใช้งานทั่วไปบังคับให้สร้าง CI เมื่อไม่สามารถตรวจพบการเปลี่ยนแปลงหรืออยู่ในช่วงเงียบ
Sam Brightman

4

ฉันควรพูดถึงที่นี่ว่าตอนนี้เรามีวิธีที่จะก่อให้เกิดการสร้างใหม่บนเว็บ ดูhttps://blog.travis-ci.com/2017-08-24-trigger-custom-buildสำหรับรายละเอียด

TL; DR คลิกที่ "ตัวเลือกเพิ่มเติม" และเลือก "สร้างทริกเกอร์"


สิ่งนี้ใช้ไม่ได้หากคุณไม่มีการเขียน / การเข้าถึงผู้ใช้ไปยังที่เก็บและต้องการเรียกใช้บิลด์ใหม่สำหรับคำขอดึงของคุณเอง ฉันไม่เห็นตัวเลือกนั้น และเมื่อพยายามเทรวิส CLI มันบอกว่าbuild #xxxx has been restarted แต่ถ้าคุณดูในหน้าเว็บที่คุณไม่เห็นสร้างใด ๆ ที่เกิดขึ้น
bitek

3

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


1

ฉันเพิ่งเรียกการทดสอบตามคำขอดึงที่จะเรียกใช้อีกครั้งโดยคลิก 'อัปเดตสาขา' ที่นี่: องค์ประกอบการตรวจสอบการทดสอบ GitHub


1

นี่คือสิ่งที่ทำงานสำหรับฉันที่จะเรียกการสร้างใหม่บน PR ที่ Dependabot เปิดขึ้น แต่ล้มเหลวเนื่องจากข้อผิดพลาดใน.travis.yml:

  1. ปิดการประชาสัมพันธ์
  2. รอ Dependabot เพื่อแสดงความคิดเห็น ("ตกลงฉันจะไม่แจ้งให้คุณทราบอีกครั้งเกี่ยวกับรุ่นนี้ แต่จะได้รับการติดต่อเมื่อมีรุ่นใหม่พร้อมใช้งาน") มันจะลบสาขาของมัน
  3. กู้คืน Dependabot ของสาขาที่ถูกลบ (คล้ายdependabot/cargo/tempfile-3.0.4)
  4. เปิดการประชาสัมพันธ์อีกครั้ง

1

โปรดตรวจสอบให้แน่ใจว่าได้ลงชื่อเข้าใช้เทรวิสก่อน ปุ่มสร้างใหม่จะไม่ปรากฏขึ้นจนกว่าคุณจะเข้าสู่ระบบฉันรู้ว่านี่ชัดเจน แต่มีคนสะดุดมันด้วย ;-)


0

บางครั้งมันเกิดขึ้นที่เซิร์ฟเวอร์ทำผิดพลาดบางอย่าง ลองออกจากระบบ / ลงชื่อเข้าใช้แล้วทุกอย่างอาจจะเหมาะสม (ใช่มันเกิดขึ้นในบ่ายวันนี้กับฉัน)


-1

Simlpy ปิดและเปิด PR อีกครั้งถ้าคุณไม่มีสิทธิ์การเขียน


ไม่โปรดอย่าทิ้งคำขอดึงขยะมันน่ารำคาญ เพียงแค่ส่งการกระทำใหม่ไปยังสาขาของคุณ (เช่นคุณสามารถเปลี่ยนวันที่มอบหมาย: git กระทำ - แก้ไข - วันที่ = ตอนนี้ && git push -f)
intgr
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.