Cố gắng hiểu Travis CI làm gì và khi nào nên sử dụng


86

Tôi là người mới sử dụng Git và tôi đang có kế hoạch đóng góp cho một số dự án mã nguồn mở trên GitHub sau khi phát hiện ra một lỗi nhỏ trong đó. Sau khi sửa lỗi và sửa lỗi, tôi đã đưa ra một yêu cầu kéo và tôi nhận thấy điều này hiển thị:

Không thành công - Xây dựng Travis CI không thành công

Xem xét chi tiết, tôi phát hiện ra nguyên nhân là do Could not find .travis.yml, điều này hoàn toàn hợp lý vì tôi chưa đăng nhập vào Travis Cl bằng và thêm .travis.yml vào kho lưu trữ.

Đây là lần đầu tiên tôi nghe về Travis và cái được gọi là tích hợp liên tục. Và nó nghe có vẻ khá hay nên để tìm hiểu thêm về nó, tôi đã tra cứu nó trên Wikipedia.

Travis CI là một dịch vụ tích hợp liên tục được lưu trữ, phân phối được sử dụng để xây dựng và thử nghiệm các dự án được lưu trữ tại GitHub. Travis CI tự động phát hiện khi một cam kết đã được thực hiện và đẩy đến kho lưu trữ GitHub đang sử dụng Travis CI và mỗi lần điều này xảy ra, nó sẽ cố gắng xây dựng dự án và chạy thử nghiệm . Điều này bao gồm các cam kết cho tất cả các nhánh, không chỉ cho nhánh chính.

Hiểu biết hiện tại của tôi về Travis CI là những gì nó làm đang tự động thúc đẩy dự án git commit -am ".."và tôi không hiểu rõ phần nào về nó.

  1. Bằng cách xây dựng dự án và chạy các bài kiểm tra , nó sẽ chạy những bài kiểm tra nào? Và nó sẽ "xây dựng" dự án như thế nào? (như biên dịch nó thành nhị phân?)

  2. Nó nói rằng "Điều này bao gồm cam kết cho tất cả các chi nhánh" - nhưng nếu tôi không muốn cam kết với tất cả các chi nhánh thì sao?

  3. Có ổn không nếu tôi không sử dụng Travis Cl? Sử dụng nó trong trường hợp nào là tốt nhất (hoặc bắt buộc phải dùng)?

Câu trả lời:


104

Cách đơn giản nhất để giải thích Travis CI là nó chạy các bài kiểm tra chương trình của bạn mỗi khi bạn cam kết với GitHub (điều này có thể được định cấu hình theo nhiều cách và bạn luôn có thể tắt các bản dựng trên một số nhánh). Vấn đề của điều này là bạn thường có thể phát hiện ra rất nhanh nếu cam kết của bạn đã phá vỡ điều gì đó và sửa chữa nó trước khi nó trở thành vấn đề. Tôi khuyên bạn nên chạy Travis CI trên mọi repo GitHub mà bạn có các bài kiểm tra đơn vị và đang sử dụng ngôn ngữ lập trình được Travis CI hỗ trợ. Vì việc thiết lập Travis CI rất dễ dàng, tôi thường không thấy lý do chính đáng để không sử dụng nó, trừ khi bạn không quan tâm đến việc bạn có vượt qua các bài kiểm tra trong chương trình của mình hay không. Vui lòng để lại bình luận nếu bạn có thêm bất kỳ câu hỏi nào. Bạn có thể đọc thêm về Travis CI tại đây .


1
Nó nói rằng nó "miễn phí" cho các dự án mã nguồn mở, nhưng cho biết 100 bản dựng đầu tiên của bạn là miễn phí. Vậy thì ... nó không rảnh sao? Ngay cả khi phát triển một mình, tôi có thể đạt được 100 bản dựng rất nhanh chóng. Tôi có đang đọc nhầm không? Không thể tìm thấy bất kỳ thông tin nào ở bất cứ đâu. @ joshua-anderson
Mark Pieszak - Trilon.io

2
Nó luôn miễn phí cho các dự án mã nguồn mở. Đối với các kho lưu trữ riêng, bạn nhận được 100 bản dựng miễn phí trước khi cần đăng ký gói trả phí.
joshua-anderson

Có phải quy trình làm việc git điển hình kéo cam kết gần đây nhất và hợp nhất cục bộ và thử nghiệm rồi đẩy sang điều khiển từ xa không?
Ben

Còn những người phát triển web với các công cụ cli cho Angular, React hoặc Vue thì sao? Các khung cung cấp phản hồi chuyển tiếp và thử nghiệm tức thì khi chạy máy chủ nhà phát triển. Có sự khác biệt nào giữa điều đó và Travis CI hay tôi nên nói giữa việc chạy các bài kiểm tra đơn vị trước khi cam kết và sử dụng CI nói chung?
OzzyTheGiant 14/02/19

Vì vậy, travis không có ý nghĩa gì, tôi có thể dễ dàng bỏ travis bằng cách sử dụng git commit hooks và khối push trả về lỗi từ lệnh kiểm tra.
betoharres

16

Khi bạn đã khám phá ra Travis-CI là gì, tôi sẽ trực tiếp chỉ ra những câu hỏi mà bạn có.

Bằng cách xây dựng dự án và chạy các bài kiểm tra, nó sẽ chạy những bài kiểm tra nào? Và nó sẽ "xây dựng" dự án như thế nào? (như biên dịch nó thành nhị phân?)

Trong .travis.ymltệp bạn đang chỉ định hệ điều hành, ngôn ngữ lập trình, nhánh repo của bạn, tên tệp dự án và các chi tiết khác. Bằng cách đọc tệp này, Travis-CI sẽ sử dụng các trình biên dịch cụ thể được cài đặt trên máy chủ của họ để biên dịch mã của chúng tôi. Có lẽ chúng sẽ có cơ chế giống như chúng ta đã làm cho Github. Lần đầu tiên, họ có thể kéo mã [nếu chúng tôi đã chỉ định các nhánh cụ thể, họ có thể chỉ kéo mã từ các nhánh đó]. Ngoài ra, chúng tôi đã xác thực để sử dụng tài khoản của mình với Travis-CI, bất cứ khi nào chúng tôi thực hiện cam kết, sẽ có một số thông báo sẽ kích hoạt đến máy chủ Travis-CI do đó nó sẽ được công nhận là một cam kết và nó sẽ bắt đầu biên dịch.


Nó nói rằng "Điều này bao gồm cam kết cho tất cả các chi nhánh" - nhưng nếu tôi không muốn cam kết với tất cả các chi nhánh thì sao?

Bạn có thể chỉ định các nhánh khác nhau hoặc masternhánh. Và nó chỉ nên biên dịch các nhánh cụ thể được chỉ định trong .travis.ymltệp.


Có ổn không nếu tôi không sử dụng Travis Cl? Sử dụng nó trong trường hợp nào là tốt nhất (hoặc bắt buộc phải dùng)?

Vâng, không sao cả. Không phải là một thỏa thuận lớn. Nhưng bạn sẽ thiếu những lợi ích nào nếu không sử dụng engine dễ dàng tích hợp này với repo của bạn. Mỗi khi bạn cam kết, nó có thể bỏ sót điều gì đó và nó không thể biên dịch do mã. Làm thế nào bạn sẽ biết? Vì vậy, bạn nên sử dụng Travis-CI.


Tôi đã viết một bài đăng trên blog mà bạn có thể đọc để biết Travis-CI là gì, Tích hợp liên tục và cách liên kết Travis-CI với Github Repo của bạn. Tôi đã viết nó cho một kho lưu trữ Swift.


2

Tôi nghĩ đang ở một vị trí rất tốt để trả lời câu hỏi của bạn vì hiện tại tôi đang tìm hiểu Travis CI. Vấn đề đầu tiên bạn gặp phải ngay từ đầu là do dự án bạn đang đóng góp đang sử dụng Travis CI để kiểm tra và xây dựng dự án. Nếu dự án không sử dụng Travis CI, bạn sẽ không gặp phải lỗi như vậy.

Giải pháp là kiểm tra trang web Travis CI và tìm hiểu cách thức hoạt động cũng như ảnh hưởng của nó đến dự án bạn đang thực hiện. Điều này sẽ đưa bạn vào một vị trí rất tốt để hiểu những gì bị lỗi trong mã của bạn và cách khắc phục nó.

Để trả lời câu hỏi đầu tiên về việc xây dựng dự án.

Bằng cách xây dựng dự án và chạy các bài kiểm tra, nó sẽ chạy những bài kiểm tra nào? Và nó sẽ "xây dựng" dự án như thế nào? (như biên dịch nó thành nhị phân?)

Nó có nghĩa là cách mã nguồn được xử lý trước khi sử dụng / thử nghiệm. Nó phụ thuộc vào ngôn ngữ bạn đang viết. Ví dụ: nếu dự án đang viết bằng PHP. Nó sẽ không xây dựng mã của tôi thành tệp thực thi như mã nguồn C / C ++. Nó sẽ chạy mã PHP của tôi trên trình thông dịch PHP và kiểm tra nó như vậy. Nó vẫn trải qua quá trình biên dịch bình thường mà ngôn ngữ ưa thích của bạn trải qua.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.