Bir taahhüdü zorlamadan bir Travis-CI yeniden oluşturmayı tetikler misiniz?


414

Travis-CI kullanarak, GitHub'a yeni bir taahhüt yüklemeden yeniden oluşturmayı tetiklemek mümkün müdür?

Kullanım örneği: Yapı dışsallık nedeniyle başarısız oluyor. Kaynak aslında doğrudur. Tamam yeniden kurar ve sadece yeniden çalıştırılırsa geçer.

Örneğin, apt-getpaket sunucusunun kapalı olması nedeniyle başarısız olur, ancak sunucu yeniden yedeklenir. Ancak, yeni bir işlem itilene kadar derleme durumu "başarısız" konumunda "takılı kalır".

Travis-CI'yi "kukla" bir taahhütte bulunmaktan başka bir yapı yapmak için sürüklemenin bir yolu var mı?

Yanıtlar:


458
  • Repoya yazma erişiminiz varsa : Yapının ayrıntı ekranında Build Derlemeyi Yeniden Başlat düğmesi vardır . Ayrıca "Diğer Seçenekler" altında bir tetikleyici oluşturma menü öğesi vardır.

    Not : Ghostery gibi tarayıcı uzantıları yeniden başlatma düğmesinin görüntülenmesini engelleyebilir. Uzantıyı veya beyaz listeleme Travis CI'yı devre dışı bırakmayı deneyin.

    Not2 : .travis.ymlYukarı akışta yapılandırma değiştiyse, yeniden oluştur düğmesine tıklandığında travis eski yapılandırmayla çalıştırılır. Travis konfigürasyonu için yukarı akım değişikliklerini uygulamak için, PR'ye taahhüt eklemek veya onu kapatmak / yeniden açmak gerekir.

  • Bir çekme isteği gönderdiyseniz : Halkla İlişkileri kapatabilir ve tekrar açabilirsiniz . Bu yeni bir yapıyı tetikleyecektir.

Derlemeyi Yeniden Başlat:

Derleme Ekran Çekimini Yeniden Başlat

Tetikleyici Yapısı:

Tetikleyici Oluşturma Ekran Görüntüsü


1
Bunu diğer durumlarda buldum ve kullandım. Ama yukarıda açıkladığım nedenden ötürü Errored olduğu bir durumum olduğuna yemin edebilirdim ve vites menüsünde bu seçenek yoktu. Belki de bu bir kerelik bir şanstı ya da belki yanılmışım. Her neyse, bence bunun nasıl çalışması gerektiğini cevapladın , bu yüzden devam edip cevabını kabul edilmiş olarak işaretleyeceğim. Teşekkürler!
Greg Hendershott

3
Sahip olduğum, hatalı veya başarısız olduğum herhangi bir projenin derleme geçmişine
bakarsam

20
Bence zor bir durum, başkasının projesi için bir çekme isteği gönderdiğiniz ve bu da PR'nizle ilgisiz nedenlerden dolayı hatalı olduğu ve sadece tekrar denemek için dürtüyorsanız bunun başarılı olacağını biliyorsunuz . Niçin yapamayacağınız anlaşılabilir (projeniz değil) - aynı zamanda neden istediğinizi de anlaşılabilir (PR'ınız yanlış "kötü görünüyor").
Greg Hendershott

94
Bunu görmek için oturum açmış olmanız gerektiğini unutmayın: P
Michael J. Calkins

8
Ve github repro için yazma erişimine sahip olmanız gerekir. Yani bu, yukarı doğru itilen çatallar için işe yaramaz.
Izhaki

206

GitHub'da depo için Ayarlar sekmesini açarsanız, Entegrasyonlar ve hizmetler'e tıklayın, Travis CI'yi bulun ve Düzenle'ye tıklayın , bir Test Hizmeti düğmesi görmelisiniz . Bu bir yapıyı tetikleyecektir.


6
Bence travis-ci yeniden başlatma derleme düğmesini kaldırdı, bu yüzden benim için doğru olan tek yol bu. Gerçi iki yapı gerçekleştiriyor …
Blaise

1
@Blaise herhangi bir şansla Ghostery (veya benzeri) kullanıyor musunuz? Bunu devre dışı bırakmayı deneyin. Benim için bu, Derlemeyi Yeniden Başlat düğmesinin yeniden görünmesine neden olur.
Greg Hendershott

29
Bu, başlangıçta bir depo için Travis CI binasını etkinleştirdiğinizde çalışır. "Derleme yeniden yükle" düğmesi, önceden derleme bulunmayan bir repo için mevcut değildir.
Brian J. Miller

12
Benim gibi aptallar için bir not: Travis'in repo sayfasında değil, Github'dakiSettings depoda aç ! Travis'in sayfasında bulmaya çalışırken 20 dakika harcadığımı düşünemiyorum. :(Service Hooks
John Red

83

Bir taahhüdü zorlamadan söylediğini biliyorum, ama ustadan başka bir dal üzerinde çalışıyorsanız, kullanışlı bir şey boş bir taahhüt yapmaktır.

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

Sonunda rebase ve squash kaldırmak / boş taahhütleri kaldırmak ve tüm git kancalar üzerinde çalışır :)


1
Harika, teşekkürler! Ben sadece "Tetik" taahhüt tarihte daha aşağı taşımak için yeniden tabanına zorunda olduğunu eklemek istiyorum; aksi takdirde "Tetikleyici" taahhüdünün kaldırılmasıyla yeni yapıyı atar.
pmos

63
aynı şekilde mevcut vaat ve zorla itmeyi de değiştirebilirsiniz: git commit --amend --no-edit && git push -f
grahamrhay

4
@grahamrhay, hedef repo sahibi olmadığınızda bir PR derlemesini tetiklemek için en iyisidir, içeriği tutar, birleştirmeye, yeniden birleştirmeye veya herhangi bir şey yapmaya gerek yoktur. Lütfen bir cevap verin, böylece daha görünür bir şekilde değerlendirebilirsiniz.
TWiStErRob

Erişemediğim bir havuzu çatalladım ve bu benim için işe yarayan tek şeydi, çünkü Travis'in yeni oluşturduğum çatalında yeniden başlatabileceğim herhangi bir yapıya sahip değildi.
Nick McCurdy

1
@TWiStErRob Başka biri aşağıda böyle bir cevap yazdı.
Franklin Yu

30

Yeniden çalıştırmak CI yapıları ve diğer tetikleyicileri zorlamanın başka bir yolunu buldum:

  1. git commit --amend --no-editHerhangi bir değişiklik yapmadan çalıştırın . Bu, mevcut şubedeki son taahhüdü yeniden oluşturacaktır.
  2. git push --force-with-lease origin pr-branch.

8
Bunu tavsiye etmem. Tarihi tahrip edici bir şekilde değiştirir, böylece şubeleri olan insanları bu taahhütten kurtarabilir ve bazı durumlarda --amendbayrak da HEADtaahhüdü değiştirmeyebilir .
Nick McCurdy

7
Bir PR için sadece BUMP webhooks ihtiyacınız olduğunda nadir durumlar için iyi buluyorum. Kimse çekme taleplerinden gerçekten ayrılmamalı, bu yüzden kimse kesin taahhüt kimliğine güvenmeyecektir.
Vlad Frolov

4
gitmek git push --force-with-lease origin pr-branchdeğil yanlışlıkla nükleer başkasının değişiklikleri yapmak, böylece
binarymason

21

Travis'te oturum açın ve oluşturma sayfasına gidin. Sağ üst köşede dişli çark simgesinin yanında bir "Derlemeyi Yeniden Başlat" düğmesi göreceksiniz:

screengrab

Not: Bunun çalışması için bağlı GitHub deposuna yazma erişiminizin olması gerekir.


11
Bu cevap temelde kabul edilenle aynıdır ve daha sonra gönderilmiştir.
Dan Dascalescu

5
@DanDascalescu Gönderdiğimde ekran görüntüsü yoktu. Ve şimdi sadece bir başkasının tepkisini düzenleyebileceğinizi anlıyorum! ;)
Juan

1
@Juan, gereksiz karışıklık eklediğinden beri önerdiğim bu yanıtı silebilirsiniz.
Rafal Enden

20

GitHub'da .travis.yml dosyasına sahip olan, ancak hiç test edilmemiş yeni bir projeniz varsa, testleri şu şekilde gerçekleştirmeden çalıştırabilirsiniz:

  1. Travis CI ayarlarında testi etkinleştir
  2. GitHub'da proje sayfasını aç
  3. ayarları aç -> webhooks ve hizmetler
  4. hizmetlerde Travis CI'yi bulun ve düzenle düğmesine basın
  5. "Test hizmeti" ne basın

3
Yeni oluşturulan projeleri olanların cevabı budur.
Eric MORAND

16

Bunu Travis CLI kullanarak yapabilirsiniz . Belgelerde açıklandığı gibi , önce CLI aracını yükleyin, ardından:

travis login --org --auto
travis token

Sakladığınız TRAVIS_TOKENdosya herkese açık bir yerde sürüm denetimli olmadığı sürece bu belirteci bir ortam değişkeninde tutabilirsiniz.

Tetikleyiciler göndermek için bu işlevi kullanın:

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"
 }

Çatalınız için kendi Travis yapınızı kurabilirsiniz.
Sam Brightman

Çatalınızın çekme isteğinin yapıldığı dalını oluşturabilirsiniz.
Sam Brightman

Halkla İlişkilerinizin ve Halkla İlişkilerinizin dalı aslında aynı şey, değil mi? PR yaptığınızdan bu yana yukarı yönde başka değişiklikler varsa,% 100 emin olmak için yeniden temellendirmeniz gerekir. Ancak bunun yine de olması gerekir ve GitHub, kullanıcı arayüzünde bu durumda PR'nin yeni bir yapısını tetikleyecek bir rebase düğmesi göstermelidir.
Sam Brightman

11

Travis artık web arayüzlerinden "özel" bir yapıyı tetiklemek için bir yol sunuyor. Projenizin sayfasının üst tarafında sağ tarafta bulunan "Diğer Seçenekler" menü düğmesini bulun.

Diğer Seçenekler → Tetikleyici Oluşturma

Ardından, şubeyi seçebileceğiniz ve yapılandırmayı özelleştirebileceğiniz bir iletişim kutusu sunulur:

Özel Derleme İletişim Kutusu

Bunu yazdığım sırada beta sürümündedir ve biraz buggy gibi görünüyor (ancak yakında sorunların çözülmesini bekliyorum).


2
Teşekkürler. Benim için en iyi yanıt, çünkü bir tetikleyici yapısının, basit bir yeniden oluşturma ile değil, düğme ile de yapının kimliğini değiştirmesi. Senaryonuzda Travis'in kimliğini kullanırsanız, bilmek önemlidir.
Karima Rafes

2
Bu daha yüksek olmalı
Gillespie

8

Travis CI İstemcisi'ni yüklerseniz, travis restart <job#>bir konsolu manuel olarak yeniden çalıştırmak için kullanabilirsiniz . Şube için son işi # kullanaraktravis show <branch>

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

Travis CI İstemcisi

GÜNCELLEME: Ne yazık ki, en son taahhüdü kullanarak yeni bir derleme başlatmıyor, ancak bunun yerine deponun önceki durumunu kullanarak önceki bir derlemeyi yeniden başlatıyor gibi görünüyor.


Güncelleme notunu anlamıyorum. Komuttan, hangi işi yeniden başlatacağınızı tanımlayabilirsiniz. Yani soru bir işi tetiklemek üzeredir, muhtemelen çoğu insan taahhütleri zaten tetiklenmişse bunu yapmak isteyecektir, ancak bunu tekrar test etmek istiyorlar ... Oh sanırım taahhüt şube tetikleyicilerini devre dışı bırakamazsınız ve manuel olarak HEAD inşa edemezsiniz.
redanimalwar

@redanimalwar yaygın bir kullanım örneği, değişiklikleri algılayamadığında veya sessiz bir dönemde olduğunda bir CI derlemesini zorlar.
Sam Brightman

4

Burada, şimdi web'de yeni bir yapıyı tetikleme aracımız olduğunu belirtmeliyim. Ayrıntılar için bkz. Https://blog.travis-ci.com/2017-08-24-trigger-custom-build .

TL; DR "Diğer seçenekler" e tıklayın ve "Tetikleyici oluştur" u seçin.


Depoya yazma erişiminiz / ortak çalışmanız yoksa ve kendi çekme isteğiniz için derlemeyi yeniden çalıştırmak istiyorsanız bu çalışmaz. Bu seçeneği görmüyorum. Travis CLI'yi denerken, diyor ki, build #xxxx has been restarted ancak web sayfasına bakarsanız, herhangi bir yapı
oluşmaz

3

Yapı hiç oluşmadıysa (belki de Çek-Talep oluşturma anahtarını zamanında açıklamamışsanız), Github'daki Çekme İsteğini kapalı olarak işaretleyebilir ve ardından açık olarak işaretleyebilirsiniz ve yeni bir yapı tetiklenir.


1

Buradaki 'şube güncelle'yi tıklayarak yeniden çekme isteğinde bulunan testleri tetikledim: github kontrol testleri bileşeni


1

Dependabot'un açtığı ancak aşağıdaki hatalardan dolayı başarısız olduğu bir PR'da yeniden oluşturmayı tetiklemem için işe yarayan şey şuydu .travis.yml:

  1. Halkla İlişkileri kapatın
  2. Dependabot'un yorum yapmasını bekleyin ("Tamam, bu sürüm hakkında size bir daha bildirimde bulunmayacağım, ancak yeni bir sürüm mevcut olduğunda iletişime geçeceğim."). Şubesini kaldıracak.
  3. Dependabot kaldırıldı dalı (gibi bir şey dependabot/cargo/tempfile-3.0.4) geri yükleyin .
  4. Halkla İlişkileri tekrar açın

1

Lütfen önce Travis'e giriş yaptığınızdan emin olun . Yeniden giriş düğmesi giriş yapana kadar görünmez. Bunun çok açık olduğunu biliyorum, ama birisi de ona takıldı ;-)


0

bazen sunucu bazı hatalar yapar. oturumu kapatmayı / oturum açmayı deneyin ve her şey doğru olabilir. (Evet, bu öğleden sonra bana oldu.)


-1

Yazma erişiminiz yoksa Simlpy'ı kapatın ve PR'yi yeniden açın.


Hayır, LÜTFEN çöp çekme istekleri bırakmayın, sinir bozucu. Sadece şubenize yeni taahhüt (ler) iletin (örneğin taahhüt tarihini değiştirebilirsiniz: git commit --amend --date = now && git push -f).
intgr
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.