Saya baru saja bergabung dengan sebuah proyek, dan saya baru di travis-ci. Saya lebih suka tidak harus mendorong setiap perubahan kecil ke. Travis.yml dan setiap perubahan kecil yang saya lakukan pada sumber untuk menjalankan build. Dengan jenkins Anda dapat mengunduh jenkins dan menjalankannya secara lokal. Apakah travis menawarkan sesuatu seperti ini?
Catatan: Saya telah melihat travis-ci cli dan mengunduhnya, tetapi yang tampaknya dilakukan hanyalah memanggil API mereka, yang kemudian terhubung ke repo github saya, jadi jika saya tidak mendorong, tidak masalah saya memulai ulang bangunan terakhir.
install:
bagian ini, dan mungkin inilah pertanyaan yang lebih diperhatikan.Jawaban:
Proses ini memungkinkan Anda untuk sepenuhnya mereproduksi pekerjaan membangun Travis di komputer Anda. Anda juga dapat menghentikan proses kapan saja dan men-debug. Di bawah ini adalah contoh di mana saya mereproduksi hasil pekerjaan # 191.1 dengan sempurna di php-school / cli-menu .
Prasyarat
Siapkan lingkungan build
Referensi: https://docs.travis-ci.com/user/common-build-problems/
Buat ID bangunan sementara Anda sendiri
Lihat log build , buka tombol tampilkan lebih banyak untuk INFORMASI PEKERJA dan temukan baris INSTANCE, tempel di sini dan jalankan (ganti tag setelah tanda titik dua dengan yang terbaru yang tersedia) :
Jalankan server tanpa kepala
Jalankan klien terlampir
Jalankan pekerjaan
Sekarang Anda sekarang berada di dalam lingkungan Travis Anda. Jalankan
su - travis
untuk memulai.Langkah ini didefinisikan dengan baik tetapi lebih membosankan dan manual. Anda akan menemukan setiap perintah yang dijalankan Travis di lingkungan. Untuk melakukan ini, cari semua yang ada di kolom kanan yang memiliki tag seperti 0.03s.
Di sisi kiri Anda akan melihat perintah yang sebenarnya. Jalankan perintah itu, secara berurutan.
Hasil
Sekarang adalah saat yang tepat untuk menjalankan
history
perintah. Anda dapat memulai ulang proses dan memutar ulang perintah tersebut untuk menjalankan tes yang sama terhadap basis kode yang diperbarui.ssh-keygen -t rsa -b 4096 -C "YOUR EMAIL REGISTERED IN GITHUB"
lalucat ~/.ssh/id_rsa.pub
dan klik di sini untuk menambahkan kuncigit pull
dari dalam docker untuk memuat komit dari kotak dev Anda sebelum mendorongnya ke GitHub.travis.yml
.sumber
instance:
saya tidak dapat melihat jalur gambar buruh pelabuhan yang valid, hanya sesuatu sepertitravis-ci-garnet-trusty-1512502259-986baf0
. Sudah mencobatravisci/ci-garnet:$INSTANCE
dantravisci/$INSTANCE
- tidak berhasil, tidak dapat menemukan gambar. Juga hanya mengambil postfix (yaitutravisci/ci-garnet:packer-1512502259-986baf0
) tidak berhasil.travisci/ci-garnet:packer-1512502276-986baf0
gambar yang disarankan dalam dokumen Travis . Yang ini tersedia, tetapi sudah usang. Misalnya, CMake jauh lebih tua dari yang tersedia di Travis. Tidak ada versi baruci-garnet
telah diunggah ke Docker Hub dalam enam bulan terakhir, padahal sebelumnya ada banyak pembaruan per bulan.sudo: required
set? Dalam build saya sekarang, saya melihattravis-ci-sardonyx-xenial-1547455603-2c98a19
mana yang bisa saya petakan ke travisci / ci-sardonyx: packer-1547455648-2c98a19Travis-ci menawarkan infrastruktur berbasis kontainer baru yang menggunakan buruh pelabuhan. Ini bisa sangat berguna jika Anda mencoba memecahkan masalah travis-ci build dengan mereproduksi secara lokal. Ini diambil dari dokumentasi Travis CI .
Pemecahan Masalah Lokal di Gambar Docker
Jika Anda mengalami kesulitan melacak masalah sebenarnya di build, seringkali membantu menjalankan build secara lokal. Untuk melakukan ini, Anda harus menggunakan infrastruktur berbasis wadah kami (yaitu, miliki
sudo: false
di Anda.travis.yml
), dan untuk mengetahui gambar Docker yang Anda gunakan pada Travis CI.Menjalankan Gambar Docker Berbasis Wadah Secara Lokal
Pilih gambar dari Docker Hub . Jika Anda tidak menggunakan pengambilan gambar khusus bahasa
ci-ruby
. Buka terminal dan mulai sesi Docker interaktif menggunakan URL gambar:Beralih ke
travis
pengguna:/
folder gambar.sumber
make test
.> Manually install any dependencies
Itu terdengar seperti cara yang baik untuk mengakhiri dengan hasil yang tidak sesuai dengan build Travis biasa.Manually tun your Travis CI build command
... Seperti, apa? Bagaimana? Apa itu? Saya punya.travis.yml
file. Saya mencoba travis-build tetapi itu jalan buntu.UPDATE: Saya sekarang memiliki turnkey lengkap, jawaban lengkap, lihat https://stackoverflow.com/a/49019950/300224 . Hanya butuh 3 tahun untuk mencari tahu!
Menurut dokumentasi Travis: https://github.com/travis-ci/travis-ci ada ramuan proyek yang berkolusi untuk memberikan layanan web Travis CI yang kita kenal dan cintai. Subset proyek berikut ini muncul untuk memungkinkan
make test
fungsionalitas lokal menggunakan.travis.yml
dalam proyek Anda:travis-build
travis-build membuat skrip build untuk setiap pekerjaan. Dibutuhkan konfigurasi dari
.travis.yml
file dan membuatbash
skrip yang kemudian dijalankan di lingkungan build oleh travis-pekerja.travis-buku masak
travis-cookbooks memegang buku masak Chef yang digunakan untuk menyediakan lingkungan build.
pekerja travis
travis-pekerja bertanggung jawab untuk menjalankan skrip build di lingkungan yang bersih. Ini stream output log ke travis-log dan mendorong pembaruan status (build starting / finishing) ke travis-hub.
(Sub proyek lainnya bertanggung jawab untuk berkomunikasi dengan GitHub, antarmuka web mereka, email, dan API mereka.)
sumber
make test
fungsi akan lebih baik. Beri komentar jika Anda ingin membahasnya dengan saya.travis-build
? Tidak ada instruksi dalam repo.Mirip dengan Scott McLeod tetapi ini juga menghasilkan skrip bash untuk menjalankan langkah-langkah dari .travis.yml.
Memecahkan masalah secara lokal di Docker dengan skrip Bash yang dihasilkan
sumber
travis # to create ~/.travis
. Travis membutuhkan perintah untuk dijalankan.sudo - travis
seharusnyasu - travis
./home/travis/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- travis/support (LoadError)
cd ~/.travis/travis-build/ bundle install bundler add travis bundler binstubs travis cd <REPO_YOU_WANT_TO_RUN_COMPILE_IN> ~/.travis/travis-build/bin/travis compile
Gunakan wwtd (apa yang akan dilakukan travis) permata ruby untuk menjalankan tes pada mesin lokal Anda secara kasar karena mereka akan berjalan pada travis.
Ini akan menciptakan kembali build matrix dan menjalankan setiap konfigurasi, bagus untuk pengaturan pemeriksaan kewarasan sebelum mendorong.
sumber
ruby
dukungantl; dr Gunakan gambar yang ditentukan di https://docs.travis-ci.com/user/common-build-problems/#troubleshooting-locally-in-a-docker-image dalam kombinasi dengan https://github.com/ travis-ci / travis-build # use-as-addon-for-travis-cli .
EDIT 2019-12-06
#troubleshooting-locally-in-a-docker-image
bagian diganti dengan#running-builds-in-debug-mode
yang juga menjelaskan cara SSH ke pekerjaan yang berjalan dalam mode debug .EDIT 2019-07-26
#troubleshooting-locally-in-a-docker-image
Bagian tidak lagi menjadi bagian dari dokumen; inilah sebabnyaPadahal, ini masih dalam sejarah git: https://github.com/travis-ci/docs-travis-ci-com/pull/2193 .
Cari versi gambar (cukup lama, tidak dapat menemukan yang lebih baru) di: https://travis-ci.org/travis-ci/docs-travis-ci-com/builds/230889063#L661 .
Saya ingin memeriksa mengapa salah satu tes di build saya gagal dengan kesalahan yang saya tidak dapatkan secara lokal.
Bekerja.
Apa yang sebenarnya berhasil adalah menggunakan gambar yang ditentukan di Troubleshooting Lokal di halaman dokumen Docker Image . Dalam kasus saya itu
travisci/ci-garnet:packer-1512502276-986baf0
.Saya dapat menambahkan
travise compile
langkah-langkah berikut yang dijelaskan di https://github.com/travis-ci/travis-build#use-as-addon-for-travis-cli .Semuanya dari
.travis.yml
dieksekusi seperti yang diharapkan (dependensi diinstal, tes berjalan, ...).Perhatikan bahwa sebelum menjalankan
bash ci.sh
saya harus mengubah--branch\=\'\'\
ke--branch\=master\
(lihat perintah kedua ke terakhirsed -i ...
) dici.sh
.Jika itu tidak berhasil, perintah di bawah ini akan membantu mengidentifikasi nomor baris target dan Anda dapat mengedit baris secara manual.
Tidak bekerja
Ikuti jawaban yang diterima untuk pertanyaan ini tetapi tidak menemukan gambar (
travis-ci-garnet-trusty-1512502259-986baf0
) yang disebutkaninstance
di https://hub.docker.com/u/travisci/ .Bangun poin versi pekerja ke travis-ci / commit pekerja dan referensi instal travis-pekerja-nya
quay.io/travisci/
sebagai registry gambar. Jadi saya mencobanya.Jelas bukan Trusty (Ubuntu 14.04) dan tidak kecil juga.
sumber
http_proxy
lingkungan demigit clone
. Secara defaultgit clone
melempargnutls_handshake
pengecualian. Jadi saya ingin menegakkan instalasibundler
versi tertentugem install bundler -v 1.16.6
karenabundler binstubs travis
gagal sebelumnya. Tingkatkanbundler
versi yang diperlukan dengan menjalankan `bundle info travis`travis.yml
menjadi skrip shell yang dapat dieksekusi. Bagus sekali! Satu-satunya peningkatan pada hal ini adalah mekanisme untuk menghindari penggantian string manual ketika menentukan cabang yang akan dibangun.sed
perintah yang membahas poin yang Anda buat. Lihat perintah sebelum menjalankanbash ci.sh
.Anda bisa mencoba Trevor , yang menggunakan Docker untuk menjalankan build Travis Anda.
Dari uraiannya:
sumber
Saya tidak yakin apa alasan awal Anda menjalankan Travis secara lokal, jika Anda hanya ingin bermain dengannya, maka berhentilah membaca di sini karena itu tidak relevan untuk Anda.
Jika Anda sudah memiliki pengalaman dengan Travis yang dihosting dan Anda ingin mendapatkan pengalaman yang sama di pusat data Anda sendiri, baca terus.
Sejak Desember 2014, Travis CI menawarkan versi Enterprise di tempat.
http://blog.travis-ci.com/2014-12-19-introducing-travis-ci-enterprise/
Harga juga merupakan bagian dari artikel:
sumber
whackamole
adalah salinan dari proyek yang ingin saya kerjakan, dan saya dapat mengatur pekerjaan sementara Travis untuk proyek itu sementara saya mengerjakan kekusutan otomatisasi pembuatan. Setelah saya mengatasinya, rebase lusinan komitmen "oops" dan dorong ke repo GitHub yang asli. (Dan mungkin menghapuswhackamole
repo GitHub dan pekerjaan Travis yang sesuai.)Dimungkinkan untuk lingkungan SSH ke Travis CI melalui host pentalan. Fitur ini tidak dibangun di Travis CI, tetapi dapat dicapai dengan langkah-langkah berikut.
travis
pengguna dan pastikan Anda bisa menggunakan SSH untuk itu.Letakkan garis-garis ini di
script:
bagian Anda.travis.yml
(misalnya di akhir).Di mana
$bouncehostip
IP / host host bouncing Anda, dan$sshpassword
kata sandi SSH Anda yang ditentukan. Variabel-variabel ini dapat ditambahkan sebagai variabel terenkripsi .Dorong perubahan. Anda harus dapat membuat koneksi SSH ke host pentalan Anda.
Sumber: Shell ke Travis CI Build Environment .
Ini adalah contoh lengkapnya:
Lihat:
c-mart/travis-shell
di GitHub .Lihat juga: Cara mereproduksi lingkungan build travis-ci untuk debugging
sumber