Bisakah Anda membuat build dalam satu langkah?

14

Dari tes joel :

Bisakah Anda membuat build dalam satu langkah?

Saya harus mengatakan saya tidak bisa. Saat ini saya sedang mengerjakan aplikasi web yang memiliki daftar item spreadsheet yang harus dilakukan untuk digunakan. Jadi pertanyaan saya adalah bagaimana saya bisa mengotomatisasi ini ? Apakah harus luas organisasi? Kiat / teknik?

billy.bob
sumber
3
Tergantung item apa yang ada dalam daftar? Idealnya, ya Anda harus bisa mengotomatiskannya.
Tidak ada yang
4
en.wikipedia.org/wiki/Build_automation BTW: Ada yang tinggal satu langkah terlalu banyak :)
Mchl
Segala macam - pindahkan file, skrip prosedur tersimpan dll - ada 14 langkah!
billy.bob
2
Dari sudut pandang yang berbeda, apa yang ada dalam daftar yang menurut Anda tidak dapat diotomatisasi?
Tyanna
1
Pertanyaan tentang cara mengotomatiskan build tidak subyektif, dan harus ditanyakan pada Stack Overflow. Pertanyaannya juga harus memiliki informasi lebih lanjut tentang tugas-tugas yang diperlukan, untuk mendapatkan jawaban yang bermanfaat.
David Thornley

Jawaban:

10

Make dapat mengotomatiskan proses pembuatan menjadi satu langkah. Make dapat melakukan hampir semua yang Anda inginkan. Saya tidak yakin mengapa sapporo berpikir bahwa Make hanya berlaku untuk C / C ++. Anda dapat menggunakan make untuk menjalankan semua jenis perintah. Bahkan tidak terikat dengan pemrograman meskipun itu adalah apa yang biasanya digunakan untuk.

Pemda
sumber
2
make adalah salah satu dari alat "swiss army knife"; suka bekerja dengannya. Hal lain untuk menunjukkan di mana make akan berguna adalah bahwa jika Anda mengotomatiskan build / proses / etc Anda, dan satu atau lebih langkah bergantung pada penyelesaian yang lain dengan sukses, make akan berhenti jika langkah itu gagal, tidak mengizinkan langkah-langkah lain untuk melanjutkan dan mungkin menyebabkan masalah.
Will
1
Karena banyak 'aplikasi nix / sistem diinstal dengan' ./configure; membuat; make install 'Saya pikir make juga berfungsi sebagai mesin instalasi. Jika itu bisa dilakukan, saya juga yakin itu bisa menyelesaikan kebingungan OP.
JBRWilkinson
Buat, tetapi sintaksisnya tidak jelas. Sampai saat ini saya telah menemukan 2 alternatif: SCons (jauh lebih mudah daripada Make + makedepend) dan alat untuk mengotomatisasi pembuatan Makefile (berpemilik).
Matthieu M.
@JbRWilkinson ... seperti yang saya katakan make dapat melakukan hampir apapun yang Anda inginkan;)
Pemdas
3

Tergantung pada lingkungan Anda, Anda mungkin ingin melihat Make (C / C ++), Ant / Maven (Java), Gradle (Groovy) - itulah yang saya kenal. Peluangnya tinggi ada solusi populer untuk lingkungan Anda.

sapporo
sumber
Ini merupakan lingkungan ASP.NET / SQL
billy.bob
@ m.edmondson - lalu cruisecontrol.sourceforge.net mungkin cara Anda untuk pergi
bobah
Lingkungan integrasi berkelanjutan yang bagus untuk ASP.NET adalah TeamCity. Saya telah menggunakan oleh CruiseControl dan TeamCity dan saya menemukan TeamCity menjadi sedikit lebih mudah digunakan dan sedikit lebih kuat. Tapi itu mungkin tidak lagi menjadi masalah.
RationalGeek
NANT adalah varian .NET ANT yang telah kami gunakan dengan baik sebagai pelengkap Cruise Control yang saya tidak akan gunakan untuk membangun kode untuk penempatan di mana Anda cenderung ingin beberapa hal tambahan termasuk / tweak / parameter diatur dan diubah dan seterusnya . Itulah keunggulan ANT / NANT.
Jon Hopkins
Saran kedua @Jon Hopkinds - nant sangat cocok untuk lingkungan Anda.
JBRWilkinson
0

Tentu ada cara untuk mengotomatisasi ini. Dengan alat-alat seperti Chef , menyiapkan server baru yang baru diinstal dapat semudah:

knife bootstrap ip.address -N aNameForTheServer -r "role[some functionality]"

Dalam kasus saya beberapa langkah yang dijalankan oleh perintah tunggal itu adalah:

  • Instal pustaka, program, dan modul Python yang diperlukan
  • Buat pengguna baru dengan hak akses yang ditentukan
  • Buat database baru, muat skema yang diperlukan, atur kepemilikan dan hak akses
  • Unduh dan tampilkan kode proyek lalu tulis info konfigurasi
  • Bawa semuanya ke mode produksi dengan meluncurkan server database, mengatur pekerjaan cron, dll.

Saya tidak yakin bagaimana Chef akan tampil di lingkungan Anda karena dukungan Windows terdaftar sebagai "pendahuluan", tetapi untuk sistem berbasis UNIX itu adalah lutut lebah.

Wayang adalah sistem serupa yang sedikit lebih tua dari koki dan dapat menawarkan dukungan Windows yang lebih baik.

Sharpie
sumber
0

Sangat mudah dengan Maven di dunia Jawa

mvn clean deploy

Dalam konfigurasi kami, ini melakukan semua pembangunan yang diperlukan dari file WAR (menarik dependensi JAR sesuai kebutuhan), penyebaran ke server web dev dan pembuatan data uji kalengan pada database dev. Setelah itu selesai, Maven menangani pengujian fungsional komprehensif melalui SeleniumRC untuk memverifikasi aplikasi berfungsi.

Perintah tunggal ini membuat aplikasi sepenuhnya dikerahkan ke cluster server dev sehingga sudah tersedia untuk pengembang lain untuk segera bekerja dengannya (dengan asumsi itu lulus tes). Penyebaran dev gagal karena pengembang telah memverifikasi bahwa ia bekerja secara lokal mvn clean install.

Artefak foto (PERANG) kemudian disalin ke dalam repositori Maven untuk dibagikan dengan pengembang lain (sesuai dengan deployperilaku standar Maven ).

OK, tetapi Anda hanya menggunakan snapshot untuk dev, bagaimana dengan pengujian dan produksi?

Distribusi ke pengujian dan (kemudian) server produksi ditangani melalui proses rilis Maven yang ingin kami tangani secara manual untuk memastikan bahwa seseorang mengawasi setiap keluaran yang mencurigakan. Penguji hanya bekerja dengan artefak yang dirilis, bukan snapshot.

Setelah dirilis maka skrip build sederhana digunakan untuk SFTP file WAR ke cluster server pengujian, lagi dengan seseorang yang menonton proses untuk memastikan tidak ada yang salah.

Akhirnya, setelah semua penguji senang, file WAR yang tidak berubah adalah SFTP hingga cluster server produksi failover, dengan seseorang mengawasi dengan cermat dan posisi rollback langsung jika terjadi bencana.

Gary Rowe
sumber
0

Saya pikir saya bisa memeriksa yang satu dari tes Joel kami jadi ...

Saya membuat server build dengan python otomatis menggunakan pychron .

Kode disinkronkan dengan VSS dari baris perintah, build dengan borland make (sebagian besar IDE akan membuat file make untuk Anda apakah mereka menyebutnya atau tidak. Delphi dulu memompa keluar membuat file dan memanggil mereka. File BPG, sekarang mereka ' ulang file MSBuild XML dan Anda dapat menggunakan MSBuild) dan kesalahan dimasukkan ke dalam file XML yang baru saja saya tambahkan.

Jadi .. Cukup tulis file batch dan lakukan hal-hal ini.

  1. Sinkronisasi Kode dari Kontrol Sumber
  2. Hapus hal-hal bodoh (file konfigurasi individual untuk proyek) yang Anda tahu akan menghentikan Anda untuk bisa membangun semuanya.
  3. Bangun segalanya (saya akan membangun segalanya, jadikan semua saudara).
  4. Catat kesalahan, peringatan, dan hal-hal lainnya, tetapi jangan berhenti membangun. (Jika Anda benar-benar pintar, Anda akan mengekstrak nama orang terakhir yang memeriksa file yang menyebabkan build rusak dan mengirimnya nastygram)
Peter Turner
sumber