Kích hoạt xây dựng lại Travis-CI mà không đẩy một cam kết?


414

Sử dụng Travis-CI, có thể kích hoạt xây dựng lại mà không cần đẩy một cam kết mới vào GitHub không?

Trường hợp sử dụng: Bản dựng bị lỗi do ngoại ứng. Nguồn thực sự chính xác. Nó sẽ xây dựng OK và vượt qua nếu chỉ cần chạy lại.

Chẳng hạn, một apt-getlỗi do máy chủ gói bị hỏng, nhưng máy chủ lại sao lưu. Tuy nhiên, trạng thái xây dựng bị "kẹt" tại "không thành công" cho đến khi một cam kết mới được đẩy.

Có cách nào để thúc đẩy Travis-CI thực hiện một bản dựng khác, ngoài việc đẩy một cam kết "giả" không?

Câu trả lời:


458
  • Nếu bạn có quyền truy cập ghi vào repo : Trên màn hình chi tiết của bản dựng, có một nút ↻ Khởi động lại bản dựng . Ngoài ra trong "Tùy chọn khác" còn có mục trình đơn xây dựng kích hoạt.

    Lưu ý : Các tiện ích mở rộng trình duyệt như Ghostery có thể ngăn nút khởi động lại được hiển thị. Hãy thử vô hiệu hóa tiện ích mở rộng hoặc danh sách trắng Travis CI.

    Lưu ý2 : Nếu .travis.ymlcấu hình đã thay đổi ở thượng nguồn, nhấp vào nút xây dựng lại sẽ chạy travis với cấu hình cũ. Để áp dụng các thay đổi ngược dòng cho cấu hình travis, người ta phải thêm cam kết vào PR hoặc đóng / mở lại nó.

  • Nếu bạn đã gửi yêu cầu kéo : Bạn có thể đóng PR sau đó mở lại . Điều này sẽ kích hoạt một bản dựng mới.

Khởi động lại bản dựng:

Khởi động lại Build Shot

Xây dựng kích hoạt:

Ảnh chụp màn hình kích hoạt


1
Tôi đã tìm thấy và sử dụng nó trong các trường hợp khác. Nhưng tôi có thể đã thề rằng tôi đã có một trường hợp nó đã bị xóa vì lý do tôi đã mô tả ở trên, và menu bánh răng thiếu tùy chọn đó. Có lẽ đó là một con sán một lần, hoặc có lẽ tôi đã nhầm. Dù sao, tôi nghĩ rằng bạn đã trả lời như thế nào nó phải làm việc, vì vậy tôi sẽ đi trước và đánh dấu câu trả lời của bạn là chấp nhận. Cảm ơn!
Greg Hendershott

3
Nếu tôi nhìn vào lịch sử xây dựng của bất kỳ dự án nào tôi sở hữu, bị lỗi hoặc thất bại, nó có nút khởi động lại
jbtule

20
Tôi nghĩ một trường hợp khó khăn là bạn gửi yêu cầu kéo cho dự án của người khác và nó bị lỗi vì những lý do không liên quan đến PR của bạn và bạn biết rằng nó sẽ thành công nếu bạn có thể thử lại để thử lại. Có thể hiểu được lý do tại sao bạn không thể (không phải dự án của bạn) - nhưng cũng có thể hiểu được lý do tại sao bạn muốn (PR của bạn không chính xác "trông xấu").
Greg Hendershott

94
Đừng quên bạn phải đăng nhập để thấy điều này: P
Michael J. Calkins

8
Và bạn cần phải có quyền truy cập ghi vào repro github. Vì vậy, điều này sẽ không làm việc cho dĩa đẩy ngược dòng.
Izhaki

206

Nếu bạn mở tab Cài đặt cho kho lưu trữ trên GitHub, nhấp vào Tích hợp & dịch vụ , tìm Travis CI và nhấp vào Chỉnh sửa , bạn sẽ thấy nút Dịch vụ kiểm tra . Điều này sẽ kích hoạt một bản dựng.


6
Tôi nghĩ travis-ci đã loại bỏ nút khởi động lại, vì vậy đây là cách duy nhất phù hợp với tôi. Nó thực hiện hai bản dựng mặc dù đào
Blaise

1
@Blaise có bất kỳ cơ hội nào bạn sử dụng Ghostery (hoặc tương tự) không? Hãy thử vô hiệu hóa điều đó. Đối với tôi, điều này khiến nút Restart Build xuất hiện trở lại.
Greg Hendershott

29
Điều này hoạt động khi ban đầu bạn kích hoạt tòa nhà Travis CI cho một repo. Nút "tải lại bản dựng" không tồn tại cho một repo không có bất kỳ bản dựng nào trước đó.
Brian J. Miller

12
Một lưu ý cho những kẻ ngốc như tôi: Mở Settingstrong kho lưu trữ trên Github , không phải trên trang repo của Travis! Tôi không thể tin rằng mình đã lãng phí 20 phút khi cố gắng tìm kiếm Service Hookstrên trang của Travis. :(
John Red

83

Tôi biết bạn đã nói mà không cần thực hiện một cam kết, nhưng điều gì đó có ích, nếu bạn đang làm việc trên một nhánh khác ngoài chủ, là để thực hiện một cam kết trống.

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

Bạn có thể rebase cuối cùng và xóa squash / xóa các xác nhận trống và hoạt động trên tất cả các móc git :)


1
Thật là tuyệt vời, cảm ơn bạn! Tôi chỉ muốn nói thêm rằng tôi phải nổi loạn để di chuyển cam kết "Kích hoạt" đi sâu hơn vào lịch sử; nếu không, nó chỉ đơn giản là loại bỏ bản dựng mới khi loại bỏ cam kết "Kích hoạt".
pmos

63
trong cùng một hướng, bạn có thể sửa đổi cam kết hiện tại và lực đẩy: git commit --amend --no-edit && git push -f
grahamrhay

4
@grahamrhay đó là cách tốt nhất để kích hoạt bản dựng PR khi bạn không phải là chủ sở hữu của repo mục tiêu, nó giữ nội dung, không cần hợp nhất hoặc phản ứng lại hoặc làm bất cứ điều gì. Hãy làm cho nó một câu trả lời để nó có thể nâng cao nó rõ ràng hơn.
TWiStErRob

Tôi đã rẽ nhánh một kho lưu trữ mà tôi không có quyền truy cập và đây là điều duy nhất phù hợp với tôi vì Travis không có bất kỳ bản dựng nào tôi có thể khởi động lại trên ngã ba mới tạo của mình.
Nick McCurdy

1
@TWiStErRob Một người khác đã viết câu trả lời như vậy bên dưới.
Franklin Yu

30

Tôi đã tìm thấy một cách khác để buộc các bản dựng CI chạy lại và các trình kích hoạt khác:

  1. Chạy git commit --amend --no-editmà không có bất kỳ thay đổi. Điều này sẽ tạo lại cam kết cuối cùng trong nhánh hiện tại.
  2. git push --force-with-lease origin pr-branch.

8
Tôi sẽ không đề nghị điều này. Nó phá hủy một cách triệt để lịch sử để nó có thể gây nhầm lẫn cho những người có các nhánh dựa trên cam kết này và --amendcờ cũng có thể không thay đổi HEADcam kết trong một số trường hợp.
Nick McCurdy

7
Tôi thấy nó ổn cho những dịp hiếm hoi khi bạn chỉ cần webhook BUMP cho một PR. Không ai nên thực sự phân nhánh ra khỏi các yêu cầu kéo, vì vậy không ai sẽ dựa vào id xác nhận chính xác.
Vlad Frolov

4
cố git push --force-with-lease origin pr-branchgắng để bạn không vô tình làm thay đổi người khác
binarymason

21

Đăng nhập vào Travis và vào trang xây dựng. Bạn sẽ thấy nút "Khởi động lại bản dựng" ở góc trên bên phải, bên cạnh biểu tượng bánh răng:

màn hình

Lưu ý: bạn cần có quyền truy cập ghi vào repo GitHub được liên kết để làm việc này.


11
Câu trả lời này về cơ bản giống như được chấp nhận và đã được gửi nhiều sau đó.
Dan Dascalescu

5
@DanDascalescu nó không có ảnh chụp màn hình khi tôi đăng. Và tôi chỉ nhận ra rằng bạn có thể chỉnh sửa phản hồi của người khác! ;)
Juan

1
@Juan bạn vẫn có thể xóa câu trả lời này mà tôi khuyên bạn nên làm vì nó thêm lộn xộn không cần thiết.
Rafal Enden

20

Nếu bạn có dự án mới trên GitHub có .travis.yml, nhưng chưa bao giờ được thử nghiệm, bạn có thể chạy thử nghiệm mà không cần cam kết theo cách này:

  1. cho phép thử nghiệm trong cài đặt Travis CI
  2. mở trang dự án trên GitHub
  3. mở cài đặt -> webhooks và dịch vụ
  4. tìm Travis CI trong các dịch vụ và nhấn nút chỉnh sửa
  5. nhấn "Dịch vụ kiểm tra"

3
Đây là câu trả lời cho những người có dự án mới được tạo ra.
Eric MORAND

16

Bạn có thể làm điều này bằng cách sử dụng Travis CLI . Như được mô tả trong tài liệu , trước tiên hãy cài đặt công cụ CLI, sau đó:

travis login --org --auto
travis token

Bạn có thể giữ mã thông báo này trong một biến môi trường TRAVIS_TOKEN, miễn là tệp bạn giữ nó không bị kiểm soát phiên bản ở nơi nào đó công khai.

Tôi sử dụng chức năng này để gửi kích hoạt:

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

Bạn có thể thiết lập bản dựng Travis của riêng bạn cho ngã ba của bạn.
Sam Brightman

Bạn có thể xây dựng nhánh rẽ nhánh của mình mà yêu cầu kéo được tạo từ đó.
Sam Brightman

Chi nhánh của PR và PR của bạn về cơ bản là giống nhau, phải không? Nếu ngược dòng có những thay đổi khác kể từ khi bạn thực hiện PR, chắc chắn, bạn cần phải phản ứng lại để chắc chắn 100%. Nhưng dù sao thì điều đó cũng cần phải xảy ra và GitHub sẽ hiển thị nút rebase trong UI sẽ kích hoạt bản dựng PR mới trong trường hợp đó.
Sam Brightman

11

Travis hiện cung cấp một cách để kích hoạt bản dựng "tùy chỉnh" từ giao diện người dùng web của họ. Tìm nút menu "Tùy chọn khác" ở phía bên phải gần đầu trang của dự án của bạn.

Tùy chọn khác → Xây dựng kích hoạt

Sau đó, bạn sẽ được trình bày với một hộp thoại trong đó bạn có thể chọn chi nhánh và tùy chỉnh cấu hình:

Hộp thoại xây dựng tùy chỉnh

Tại thời điểm tôi đang viết bài này, nó đang ở giai đoạn thử nghiệm và có vẻ hơi lỗi (nhưng tôi hy vọng họ sẽ sớm giải quyết được các vấn đề).


2
Cảm ơn. Đối với tôi, đó là phản hồi tốt nhất vì thay đổi bản dựng kích hoạt cũng xây dựng ID, chứ không phải với bản dựng lại đơn giản (thông qua nút). Nếu bạn sử dụng id của Travis trong các tập lệnh của mình, điều quan trọng là phải biết.
Karima Rafes

2
Điều này cần phải được nâng cao hơn
Gillespie

8

Nếu bạn cài đặt Travis CI Client, bạn có thể sử dụng travis restart <job#>để tự chạy lại bản dựng từ bảng điều khiển. Bạn có thể tìm công việc cuối cùng # cho một chi nhánh bằng cách sử dụngtravis show <branch>

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

Khách hàng của Travis CI

CẬP NHẬT: Đáng buồn thay, có vẻ như điều này không bắt đầu một bản dựng mới bằng cách sử dụng cam kết mới nhất, mà thay vào đó chỉ khởi động lại một bản dựng trước đó bằng trạng thái trước đó của repo.


Tôi không hiểu ghi chú cập nhật. Từ lệnh có vẻ như bạn có thể xác định công việc nào cần khởi động lại. Vì vậy, câu hỏi sắp sửa kích hoạt một công việc, có lẽ hầu hết mọi người sẽ muốn làm điều này nếu cam kết của họ đã được kích hoạt nhưng họ muốn kiểm tra lại lần nữa để ... Oh tôi đoán bạn không thể hủy kích hoạt nhánh kích hoạt cam kết và xây dựng CHÍNH.
redanimalwar

@redanimalwar một trường hợp sử dụng phổ biến đang buộc xây dựng CI khi không phát hiện ra các thay đổi hoặc đang trong giai đoạn yên tĩnh.
Sam Brightman

4

Tôi nên đề cập ở đây rằng bây giờ chúng ta có một phương tiện để kích hoạt một bản dựng mới trên web. Xem https://blog.travis-ci.com/2017-08-24-trigger-custom-build để biết chi tiết.

TL; DR Nhấp vào "Tùy chọn khác" và chọn "Kích hoạt bản dựng".


Điều này không hoạt động nếu bạn không có quyền truy cập ghi / colaborator vào kho lưu trữ và muốn chạy lại bản dựng cho yêu cầu kéo của riêng bạn. Tôi không thấy tùy chọn đó. Và khi dùng thử Travis CLI, nó cho biết build #xxxx has been restarted nhưng nếu bạn nhìn vào trang web, bạn sẽ không thấy bất kỳ bản dựng nào xảy ra
cắn vào

3

Nếu quá trình xây dựng không bao giờ xảy ra (có lẽ bạn chưa bật công tắc xây dựng Yêu cầu kéo), bạn có thể đánh dấu Yêu cầu kéo trên Github là đóng rồi đánh dấu là đã mở và một bản dựng mới sẽ được kích hoạt.


1

Tôi vừa kích hoạt các thử nghiệm trên yêu cầu kéo để được chạy lại bằng cách nhấp vào 'cập nhật chi nhánh' tại đây: kiểm tra thành phần github


1

Đây là những gì làm việc cho tôi để kích hoạt xây dựng lại một PR mà Dependabot đã mở, nhưng không thành công do lỗi trong .travis.yml:

  1. Đóng PR
  2. Đợi Dependabot nhận xét ("OK, tôi sẽ không thông báo lại cho bạn về bản phát hành này, nhưng sẽ liên lạc khi có phiên bản mới."). Nó sẽ loại bỏ chi nhánh của nó.
  3. Khôi phục nhánh Dependabot bị loại bỏ (một cái gì đó như dependabot/cargo/tempfile-3.0.4).
  4. Mở lại PR

1

Vui lòng đảm bảo Đăng nhập vào Travis trước. Nút xây dựng lại không xuất hiện cho đến khi bạn đăng nhập. Tôi biết điều này là hiển nhiên, nhưng ai đó cũng vừa vấp vào nó ;-)


0

đôi khi nó xảy ra rằng máy chủ đã làm một số sai lầm. hãy thử đăng xuất / đăng nhập và mọi thứ có thể đúng sau đó. (Vâng, nó đã xảy ra chiều nay với tôi.)


-1

Simlpy đóng và mở lại PR nếu bạn không có quyền ghi.


Không, xin vui lòng không để lại yêu cầu kéo rác, thật khó chịu. Chỉ cần đẩy (các) cam kết mới đến chi nhánh của bạn (ví dụ: bạn có thể thay đổi ngày cam kết: git commit --amend --date = now && git push -f).
intgr
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.