Запустити відновлення Тревіс-КІ, не натискаючи на комісію?


414

Чи можна за допомогою Travis-CI запустити перебудову, не натискаючи на нову команду GitHub?

Випадок використання: збірка не працює через зовнішність. Джерело насправді правильне. Це створило б «ОК» і пройшло, якщо його просто запустити.

Наприклад, apt-getпомилка внаслідок відключення сервера пакунків, але сервер знову створюється резервна копія. Однак статус збірки "застряг" у "не вдалося", поки не буде натиснуто нове зобов'язання.

Чи є якийсь спосіб підштовхнути Тревіс-КІ до іншої побудови, крім того, щоб підштовхнути "манекен" до виконання?

Відповіді:


458
  • Якщо у вас є доступ для запису до репо : На екрані деталей збірки є кнопка ↻ Перезапустити збірку . Також у розділі "Додаткові параметри" є пункт меню спуску триггера.

    Примітка . Розширення веб-переглядача на зразок Ghostery можуть не допустити відображення кнопки перезавантаження. Спробуйте вимкнути розширення або білий список Travis CI.

    Примітка2 : Якщо .travis.ymlконфігурація змінилася у верхній частині, натисканням кнопки відновлення буде запущено травіс зі старою конфігурацією. Щоб застосувати зміни в конфігурації travis для конфігурації travis, потрібно додати команду PR або закрити / повторно відкрити її.

  • Якщо ви надіслали запит на притягнення : Ви можете закрити PR, а потім відкрити його знову . Це спричинить нову збірку.

Перезапустити збірку:

Перезавантажте знімок екрана

Створення тригера:

Постріл екрану тригера


1
Я знайшов і використовував це в інших випадках. Але я міг присягнути, що у мене був випадок, коли він помилився з тієї причини, яку я описав вище, і в меню передач цього варіанту не було. Можливо, це був разовий флейк, чи, можливо, я помилився. У будь-якому випадку, я думаю, ви відповіли, як це має працювати, тож я піду і позначаю вашу відповідь прийнятою. Дякую!
Грег Хендершот

3
Якщо я переглянув історію збірки будь-якого з проектів, якими я володію, помилився чи не вдався, у нього є кнопка перезавантаження
jbtule

20
Я думаю, що один хитрий випадок - це коли ви подаєте запит на тягнення до чужого проекту, і він помилився з причин, не пов’язаних із вашим PR, як такий, і ви знаєте, що це вдасться, якби ви могли просто натиснути на нього, щоб спробувати ще раз. Це зрозуміло, чому ви не можете (не ваш проект), але також зрозуміло, чому ви хочете (ваш PR неправильно "виглядає погано").
Грег Хендершот

94
Не забувайте, що ви повинні увійти, щоб побачити це: P
Майкл Дж. Калкінс

8
І вам потрібно мати доступ для запису до програми github repro. Таким чином, це не спрацює для вил, висунутих за течією
Іжакі

206

Якщо ви відкриєте вкладку « Налаштування » для сховища на GitHub, натисніть « Інтеграції та послуги» , знайдіть Travis CI та натисніть « Редагувати» , ви побачите кнопку « Тестова служба ». Це спровокує збірку.


6
Я думаю, що travis-ci видалила кнопку перезавантаження, тому це єдиний спосіб, який працював для мене правильно. Хоча він виконує два побудови…
Блез

1
@Blaise ви випадково використовуєте Ghostery (чи подібне)? Спробуйте відключити це. Для мене це призведе до появи кнопки Перезавантажити збірку.
Грег Хендершот

29
Це працює, коли ви спочатку активуєте будівлю Travis CI для репо. Кнопка "перезавантажити збірку" не існує для репо, що не має попередніх збірок.
Брайан Дж. Міллер

12
Примітка для таких ідіотів, як я: Відкрийте Settingsу сховищі на Github , а не на репо-сторінці Тревіса! Я не можу повірити, що витратив 20 хвилин, намагаючись знайти Service Hooksна сторінці Травіса. :(
Джон Червоний

83

Я знаю, що ви сказали, не натискаючи на комісію, але щось зручне, якщо ви працюєте в іншому відділенні, ніж майстер, - це зробити пусту комітку.

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

Зрештою, ви можете відновити базу даних і видалити сквош / видалити порожні комікси та працює на всіх гаках git :)


1
Це геніально, дякую! Я просто хочу додати, що мені довелося зробити перезавантаження, щоб перемістити команду "Тригер" далі вниз в історії; інакше вона просто відкине нову збірку після зняття комітету "Тригер".
пмос

63
в цьому ж ключі ви можете внести зміни до існуючої фіксації та примусового натискання: git commit --amend --no-edit && git push -f
grahamrhay

4
@grahamrhay, це найкраще, щоб викликати збірку PR, коли ви не є власником цільового репо, він зберігає вміст, не потрібно об’єднувати чи перезавантажувати чи робити що-небудь. Будь ласка, зробіть це відповіддю, щоб можна було помітніше підкріпити це.
TWiStErRob

Я розігнав сховище, до якого я не мав доступу, і це було єдине, що працювало на мене, оскільки у Тревіса не було жодної збірки, яку я міг би перезапустити на новоствореній вилці.
Нік МакКерді

1
@TWiStErRob Хтось ще написав таку відповідь нижче.
Франклін Ю

30

Я знайшов інший спосіб змусити перезапустити збірки CI та інші тригери:

  1. Запуск git commit --amend --no-editбез змін. Це дозволить відтворити останню команду в поточній галузі.
  2. git push --force-with-lease origin pr-branch.

8
Я б не рекомендував цього. Це руйнівно модифікує історію, так що може заплутати людей, у яких є відділення, засновані на цьому комітеті, а --amendпрапор також не може змінити HEADкомісію в деяких випадках.
Нік МакКерді

7
Я вважаю це чудово для рідкісних випадків, коли для PR потрібно лише веб-гайки BUMP. Ніхто не повинен реалізовуватись із запитів на виклик, тому ніхто не покладається на точний ідентифікатор фіксації.
Влад Фролов

4
продовжуйте, git push --force-with-lease origin pr-branchщоб ви випадково не
звели нанівець

21

Увійдіть у Travis та перейдіть на сторінку збирання. У верхньому правому куті поруч із значком шестірні ви побачите кнопку «Перезавантажити збірку»:

скрінграб

Примітка: для цього вам потрібно мати доступ для запису до пов'язаного репортажу GitHub.


11
Ця відповідь в основному збігається з прийнятою, і була подана набагато пізніше.
Дан Даскалеску

5
@DanDascalescu він не мав скріншот, коли я розміщував повідомлення. І я лише зараз розумію, що ви можете редагувати чужу відповідь! ;)
Хуан

1
@Juan Ви все одно можете видалити цю відповідь, яку я пропоную зробити, оскільки це додає зайвих безладів.
Рафал Енден

20

Якщо у вас є новий проект на GitHub, у якому є .travis.yml, але він ніколи не був протестований, ви можете запускати тести без фіксації таким чином:

  1. включити тестування в секціях Travis CI
  2. відкрити сторінку проекту на GitHub
  3. відкрити налаштування -> веб-камери та послуги
  4. знайдіть Travis CI в сервісах і натисніть кнопку редагування
  5. натисніть "Тестова служба"

3
Це відповідь для тих, хто нещодавно створив проекти.
Ерік МОРАНД

16

Ви можете зробити це, використовуючи Travis 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"
 }

Ви можете налаштувати власну збірку Travis для своєї вилки.
Сем Брайтман

Ви можете побудувати гілку вашого вилки, з якої зроблено запит на витяг.
Сем Брайтман

Гілка вашого PR та PR - це по суті одне і те ж, правда? Якщо після поточного PR-зв’язку були внесені інші зміни, вам потрібно переглянути його на 100%. Але це все одно повинно відбутися, і GitHub повинен показати кнопку інтерфейсу в інтерфейсі, яка запустить нову збірку PR в такому випадку.
Сем Брайтман

11

Тепер Travis пропонує спосіб запустити "власну" збірку з їх веб-інтерфейсу. Шукайте кнопку меню "Додаткові параметри" праворуч у верхній частині сторінки вашого проекту.

Додаткові параметри → Створення тригера

Потім вам відкриється діалогове вікно, в якому ви можете вибрати гілку та налаштувати конфігурацію:

Діалогове вікно побудови

У той час, коли я це пишу, він знаходиться в бета-версії, і, здається, трохи баггі (але, сподіваюся, незабаром проблеми випрасуються).


2
Дякую. Для мене це найкраща відповідь, оскільки зміни тригерної збірки також ідентифікатор збірки, а не з простою перебудовою (за допомогою кнопки). Якщо ви використовуєте ідентифікатор Тревіса у своїх сценаріях, це важливо знати.
Каріма Рафес

2
Це повинно бути вище
Gillespie

8

Якщо ви встановите клієнт Travis CI, ви можете travis restart <job#>вручну запустити збірку з консолі. Ви можете знайти останню роботу # для філії, використовуючиtravis show <branch>

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

Travis CI Client

ОНОВЛЕННЯ: На жаль, схоже, що це не запускає нову збірку за допомогою останнього комітету, а натомість просто перезапускає попередню збірку, використовуючи попередній стан репо.


Я не розумію нотатку оновлення. З команди здається, що ви можете визначити, яку роботу потрібно перезапустити. Таким чином, питання збирається запустити роботу, імовірно, більшість людей хотіли б це зробити, якщо їхня фіксація вже спрацьовує, але вони хочуть перевірити її ще раз так ... О, я думаю, ви не можете деактивувати фіксатори тривожних філій і вручну побудувати HEAD.
redanimalwar

@redanimalwar поширений випадок використання змушує побудувати CI, коли він не вдається виявити зміни або знаходиться в спокійному періоді.
Сем Брайтман

4

Тут я маю зазначити, що зараз у нас є засіб для запуску нового побудови в Інтернеті. Дивіться https://blog.travis-ci.com/2017-08-24-trigger-custom-build .

TL; DR Клацніть на "Додаткові параметри" та виберіть "Збірка тригера".


Це не спрацьовує, якщо у вас немає доступу для запису / співпрацівника до сховища та ви хочете відновити збірку для власного запиту на витяг. Я не бачу такого варіанту. І коли ви намагаєтеся Travis CLI, він говорить, build #xxxx has been restarted але якщо ви подивитесь на веб-сторінку, ви не бачите жодної збірки
bitek

3

Якщо збірка ніколи не сталася (можливо, ви не отримали ввімкнути перемикач збірки Pull-Request), ви можете позначити Запит на витяг у Github як закритий, а потім позначте його як відкритий, і нова збірка буде запущена.


1

Я просто запустив тести на запит на виклик, який потрібно повторно запустити, натиснувши тут "Оновити гілку": компонент перевірки github


1

Ось що для мене спрацювало для відновлення PR, який відкрив Dependabot, але не вдався через помилки в .travis.yml:

  1. Закрийте піар
  2. Зачекайте коментарів від Dependabot ("Гаразд, я більше не повідомляю вас про цей випуск, але зв’яжуся, коли буде доступна нова версія."). Він видалить свою гілку.
  3. Відновлення видаленої гілки Dependabot (щось на кшталт dependabot/cargo/tempfile-3.0.4).
  4. Відкрийте PR знову

1

Переконайтесь, що спочатку увійдіть до Travis. Кнопка відновлення не з’являється, доки ви не ввійдете в систему. Я знаю, що це очевидно, але хтось просто запустив її ;-)


0

іноді трапляється, що сервер зробив деякі помилки. спробуйте вийти / увійти, і тоді все може бути правильно. (Так, це сталося сьогодні вдень.)


-1

Якщо у вас немає доступу для запису, просто закрийте та відкрийте PR.


Ні, БУДЬ ласка, не залишайте запитів на вивезення сміття, це дратує. Просто натисніть на нову фіксацію (-ів) у свою філію (наприклад, ви можете змінити дату здійснення: git commit --amend --date = зараз && git push -f).
intgr
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.