Wyzwolić przebudowę Travis-CI bez wypychania zatwierdzenia?

414

Czy przy użyciu Travis-CI można uruchomić odbudowę bez wypychania nowego zatwierdzenia do GitHub?

Przypadek użycia: kompilacja kończy się niepowodzeniem z powodu efektów zewnętrznych. Źródło jest właściwie poprawne. Zbuduje OK i przejdzie, jeśli po prostu uruchomi się ponownie.

Na przykład błąd apt-getkończy się z powodu awarii serwera pakietów, ale serwer jest ponownie tworzony. Jednak status kompilacji jest „zatrzymany” na „nieudany”, dopóki nie zostanie wprowadzone nowe zatwierdzenie.

Czy jest jakiś sposób, aby skłonić Travis-CI do wykonania innej kompilacji, niż wypchnięcie zatwierdzenia „manekina”?

Greg Hendershott
źródło

Odpowiedzi:

458
  • Jeśli masz dostęp do zapisu do repozytorium : Na ekranie szczegółów kompilacji znajduje się przycisk ↻ Uruchom ponownie kompilację . Również pod „Więcej opcji” znajduje się element menu kompilacji wyzwalacza.

    Uwaga : rozszerzenia przeglądarki, takie jak Ghostery, mogą uniemożliwić wyświetlanie przycisku restartu. Spróbuj wyłączyć rozszerzenie lub białą listę Travis CI.

    Uwaga 2 : Jeśli .travis.ymlkonfiguracja uległa zmianie w górnej części, kliknięcie przycisku odbudowywania spowoduje uruchomienie travis ze starą konfiguracją. Aby zastosować wcześniejsze zmiany w konfiguracji travis, należy dodać zatwierdzenie do PR lub zamknąć / ponownie otworzyć.

  • Jeśli wysłałeś żądanie ściągnięcia : możesz zamknąć PR, a następnie otworzyć go ponownie . Spowoduje to uruchomienie nowej wersji.

Uruchom ponownie kompilację:

Zrestartuj zrzut ekranu

Kompilacja wyzwalacza:

Zrzut ekranu kompilacji wyzwalacza

jbtule
źródło
1
Znalazłem i wykorzystałem to w innych przypadkach. Ale mógłbym przysiąc, że miałem przypadek, w którym wystąpił błąd z powodu, który opisałem powyżej, a menu narzędzi nie posiadało tej opcji. Może to był jednorazowy przypadek, a może się myliłem. W każdym razie myślę, że odpowiedziałeś, jak to ma działać, więc zaznaczę twoją odpowiedź jako przyjętą. Dzięki!
Greg Hendershott
3
Jeśli spojrzę na historię kompilacji któregokolwiek z posiadanych
przeze
20
Myślę, że jednym trudnym przypadkiem jest przesłanie prośby o pociągnięcie za projekt innej osoby, która została zignorowana z przyczyn niezwiązanych z twoim PR-em per se, i wiesz , że to by się udało, gdybyś mógł po prostu szturchnąć go, aby spróbować ponownie. Jest zrozumiałe, dlaczego nie możesz (nie twój projekt) - ale także zrozumiałe, dlaczego chcesz (twój PR niepoprawnie „wygląda źle”).
Greg Hendershott,
94
Nie zapomnij, że musisz się zalogować, aby to zobaczyć: P
Michael J. Calkins
8
Musisz mieć dostęp do zapisu w repozytorium github. Więc to nie zadziała dla widelców pchanych w górę.
Izhaki,
206

Jeśli otworzysz kartę Ustawienia repozytorium na GitHub, kliknij Integracje i usługi , znajdź Travis CI i kliknij Edytuj , powinieneś zobaczyć przycisk Usługa testowa . Spowoduje to uruchomienie kompilacji.

Aaron Hill
źródło
6
Myślę, że travis-ci usunął przycisk restartowania kompilacji, więc jest to jedyny sposób, który zadziałał dla mnie. Wykonuje jednak dwie kompilacje…
Blaise
1
@Blaise przypadkiem używasz Ghostery (lub podobnego)? Spróbuj to wyłączyć. Dla mnie powoduje to ponowne pojawienie się przycisku Uruchom ponownie kompilację.
Greg Hendershott,
29
Działa to, gdy początkowo aktywujesz budynek Travis CI dla repozytorium. Przycisk „przeładuj kompilację” nie istnieje dla repozytorium, które nie ma żadnych poprzednich kompilacji.
Brian J. Miller
12
Uwaga dla idiotów takich jak ja: Otwórz Settingsw repozytorium na Githubie , a nie na stronie repozytorium Travisa! Nie mogę uwierzyć, że zmarnowałem 20 minut, próbując znaleźć Service Hooksna stronie Travisa. :(
John Red
83

Wiem, że powiedziałeś bez wypychania zatwierdzenia, ale coś, co jest przydatne, jeśli pracujesz na gałęzi innej niż master, to zatwierdzenie pustego zatwierdzenia.

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

Na końcu możesz zmienić bazę i usunąć squash / usunąć puste commity i działa na wszystkich hakach git :)

Jasonmit
źródło
1
To jest wspaniałe, dziękuję! Chcę tylko dodać, że musiałem dokonać zmiany bazy, aby przesunąć zatwierdzenie „Trigger” dalej w dół historii; w przeciwnym razie po prostu odrzuciłby nową wersję po usunięciu zatwierdzenia „Trigger”.
pmos
63
w tym samym stylu możesz zmienić istniejące zatwierdzenie i wymuszone push: git commit --amend --no-edit && git push -f
grahamrhay
4
@grahamrhay, który najlepiej uruchamia kompilację PR, gdy nie jesteś właścicielem repozytorium docelowego, zachowuje zawartość, nie musisz się łączyć, przekształcać ani nic robić. Proszę udzielić odpowiedzi, aby głosowanie było bardziej widoczne.
TWiStErRob
Rozwidliłem repozytorium, do którego nie miałem dostępu, i to była jedyna rzecz, która działała dla mnie, ponieważ Travis nie miał żadnych kompilacji, które mógłbym zrestartować na nowo utworzonym rozwidleniu.
Nick McCurdy
1
@TWiStErRob Ktoś inny napisał taką odpowiedź poniżej.
Franklin Yu,
30

Znalazłem inny sposób wymuszenia ponownego uruchomienia kompilacji CI i innych wyzwalaczy:

  1. Uruchom git commit --amend --no-editbez żadnych zmian. Spowoduje to odtworzenie ostatniego zatwierdzenia w bieżącej gałęzi.
  2. git push --force-with-lease origin pr-branch.
Vlad Frolov
źródło
8
Nie poleciłbym tego. Niszcząco modyfikuje historię, więc może mylić ludzi, którzy mają gałęzie oparte na tym zatwierdzeniu, a --amendflaga może również nie zmieniać HEADzatwierdzenia w niektórych przypadkach.
Nick McCurdy
7
Uważam, że dobrze jest w rzadkich przypadkach, gdy potrzebujesz tylko haków internetowych BUMP do PR. Nikt nie powinien tak naprawdę rozgałęziać się z żądań ściągania, więc nikt nie będzie polegał na dokładnym identyfikatorze zatwierdzenia.
Vlad Frolov
4
idźcie git push --force-with-lease origin pr-branch, abyście nie przypadkiem nuke'owali czyichś zmian
binarymason
21

Zaloguj się do Travis i przejdź do strony kompilacji. W prawym górnym rogu, obok ikony koła zębatego, zobaczysz przycisk „Uruchom ponownie kompilację”:

Zrzut ekranu

Uwaga: aby to zadziałało, musisz mieć dostęp do zapisu do połączonego repozytorium GitHub.

Juan
źródło
11
Ta odpowiedź jest w zasadzie taka sama, jak przyjęta i została przesłana znacznie później.
Dan Dascalescu,
5
@DanDascalescu nie miałem zrzutu ekranu, kiedy pisałem. I dopiero teraz zdaję sobie sprawę, że możesz edytować czyjąś odpowiedź! ;)
Juan
1
@Juan nadal możesz usunąć tę odpowiedź, którą sugeruję zrobić, ponieważ dodaje niepotrzebnego bałaganu.
Rafal Enden,
20

Jeśli masz nowy projekt na GitHub, który ma .travis.yml, ale nigdy nie był testowany, możesz uruchomić testy bez zatwierdzenia w ten sposób:

  1. włączyć testowanie w ustawieniach CI Travis
  2. otwórz stronę projektu na GitHub
  3. otwórz ustawienia -> haki i usługi internetowe
  4. znajdź Travis CI w usługach i naciśnij przycisk edycji
  5. naciśnij „Usługa testowa”
lampki
źródło
3
To jest odpowiedź dla tych, którzy mają nowo utworzone projekty.
Eric MORAND
16

Możesz to zrobić za pomocą interfejsu Travis CLI . Jak opisano w dokumentacji , najpierw zainstaluj narzędzie CLI, a następnie:

travis login --org --auto
travis token

Możesz przechowywać ten token w zmiennej środowiskowej TRAVIS_TOKEN, o ile plik, w którym go przechowujesz, nie jest kontrolowany w wersji publicznej.

Używam tej funkcji do przesyłania wyzwalaczy:

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
źródło
Możesz skonfigurować własną wersję Travis dla swojego widelca.
Sam Brightman
Możesz zbudować gałąź widelca, z której pochodzi żądanie ściągnięcia.
Sam Brightman,
Gałąź twojego PR i PR to w zasadzie to samo, prawda? Jeśli upstream ma inne zmiany od czasu, gdy zrobiłeś PR, na pewno musisz go zmienić, aby mieć 100% pewności. Ale i tak musiałoby się to zdarzyć, a GitHub powinien pokazać przycisk rebase w interfejsie użytkownika, który w takim przypadku uruchomiłby nową wersję PR.
Sam Brightman,
11

Travis oferuje teraz sposób na uruchomienie „niestandardowej” wersji z ich internetowego interfejsu użytkownika. Poszukaj przycisku menu „Więcej opcji” po prawej stronie u góry strony swojego projektu.

Więcej opcji → Kompilacja wyzwalacza

Zostanie wyświetlone okno dialogowe, w którym możesz wybrać gałąź i dostosować konfigurację:

Niestandardowe okno dialogowe kompilacji

W chwili, gdy piszę ten tekst, jest on w fazie beta i wydaje się być nieco wadliwy (ale spodziewam się, że wkrótce rozwiążą problemy).

ikonoklasta
źródło
2
Dzięki. Dla mnie to najlepsza odpowiedź, ponieważ kompilacja wyzwalacza zmienia również identyfikator kompilacji, a nie prostą przebudowę (za pomocą przycisku). Jeśli używasz identyfikatora Travisa w swoich skryptach, ważne jest, aby wiedzieć.
Karima Rafes,
2
To musi być wyżej
Gillespie
8

Jeśli zainstalujesz klienta Travis CI , możesz użyć go travis restart <job#>do ręcznego ponownego uruchomienia kompilacji z konsoli. Możesz znaleźć ostatnie zadanie # dla oddziału, używająctravis show <branch>

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

Klient Travis CI

AKTUALIZACJA: Niestety wygląda na to, że nie uruchamia nowej kompilacji przy użyciu najnowszego zatwierdzenia, ale po prostu restartuje poprzednią kompilację przy użyciu poprzedniego stanu repo.

Greg Bray
źródło
Nie rozumiem informacji o aktualizacji. Z polecenia wydaje się, że możesz zdefiniować, które zadanie ma zostać ponownie uruchomione. Pytanie ma więc wywołać zadanie, przypuszczalnie większość ludzi chciałaby to zrobić, jeśli ich zatwierdzenie już się uruchomiło, ale chcą to przetestować ponownie, aby ... Och, chyba nie można dezaktywować wyzwalaczy gałęzi zatwierdzenia i ręcznie zbudować HEAD.
redanimalwar
@redanimalwar częsty przypadek użycia wymusza kompilację CI, gdy nie wykrywa zmian lub jest w spokojnym okresie.
Sam Brightman,
4

Powinienem tutaj wspomnieć, że mamy teraz możliwość uruchomienia nowej wersji w Internecie. Szczegółowe informacje można znaleźć na stronie https://blog.travis-ci.com/2017-08-24-trigger-custom-build .

TL; DR Kliknij „Więcej opcji” i wybierz „Trigger build”.

banzaiman
źródło
To nie działa, jeśli nie masz dostępu do zapisu / colaboratora do repozytorium i chcesz ponownie uruchomić kompilację dla własnego żądania ściągnięcia. Nie widzę tej opcji. A kiedy wypróbowuje interfejs Travis CLI, mówi, build #xxxx has been restarted ale jeśli spojrzysz na stronę internetową, nie zobaczysz żadnej kompilacji
bitek
3

Jeśli kompilacja nigdy nie nastąpiła (być może nie ustawiłeś przełącznika kompilacji Pull-Request na czas), możesz oznaczyć prośbę Pull na Github jako zamkniętą, a następnie oznaczyć ją jako otwartą i zostanie uruchomiona nowa kompilacja.

viperguynaz
źródło
1

Właśnie uruchomiłem testy żądania ściągania w celu ponownego uruchomienia, klikając tutaj „gałąź aktualizacji”: komponent testu sprawdzającego github

Frazer Kirkman
źródło
1

Oto, co zadziałało dla mnie, aby uruchomić odbudowę PR, który otworzył Dependabot, ale nie powiódł się z powodu błędów .travis.yml:

  1. Zamknij PR
  2. Poczekaj, aż Dependabot skomentuje („OK, nie powiadomię cię ponownie o tym wydaniu, ale skontaktuję się, gdy będzie dostępna nowa wersja.”). Usunie swoją gałąź.
  3. Przywróć usuniętą gałąź Dependabot (coś podobnego dependabot/cargo/tempfile-3.0.4).
  4. Otwórz PR ponownie
grooveplex
źródło
1

Pamiętaj, aby Log In do Travisa pierwszy. Przycisk odbudowywania nie pojawia się, dopóki się nie zalogujesz. Wiem, że to oczywiste, ale ktoś też się na nim potknął ;-)

dinvlad
źródło
0

czasami zdarza się, że serwer popełnił pewne błędy. spróbuj się wylogować / zalogować i wszystko może być w tym momencie. (Tak, zdarzyło mi się dziś po południu.)

XenoAmess
źródło
-1

Po prostu zamknij i ponownie otwórz PR, jeśli nie masz dostępu do zapisu.

Punit Naik
źródło
Nie, PROSZĘ nie pozostawiaj żądań wyciągania śmieci, to denerwujące. Po prostu wypchnij nowe zatwierdzenia do swojego oddziału (na przykład możesz zmienić datę zatwierdzenia: git commit --amend --date = now && git push -f).
intgr