Намагаючись зрозуміти, що робить Тревіс CI і коли це слід використовувати


86

Я дуже новачок у Git, і я планую внести свій вклад у якийсь проект з відкритим кодом на GitHub, виявивши в ньому невелику помилку. Після розгалуження і виправлення помилки, я призначив запит на витяг, і помітив, що це з'являється:

Помилка - не вдалося побудувати програму Travis CI

Вивчивши деталі, я виявив, що це було спричинено Could not find .travis.yml, що мало цілком сенс, оскільки я не входив у Travis Cl за допомогою і не додавав .travis.yml до сховища.

Я вперше чую про Тревіса та те, що називається безперервною інтеграцією. І це звучить досить класно, тому, щоб дізнатись більше про це, я шукав це у Вікіпедії.

Travis CI - це розміщена, розподілена послуга безперервної інтеграції, яка використовується для побудови та тестування проектів, розміщених на GitHub. Travis CI автоматично виявляє, коли було зроблено коміт і переміщено до сховища GitHub, що використовує Travis CI, і кожного разу, коли це трапляється, він намагатиметься побудувати проект і запустити тести . Сюди входять коміти до всіх гілок, а не лише до основної гілки.

На сьогоднішній день я розумію Travis CI, що те, що він робить, автоматично підштовхує проект, git commit -am ".."і я не зовсім розумію його частину.

  1. Створюючи проект та запускаючи тести , які тести він буде виконувати? І як це буде "будувати" проект? (як компіляція в двійковий файл?)

  2. У ньому зазначено, що "Сюди входять коміти для всіх філій" - але що, якщо я не хочу робити комісії для всіх філій?

  3. Чи добре, якщо я взагалі не використовую Тревіс Кл? За яких обставин найкраще його використовувати (або він повинен бути використаний)?

Відповіді:


104

Найпростіший спосіб пояснити Travis CI - це те, що він запускає тести вашої програми кожного разу, коли ви берете участь у GitHub (це можна налаштувати різними способами, і ви завжди можете відключити збірки на деяких гілках). Суть цього полягає в тому, що ви часто можете дуже швидко виявити, якщо ваш коміт щось зламав, і виправити це, перш ніж це стане проблемою. Я б рекомендував запускати Travis CI на кожному репозиторії GitHub, в якому ви маєте модульні тести та використовуєте мову програмування, що підтримується Travis CI. Оскільки налаштування Travis CI дуже просте, я зазвичай не бачу вагомих причин не використовувати його, якщо вам не байдуже, чи проходите ви тести у своїй програмі чи ні. Не соромтеся залишати коментар, якщо у вас виникнуть додаткові запитання. Ви можете прочитати більше про Тревіс CI тут .


1
Там сказано, що це "безкоштовно" для проектів з відкритим кодом, але сказано, що ваші перші 100 збірок безкоштовні. Тож ... це не безкоштовно тоді? Навіть розвиваючись самостійно, я міг би дуже швидко досягти 100 збірок. Я читаю це неправильно? Ніде не можна знайти інформацію. @ joshua-anderson
Mark Pieszak - Trilon.io

2
Це завжди безкоштовно для проектів з відкритим кодом. Для приватних репозиторіїв ви отримуєте 100 безкоштовних збірок, перш ніж вам потрібно підписатись на платний план.
Джошуа-Андерсон

Хіба типовий робочий процес git не витягує найновіший коміт і не об'єднує локально, а тестує, а потім натискає на віддалений?
Бен,

А як щодо людей, які займаються веб-розробкою за допомогою інструментів cli для Angular, React або Vue? Фреймворки забезпечують миттєву транпіляцію та тестування зворотного зв'язку при запуску сервера розробників. Чи є якась різниця між цим та Тревісом CI, чи я повинен сказати між запуском модульних тестів перед фіксацією та використанням CI загалом?
OzzyTheGiant

Отже, travis не має сенсу, я можу легко скинути travis, використовуючи гачки коміту git і блокувати натискання, які повертають помилки з команди тесту.
betoharres

16

Оскільки ви вже виявили, що таке Тревіс-КІ, я прямо вкажу на ваші запитання.

Створюючи проект та запускаючи тести, які тести він буде виконувати? І як це буде "будувати" проект? (як компіляція в двійковий файл?)

У .travis.ymlфайлі, в якому ви вказуєте свою ОС, мову програмування, гілку репо, ім’я файлу проекту та інші деталі. Читаючи цей файл, Travis-CI використовуватиме компілятори, встановлені на їх сервері, для компіляції нашого коду. Ймовірно, вони матимуть той самий механізм, що і ми для Github. Вперше вони можуть витягнути код [якщо ми вказали конкретні гілки, вони могли б витягнути код лише з цих гілок]. Крім того, ми пройшли аутентифікацію для використання нашого облікового запису в Travis-CI. Кожного разу, коли ми робимо коміт, повинно бути якесь повідомлення про запуск сервера Travis-CI, таким чином він буде визнаний як коміт і почне компіляція.


У ньому зазначено, що "Сюди входять коміти для всіх філій" - але що, якщо я не хочу робити комісії для всіх філій?

Ви можете вказати різні гілки або masterгілки. І він повинен компілювати лише конкретні гілки, вказані у .travis.ymlфайлі.


Це нормально, якщо я взагалі не використовую Travis Cl? За яких обставин найкраще його використовувати (або він повинен бути використаний)?

Так, це добре. Не велике діло. Але які переваги ви втратите, не використовуючи цей простий для інтеграції двигун із вашим репо. Кожного разу, коли ви фіксуєте, можливо, що він щось пропустив і не зміг скомпілювати через код. Звідки ти дізнаєшся? Таким чином, вам слід використовувати Travis-CI.


Я написав допис у блозі, який ви можете прочитати, щоб дізнатись, що таке Travis-CI, Безперервна інтеграція та як пов’язати Travis-CI з вашим Github Repo. Я написав це для сховища Swift.


2

Мені здається, я дуже добре можу відповісти на ваше запитання, оскільки зараз я вивчаю Тревіс КІ. Перша проблема, з якою ви зіткнулися в першу чергу, полягає в тому, що проект, в який ви вносите внесок, використовує Travis CI для тестування та побудови проекту. Якщо проект не використовує Travis CI, ви б не зіткнулися з такою помилкою.

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

Відповісти на перше питання про побудову проекту.

Створюючи проект та запускаючи тести, які тести він буде виконувати? І як це буде "будувати" проект? (як компіляція в двійковий файл?)

Це означає, як обробляється вихідний код перед використанням / тестуванням. Це залежить від мови, яку ви пишете. Наприклад, якщо проект пише на PHP. Він не збирається вбудовувати мій код у такий виконуваний файл, як вихідний код C / C ++. Він запустить мій PHP-код на інтерпретаторі PHP і протестує його, як це робиться. Він все ще проходить звичайний процес компіляції, який проходить ваша улюблена мова.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.