ट्रिगर एक ट्रैविस-सीआई पुनर्निर्माण के बिना एक धक्का?


414

ट्रैविस-सीआई का उपयोग करना, क्या गीथहब के लिए एक नई प्रतिबद्धता को धक्का दिए बिना पुनर्निर्माण को ट्रिगर करना संभव है?

मामले का उपयोग करें: एक निर्माण एक बाहरीता के कारण विफल हो जाता है। स्रोत वास्तव में सही है। यह ठीक है और निर्माण होगा अगर बस फिर से चलाते हैं।

उदाहरण के लिए, apt-getपैकेज सर्वर डाउन होने के कारण विफल हो जाता है, लेकिन सर्वर फिर से बैकअप ले लेता है। हालाँकि निर्माण स्थिति "विफल" पर "अटक गई" है जब तक कि एक नई प्रतिबद्धता को धक्का नहीं दिया जाता है।

क्या ट्रेविस-सीआई को एक और निर्माण करने के लिए, "डमी" प्रतिबद्ध करने के लिए धक्का देने के अलावा अन्य करने का कोई तरीका है?

जवाबों:


458
  • यदि आपके पास रेपो तक पहुंच है : बिल्ड की डिटेल स्क्रीन पर, एक बटन है Build रिस्टार्ट बिल्ड । "अधिक विकल्प" के तहत एक ट्रिगर बिल्ड मेनू आइटम भी है।

    नोट : घोस्टरी जैसे ब्राउज़र एक्सटेंशन पुनरारंभ बटन को प्रदर्शित होने से रोक सकते हैं। एक्सटेंशन या श्वेत-सूची ट्रैविस CI को अक्षम करने का प्रयास करें।

    नोट 2 : यदि .travis.ymlकॉन्फ़िगरेशन अपस्ट्रीम में बदल गया है, तो पुनर्निर्माण बटन पर क्लिक करने से पुराने कॉन्फ़िगरेशन के साथ ट्रैविस चलेगा। ट्रैविस कॉन्फ़िगरेशन के लिए अपस्ट्रीम परिवर्तन लागू करने के लिए पीआर के लिए कमिट जोड़ने या इसे फिर से खोलने / बंद करना होगा।

  • यदि आपने एक पुल अनुरोध भेजा है : आप पीआर को बंद कर सकते हैं तो इसे फिर से खोलें । यह एक नए बिल्ड को ट्रिगर करेगा।

रिस्टार्ट बिल्ड:

स्क्रीन शॉट का निर्माण शुरू करें

ट्रिगर बिल्ड:

ट्रिगर बिल्ड स्क्रीन शॉट


1
मैंने पाया है और अन्य मामलों में इसका इस्तेमाल किया है। लेकिन मैं शपथ ले सकता था मेरे पास एक ऐसा मामला था जहां मैंने ऊपर वर्णित कारण के लिए इसे मिटा दिया था, और गियर मेनू में उस विकल्प का अभाव था। शायद वह एक बार का फ्लॉक था, या शायद मुझसे गलती हो गई थी। वैसे भी, मुझे लगता है कि आपने जवाब दिया कि यह कैसे काम करने वाला है, इसलिए मैं आगे जाऊंगा और आपके उत्तर को स्वीकार करूंगा। धन्यवाद!
ग्रेग Hendershott

3
अगर मैं अपने किसी भी प्रोजेक्ट के निर्माण के इतिहास को देखता हूं, जो कि मेरे पास है, गलत है या असफल है, तो इसमें एक पुनरारंभ बटन है
jbtule

20
मुझे लगता है कि एक मुश्किल मामला यह है कि आप किसी और की परियोजना के लिए एक पुल अनुरोध प्रस्तुत करते हैं, और यह आपके पीआर के प्रति असंबंधित कारणों के लिए त्रुटिपूर्ण है, और आप जानते हैं कि यदि आप इसे फिर से आजमाने के लिए इसे हल कर सकते हैं तो यह सफल होगा। यह समझ में आता है कि आप क्यों नहीं (अपनी परियोजना नहीं) - लेकिन यह भी समझ सकते हैं कि आप क्यों चाहते हैं (आपका पीआर गलत तरीके से "बुरा दिखता है")।
ग्रेग हेंडरशॉट

94
यह देखने के लिए आपको साइन इन करने की आवश्यकता नहीं है: P
माइकल जे। कैलकिंस

8
और आपको github repro के लिए लिखना होगा। तो यह ऊपर की ओर धकेल दिए गए कांटों के लिए काम नहीं करेगा।
इज़्हाकी

206

आप खोलते हैं सेटिंग्स GitHub पर रिपोजिटरी के लिए टैब पर क्लिक करें एकीकरण और सेवाओं , लगता है ट्रैविस सीआई और क्लिक संपादित करें , आप एक देखना चाहिए परीक्षण सेवा बटन। यह एक बिल्ड को ट्रिगर करेगा।


6
मुझे लगता है कि ट्रैविस-सी ने रिस्ट बिल्ड बटन को हटा दिया है, इसलिए यह एकमात्र तरीका है जिसने मेरे लिए सही काम किया है। हालांकि यह दो बिल्ड करता है ...
Blaise

1
@ किसी भी मौका द्वारा आप घोस्टरी (या समान) का उपयोग करते हैं? अक्षम करने का प्रयास करें। मेरे लिए, यह रीस्टार्ट बिल्ड बटन को फिर से प्रकट करने का कारण बनता है।
ग्रेग हेंडरशॉट

29
यह तब काम करता है जब आप शुरू में रेपो के लिए ट्रैविस सीआई बिल्डिंग को सक्रिय करते हैं। "रीलोड बिल्ड" बटन एक रेपो के लिए मौजूद नहीं है जिसमें कोई पिछला बिल्ड नहीं है।
ब्रायन जे। मिलर

12
मेरे जैसे बेवकूफों के लिए एक नोट: Github परSettings रिपॉजिटरी में खोलें , ट्रैविस के रेपो पेज पर नहीं! मुझे विश्वास नहीं हो रहा है कि मैं ट्रैविस पेज पर खोजने के लिए 20 मिनट बर्बाद कर रहा हूं । :(Service Hooks
जॉन लाल

83

मुझे पता है कि आपने बिना किसी कमिटमेंट के धक्का दिया है, लेकिन कुछ ऐसा है जो आसान है, अगर आप मास्टर के अलावा किसी अन्य शाखा में काम कर रहे हैं, तो एक खाली कमिट करना है।

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

आप अंत में रिबास कर सकते हैं और स्क्वैश को हटा सकते हैं / खाली कमिट्स को हटा सकते हैं और सभी गिट हुक पर काम कर सकते हैं :)


1
यह शानदार है, धन्यवाद! मैं सिर्फ इतना जोड़ना चाहता हूं कि "ट्रिगर" को इतिहास में और नीचे ले जाने के लिए मुझे पुनर्जागरण करना पड़ा; अन्यथा यह "ट्रिगर" कमिट को हटाने पर नए बिल्ड को छोड़ देगा।
दोपहर 10

63
उसी नस में, आप मौजूदा कमिट और फोर्स पुश में संशोधन कर सकते हैं: git कमिट --amend --no-edit && git push -f
grahamrhay

4
@grahamrhay एक पीआर बिल्ड को ट्रिगर करने के लिए सबसे अच्छा है जब आप लक्ष्य रेपो के मालिक नहीं होते हैं, तो यह सामग्री रखता है, मर्ज करने या रिबेस करने या कुछ भी करने की आवश्यकता नहीं है। कृपया इसे एक उत्तर दें ताकि इसे अधिक नेत्रहीन रूप से उभारना संभव हो।
ट्वीस्टरेब

मैंने एक रिपॉजिटरी को फोर्क किया जिसकी मुझे एक्सेस नहीं थी, और यह केवल एक चीज थी जो मेरे लिए काम करती थी क्योंकि ट्रैविस के पास कोई भी बिल्ड नहीं था जिसे मैं अपने नए बनाए गए कांटे पर पुनः आरंभ कर सकता था।
निक मैक्रूडी

1
@TWiStErRob किसी और ने नीचे ऐसा जवाब लिखा।
फ्रैंकलिन यू

30

मुझे CI बिल्ड और अन्य ट्रिगर को फिर से चलाने के लिए मजबूर करने का एक और तरीका मिल गया है:

  1. भागो git commit --amend --no-editबिना किसी परिवर्तन के। यह वर्तमान शाखा में अंतिम प्रतिबद्ध को फिर से बनाएगा।
  2. git push --force-with-lease origin pr-branch

8
मैं इसकी सिफारिश नहीं करूंगा। यह विनाशकारी रूप से इतिहास को संशोधित करता है, इसलिए यह उन लोगों को भ्रमित कर सकता है जिनकी शाखाएं इस प्रतिबद्ध के आधार पर हैं, और --amendझंडा भी HEADकुछ मामलों में प्रतिबद्ध को नहीं बदल सकता है ।
निक मैक्रूडी

7
मुझे यह दुर्लभ अवसरों के लिए ठीक लगता है, जब आपको एक पीआर के लिए केवल BUMP webhooks की आवश्यकता होती है। किसी को भी वास्तव में पुल-रिक्वेस्ट से बाहर नहीं निकलना चाहिए, इसलिए कोई भी सही कमिट आईडी पर भरोसा नहीं करेगा।
व्लाद फ्रोलोव

4
के लिए जाते हैं git push --force-with-lease origin pr-branchताकि आप नहीं गलती से परमाणु किसी और का परिवर्तन करना
binarymason

21

ट्रैविस में लॉग इन करें और बिल्ड पेज पर जाएं। आपको गियर आइकन के बगल में, ऊपरी-दाएं कोने पर "रिस्टार्ट बिल्ड" बटन दिखाई देगा:

चित्रपट पकड़ना

नोट: आपको इस कार्य के लिए लिंक किए गए GitHub रेपो तक पहुंच की आवश्यकता है।


11
यह उत्तर मूल रूप से स्वीकृत के समान ही है, और बहुत बाद में प्रस्तुत किया गया था।
Dan Dascalescu

5
@DanDascalescu जब मैंने पोस्ट किया तो इसका स्क्रीनशॉट नहीं था। और मुझे केवल अब एहसास है कि आप किसी और की प्रतिक्रिया को संपादित कर सकते हैं! ;)
जुआन

1
@ जुआन आप अभी भी इस उत्तर को हटा सकते हैं जो मैं सुझाव दे रहा हूं क्योंकि यह अनावश्यक अव्यवस्था जोड़ रहा है।
रफाल एंडन

20

यदि आपके पास GitHub पर नया प्रोजेक्ट है, जिसमें .travis.yml है, लेकिन कभी भी परीक्षण नहीं किया गया था, तो आप इस तरह से बिना परीक्षण चला सकते हैं:

  1. ट्रैविस सीआई सेटिंग में परीक्षण सक्षम करें
  2. GitHub पर खुला प्रोजेक्ट पेज
  3. खुली सेटिंग्स -> webhooks और सेवाओं
  4. ट्रैविस CI को सेवाओं में खोजें और एडिट बटन दबाएँ
  5. प्रेस "टेस्ट सेवा"

3
यह नव निर्मित परियोजनाओं के साथ उन लोगों के लिए जवाब है।
एरिक मोरैंड

16

आप ट्रैविस सीएलआई का उपयोग करके ऐसा कर सकते हैं । के रूप में दस्तावेज़ में वर्णित , पहले, 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"
 }

आप अपने कांटे के लिए अपना खुद का ट्रैविस बिल्ड सेटअप कर सकते हैं।
सैम ब्राइटमैन

आप अपने कांटे की शाखा का निर्माण कर सकते हैं जिससे पुल अनुरोध किया जाता है।
सैम ब्राइटमैन

अपने पीआर और पीआर की शाखा अनिवार्य रूप से एक ही बात है, है ना? यदि आपने PR को बनाया है तो अपस्ट्रीम में अन्य परिवर्तन हैं, निश्चित रूप से, आपको इसे 100% सुनिश्चित करने की आवश्यकता है। लेकिन वैसे भी ऐसा करने की आवश्यकता होगी, और GitHub को UI में एक रिबास बटन दिखाना चाहिए जो उस मामले में पीआर के एक नए निर्माण को ट्रिगर करेगा।
सैम ब्राइटमैन

11

ट्रैविस अब अपने वेब यूआई से "कस्टम" बिल्ड को ट्रिगर करने का एक तरीका प्रदान करता है। अपनी परियोजना के पृष्ठ के शीर्ष के पास दाईं ओर "अधिक विकल्प" मेनू बटन देखें।

अधिक विकल्प → ट्रिगर बिल्ड

फिर आपको एक डायलॉग बॉक्स दिया जाएगा जिसमें आप शाखा चुन सकते हैं और कॉन्फ़िगरेशन को अनुकूलित कर सकते हैं:

कस्टम बिल्ड डायलॉग बॉक्स

जिस समय मैं यह लिख रहा हूं, यह बीटा में है, और थोड़ा बुग्याल प्रतीत होता है (लेकिन मुझे उम्मीद है कि वे जल्द ही समस्याओं का समाधान निकाल लेंगे)।


2
धन्यवाद। मेरे लिए, यह सबसे अच्छी प्रतिक्रिया है क्योंकि एक ट्रिगर बिल्ड परिवर्तन भी एक साधारण पुनर्निर्माण (बटन के माध्यम से) के साथ आईडी का निर्माण करते हैं। यदि आप अपनी स्क्रिप्ट में ट्रैविस आईडी का उपयोग करते हैं, तो यह जानना महत्वपूर्ण है।
करीमा राफ्स

2
इसके लिए उच्च होना चाहिए
गिलेस्पी

8

यदि आप ट्रैविस CI क्लाइंट स्थापित करते हैं, तो आप travis restart <job#>कंसोल से बिल्ड को मैन्युअल रूप से फिर से चलाने के लिए उपयोग कर सकते हैं । आप का उपयोग कर एक शाखा के लिए # अंतिम नौकरी पा सकते हैंtravis show <branch>

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

ट्रैविस सीआई क्लाइंट

अद्यतन: अफसोस की बात है कि ऐसा लगता है कि यह नवीनतम प्रतिबद्ध का उपयोग करके एक नया निर्माण शुरू नहीं करता है, बल्कि रेपो के पिछले राज्य का उपयोग करके पिछले निर्माण को फिर से शुरू करता है।


मुझे अपडेट नोट समझ नहीं आ रहा है। कमांड से ऐसा लगता है कि आप परिभाषित कर सकते हैं कि किस नौकरी को फिर से शुरू करना है। तो यह सवाल एक नौकरी को ट्रिगर करने का है, शायद ज्यादातर लोग ऐसा करना चाहते हैं यदि उनकी प्रतिबद्धता पहले से ही शुरू हो गई है, लेकिन वे इसे फिर से परीक्षण करना चाहते हैं ... ओह मुझे लगता है कि आप प्रतिबद्ध नहीं कर सकते हैं प्रतिबद्ध शाखा ट्रिगर को निष्क्रिय करें और मैन्युअल रूप से हेड का निर्माण करें।
redanimalwar

@redanimalwar एक आम उपयोग के मामले में एक CI बिल्ड के लिए मजबूर किया जाता है जब यह परिवर्तनों का पता लगाने में विफल रहता है या एक शांत अवधि में होता है।
सैम ब्राइटमैन

4

मुझे यहाँ उल्लेख करना चाहिए कि अब हमारे पास वेब पर एक नया निर्माण शुरू करने का एक साधन है। Https://blog.travis-ci.com/2017-08-24-trigger-custom-build देखें जानकारी के लिए।

TL; DR "अधिक विकल्प" पर क्लिक करें, और "ट्रिगर बिल्ड" चुनें।


यदि आपके पास रिपॉजिटरी के लिए कोई लिखित पहुँच / सहयोगी नहीं है तो यह काम नहीं करता है और अपने स्वयं के पुल अनुरोध के लिए फिर से निर्माण करना चाहते हैं। मुझे वह विकल्प दिखाई नहीं दे रहा है। ट्रैविस सीएलआई की कोशिश करते समय, यह कहता है, build #xxxx has been restarted लेकिन अगर आप वेबपेज में देखते हैं तो आपको कोई निर्माण नहीं होता है
bitek

3

अगर बिल्ड कभी नहीं हुआ (शायद आपको समय पर सेट करने के लिए पुल-रिक्वेस्ट बिल्ड स्विच नहीं मिला), तो आप गिथब पर पुल रिक्वेस्ट को बंद के रूप में चिह्नित कर सकते हैं और फिर इसे खोले जाने के रूप में चिह्नित करें और एक नया बिल्ड ट्रिगर हो जाएगा।



1

यहाँ मेरे लिए पीआर पर एक पुनर्निर्माण को ट्रिगर करने के लिए क्या काम किया गया है जो डिपेंडाबॉट ने खोला था, लेकिन त्रुटियों के कारण असफल रहा .travis.yml:

  1. पीआर बंद करें
  2. टिप्पणी करने के लिए डिपेंडबॉट की प्रतीक्षा करें ("ठीक है, मैं आपको इस रिलीज़ के बारे में फिर से सूचित नहीं करूंगा, लेकिन नया संस्करण उपलब्ध होने पर संपर्क में आएगा।")। यह उसकी शाखा को हटा देगा।
  3. शाखा हटाए गए डिपेंडाबॉट को पुनर्स्थापित करें (कुछ इस तरह dependabot/cargo/tempfile-3.0.4)।
  4. फिर से पीआर खोलें

1

कृपया पहले ट्रैविस में लॉग इन करना सुनिश्चित करें । जब तक आप लॉग इन नहीं होते हैं, तब तक पुनर्निर्माण बटन दिखाई नहीं देता है। मुझे पता है कि यह स्पष्ट है, लेकिन किसी ने इसे इस पर भी ट्रिप किया है;;


0

कभी-कभी ऐसा होता है कि सर्वर कुछ गलतियाँ करता है। लॉग आउट / साइन इन करने की कोशिश करें और सब कुछ सही हो सकता है। (हाँ, यह दोपहर मेरे साथ हुआ।)


-1

यदि आपके पास लिखने की पहुंच नहीं है, तो सिमली बंद करें और पीआर खोलें।


नहीं, कृपया कचरा पुल अनुरोधों को न छोड़ें, यह कष्टप्रद है। बस अपनी शाखा में नई कमिट (पुश) दें (उदाहरण के लिए आप कमिट डेट बदल सकते हैं: git कमिट --amend --date = now && git push -f)।
intgr
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.