Memicu pembangunan kembali Travis-CI tanpa mendorong komit?

414

Menggunakan Travis-CI, apakah mungkin untuk memicu pembangunan kembali tanpa mendorong komit baru ke GitHub?

Use case: Bangunan gagal karena eksternalitas. Sumbernya sebenarnya benar. Itu akan membangun OK dan lulus jika hanya menjalankan kembali.

Misalnya, apt-getgagal karena server paket sedang down, tetapi server kembali naik. Namun status build "macet" pada "gagal" sampai komit baru didorong.

Apakah ada cara untuk mendorong Travis-CI untuk melakukan build lain, selain mendorong komit "dummy"?

Greg Hendershott
sumber

Jawaban:

458
  • Jika Anda memiliki akses tulis ke repo : Di layar detail build, ada tombol ↻ Restart Build . Juga di bawah "Opsi Lainnya" ada item menu pemicu build.

    Catatan : Ekstensi peramban seperti Ghostery dapat mencegah tombol mulai ulang ditampilkan. Coba nonaktifkan ekstensi atau daftar putih Travis CI.

    Note2 : Jika .travis.ymlkonfigurasi telah berubah di hulu, mengklik tombol bangun kembali akan menjalankan travis dengan konfigurasi lama. Untuk menerapkan perubahan hulu untuk konfigurasi travis, kita harus menambahkan komit ke PR atau menutup / membukanya kembali.

  • Jika Anda telah mengirimkan permintaan tarik : Anda dapat menutup PR lalu membukanya lagi . Ini akan memicu bangunan baru.

Mulai Ulang Bangun:

Mulai kembali Pembuatan Cuplikan Layar

Pemicu membangun:

Trigger Build Screen Shot

jbtule
sumber
1
Saya telah menemukan dan menggunakannya dalam kasus lain. Tapi aku bisa bersumpah aku punya kasus di mana ia telah Kesalahan karena alasan yang saya jelaskan di atas, dan menu gear tidak memiliki opsi itu. Mungkin itu hanya kebetulan, atau mungkin saya salah. Ngomong-ngomong, saya pikir Anda menjawab bagaimana ini seharusnya bekerja, jadi saya akan melanjutkan dan menandai jawaban Anda sebagai diterima. Terima kasih!
Greg Hendershott
3
Jika saya melihat sejarah pembangunan dari salah satu proyek yang saya miliki, salah atau gagal, ia memiliki tombol restart
jbtule
20
Saya pikir satu kasus rumit adalah ketika Anda mengirimkan permintaan penarikan untuk proyek orang lain, dan itu salah karena alasan yang tidak terkait dengan PR Anda sendiri, dan Anda tahu itu akan berhasil jika Anda bisa mendorongnya untuk mencoba lagi. Dapat dimengerti mengapa Anda tidak dapat (bukan proyek Anda) - tetapi juga dapat dimengerti mengapa Anda ingin (PR Anda salah "kelihatan buruk").
Greg Hendershott
94
Jangan lupa Anda harus masuk untuk melihat ini: P
Michael J. Calkins
8
Dan Anda harus memiliki akses tulis ke repro github. Jadi ini tidak akan berfungsi untuk garpu yang didorong ke hulu.
Izhaki
206

Jika Anda membuka tab Pengaturan untuk repositori di GitHub, klik Integrasi & layanan , temukan Travis CI dan klik Edit , Anda akan melihat tombol Layanan Uji . Ini akan memicu bangunan.

Aaron Hill
sumber
6
Saya pikir travis-ci menghapus tombol build restart, jadi ini adalah satu-satunya cara yang bekerja untuk saya dengan benar. Ini melakukan dua build ...
Blaise
1
@Blaise, apakah Anda menggunakan Ghostery (atau serupa)? Coba nonaktifkan itu. Bagi saya, ini menyebabkan tombol Restart Build muncul kembali.
Greg Hendershott
29
Ini berfungsi ketika Anda awalnya mengaktifkan gedung Travis CI untuk repo. Tombol "reload build" tidak ada untuk repo yang tidak memiliki build sebelumnya.
Brian J. Miller
12
Catatan untuk idiot seperti saya: Buka Settingsdi repositori di Github , bukan di halaman repo Travis! Saya tidak percaya saya menghabiskan 20 menit untuk mencari Service Hooksdi halaman Travis. :(
John Red
83

Saya tahu Anda mengatakan tanpa mendorong komit, tetapi sesuatu yang berguna, jika Anda bekerja pada cabang selain master, adalah komit kosong.

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

Anda dapat rebase pada akhirnya dan menghapus squash / menghapus komit kosong dan bekerja di semua kait git :)

jasonmit
sumber
1
Itu brilian, terima kasih! Saya hanya ingin menambahkan bahwa saya harus melakukan rebase untuk memindahkan komitmen "Pemicu" lebih jauh ke bawah dalam sejarah; jika tidak, itu hanya akan membuang bangunan baru setelah menghapus komit "Pemicu".
pmos
63
dalam nada yang sama, Anda dapat mengubah komit dan memaksa push yang ada: git commit --amend --no-edit && git push -f
grahamrhay
4
@ grahamrhay itu yang terbaik untuk memicu pembangunan PR ketika Anda bukan pemilik repo target, ia menyimpan konten, tidak perlu menggabungkan atau mengubah atau melakukan apa pun. Tolong jadikan itu jawaban sehingga dimungkinkan untuk meningkatkannya dengan lebih jelas.
TWiStErRob
Saya bercabang repositori saya tidak memiliki akses ke, dan ini adalah satu-satunya hal yang bekerja untuk saya karena Travis tidak memiliki membangun saya bisa memulai kembali pada garpu yang baru dibuat.
Nick McCurdy
1
@TWiStErRob Orang lain menulis jawaban seperti di bawah ini.
Franklin Yu
30

Saya telah menemukan cara lain untuk memaksa CI menjalankan ulang pemicu dan pemicu lainnya:

  1. Jalankan git commit --amend --no-edittanpa perubahan. Ini akan membuat ulang komit terakhir di cabang saat ini.
  2. git push --force-with-lease origin pr-branch.
Vlad Frolov
sumber
8
Saya tidak akan merekomendasikan ini. Secara destruktif memodifikasi sejarah sehingga dapat membingungkan orang-orang yang memiliki cabang berdasarkan komit ini, dan --amendbendera juga mungkin tidak mengubah HEADkomit dalam beberapa kasus.
Nick McCurdy
7
Saya merasa baik-baik saja untuk saat-saat langka ketika Anda hanya membutuhkan webhook BUMP untuk PR. Tidak ada yang harus benar-benar keluar dari permintaan tarik, sehingga tidak ada yang akan bergantung pada id komit yang tepat.
Vlad Frolov
4
lakukan git push --force-with-lease origin pr-branchagar Anda tidak secara tidak sengaja mengubah perubahan orang lain
binarymason
21

Masuk ke Travis dan pergi ke halaman pembuatan. Anda akan melihat tombol "Restart Build" di sudut kanan atas, di sebelah ikon roda gigi:

screengrab

Catatan: Anda harus memiliki akses tulis ke repo GitHub yang tertaut agar ini berfungsi.

Juan
sumber
11
Jawaban ini pada dasarnya sama dengan yang diterima pada, dan diajukan jauh kemudian.
Dan Dascalescu
5
@DanDascalescu tidak memiliki tangkapan layar ketika saya memposting. Dan saya baru sekarang menyadari bahwa Anda dapat mengedit respons orang lain! ;)
Juan
1
@ Wang Anda masih dapat menghapus jawaban ini yang saya sarankan lakukan karena menambahkan kekacauan yang tidak perlu.
Rafal Enden
20

Jika Anda memiliki proyek baru di GitHub yang memiliki .travis.yml, tetapi tidak pernah diuji, Anda dapat menjalankan tes tanpa melakukan cara ini:

  1. aktifkan pengujian dalam pengaturan Travis CI
  2. buka halaman proyek di GitHub
  3. buka pengaturan -> webhooks dan layanan
  4. temukan Travis CI di layanan dan tekan tombol edit
  5. tekan "Layanan uji"
lamplave
sumber
3
Ini adalah jawaban untuk mereka yang memiliki proyek yang baru dibuat.
Eric MORAND
16

Anda dapat melakukan ini menggunakan Travis CLI . Seperti yang dijelaskan dalam dokumentasi , instal terlebih dahulu alat CLI, lalu:

travis login --org --auto
travis token

Anda dapat menyimpan token ini di variabel lingkungan TRAVIS_TOKEN, selama file yang Anda simpan tidak dikontrol versi di tempat umum.

Saya menggunakan fungsi ini untuk mengirim pemicu:

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
sumber
Anda dapat mengatur build Travis Anda sendiri untuk fork Anda.
Sam Brightman
Anda dapat membuat cabang garpu Anda dari mana permintaan tarik dibuat.
Sam Brightman
Cabang PR Anda dan PR pada dasarnya adalah hal yang sama, bukan? Jika hulu memiliki perubahan lain sejak Anda membuat PR, tentu saja, Anda harus mengubahnya kembali menjadi 100% yakin. Tapi itu harus tetap terjadi, dan GitHub harus menunjukkan tombol rebase di UI yang akan memicu pembangunan PR baru dalam kasus itu.
Sam Brightman
11

Travis sekarang menawarkan cara untuk memicu build "custom" dari UI web mereka. Cari tombol menu "Opsi Lainnya" di sisi kanan dekat bagian atas halaman proyek Anda.

Opsi Lainnya → Pemicu Pemicu

Anda kemudian akan disajikan dengan kotak dialog di mana Anda dapat memilih cabang dan menyesuaikan konfigurasi:

Kotak Dialog Bangun Kustom

Saat ini saya sedang menulis ini masih dalam versi beta, dan tampaknya sedikit bermasalah (tapi saya berharap mereka akan segera menyelesaikan masalah).

iconoclast
sumber
2
Terima kasih. Bagi saya, ini adalah respons terbaik karena perubahan build pemicu juga membangun ID, bukan dengan pembangunan kembali sederhana (melalui tombol). Jika Anda menggunakan id Travis dalam skrip Anda, penting untuk diketahui.
Karima Rafes
2
Ini harus lebih tinggi
Gillespie
8

Jika Anda menginstal Travis CI Client yang dapat Anda gunakan travis restart <job#>untuk menjalankan kembali build secara manual dari konsol. Anda dapat menemukan pekerjaan # terakhir untuk menggunakan cabangtravis show <branch>

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

Travis CI Client

UPDATE: Sayangnya sepertinya ini tidak memulai membangun baru menggunakan komit terbaru, tetapi sebaliknya hanya me-restart membangun sebelumnya menggunakan keadaan repo sebelumnya.

Greg Bray
sumber
Saya tidak mengerti catatan pembaruan. Dari perintah itu sepertinya Anda dapat menentukan pekerjaan apa yang harus direstart. Jadi pertanyaannya adalah tentang memicu pekerjaan, mungkin sebagian besar orang ingin melakukan ini jika komit mereka sudah dipicu tetapi mereka ingin mengujinya lagi jadi ... Oh saya kira Anda tidak dapat menonaktifkan pemicu cabang komit dan secara manual membangun KEPALA.
redanimalwar
@redanimalwar kasus penggunaan umum memaksa CI membangun ketika gagal mendeteksi perubahan atau dalam periode tenang.
Sam Brightman
4

Saya harus menyebutkan di sini bahwa kita sekarang memiliki sarana untuk memicu bangunan baru di web. Lihat https://blog.travis-ci.com/2017-08-24-trigger-custom-build untuk detailnya.

TL; DR Klik pada "Opsi lainnya", dan pilih "Trigger build".

banzaiman
sumber
Ini tidak berfungsi jika Anda tidak memiliki akses tulis / kolaborator ke repositori dan ingin menjalankan kembali build untuk permintaan tarik Anda sendiri. Saya tidak melihat opsi itu. Dan ketika mencoba Travis CLI, katanya build #xxxx has been restarted tetapi jika Anda melihat di halaman web Anda tidak melihat adanya build
bitek
3

Jika build tidak pernah terjadi (mungkin Anda belum mengaktifkan switch Pull-Request build dalam waktu), Anda dapat menandai Pull Request pada Github sebagai ditutup kemudian tandai sebagai dibuka dan build baru akan dipicu.

viperguynaz
sumber
1

Saya baru saja memicu tes pada permintaan tarik untuk dijalankan kembali dengan mengklik 'perbarui cabang' di sini: github memeriksa komponen tes

Frazer Kirkman
sumber
1

Inilah yang berhasil bagi saya untuk memicu pembangunan kembali pada PR yang telah dibuka Dependabot, tetapi gagal karena kesalahan dalam .travis.yml:

  1. Tutup PR
  2. Tunggu Dependabot berkomentar ("Oke, saya tidak akan memberi tahu Anda lagi tentang rilis ini, tetapi akan menghubungi Anda ketika versi baru tersedia."). Ini akan menghapus cabangnya.
  3. Kembalikan cabang Dependabot dihapus (seperti dependabot/cargo/tempfile-3.0.4)
  4. Buka PR lagi
grooveplex
sumber
1

Pastikan untuk Masuk ke Travis terlebih dahulu. Tombol bangun kembali tidak muncul sampai Anda masuk. Saya tahu ini jelas, tetapi seseorang baru saja tersandung juga ;-)

dinvlad
sumber
0

Terkadang server melakukan beberapa kesalahan. coba keluar / masuk dan semuanya mungkin benar saat itu. (Ya itu terjadi sore ini kepadaku.)

XenoAmess
sumber
-1

Simlpy tutup dan buka kembali PR jika Anda tidak memiliki akses tulis.

Punit Naik
sumber
Tidak, TOLONG jangan tinggalkan permintaan tarik sampah, itu menyebalkan. Cukup tekan komit baru ke cabang Anda (misalnya Anda dapat mengubah tanggal komit: git commit --amend --date = sekarang && git push -f).
Intgr