Bisakah seseorang tolong jelaskan kepada saya ide artefak dalam proses pembangunan?
Saya memiliki direktori ruang kerja tempat saya memeriksa kode untuk mengkompilasi dan menjalankan skrip semut saya, dll. Pada akhirnya, dalam kasus saya, saya mendapatkan file jar yang siap dipasang. Apakah itu dianggap sebagai artefak?
Di mana saya harus memberi tahu skrip build saya untuk meletakkan file jar? Di direktori ruang kerja? File jar saya mendapatkan nama file yang unik tergantung pada variabel suka BUILD_ID
dan sejenisnya , bagaimana saya bisa memberi tahu Jenkins file jar yang akan dipilih?
EDIT: Oke, jadi saya mencoba melakukan sesuatu seperti ini:
Path belum ada di ruang kerja saya, karena skrip build seharusnya membuatnya, dan tentu saja, .jar
dan .properties
file belum ada karena belum dibuat. Mengapa itu memberi saya kesalahan? Sepertinya saya kehilangan sesuatu.
Juga, apakah Jenkins menghapus artefak setelah masing-masing membangun (bukan artefak yang diarsipkan, saya tahu saya bisa mengatakannya untuk menghapus artefak)? Kalau tidak, itu akan menyumbat hard drive dengan cukup cepat.
Jawaban:
Pemahaman Anda benar, artefak dalam arti Jenkins adalah hasil dari build - output yang diinginkan dari proses build.
Sebuah konvensi umum adalah untuk meletakkan hasil build ke dalam
build
,target
ataubin
direktori .Pengarsip Jenkins dapat menggunakan gumpalan (
target/*.jar
) untuk dengan mudah mengambil file yang tepat bahkan jika Anda memiliki nama unik per build.sumber
sh 'mvn clean package'
Artefak dapat merupakan hasil dari proses pembuatan Anda. Yang penting adalah bahwa tidak masalah pada klien yang dibangun itu akan dialihkan dari ruang kerja kembali ke master (server) dan disimpan di sana dengan tautan ke build. Keuntungannya adalah versi ini dibuat dengan cara ini, Anda hanya perlu mengatur cadangan pada master Anda dan bahwa semua artefak dapat diakses melalui antarmuka web, bahkan jika semua klien yang membangun sedang offline.
Dimungkinkan untuk mendefinisikan ekspresi reguler sebagai nama artefak. Dalam kasus saya, saya membuka zip semua file yang ingin saya simpan dalam satu file dengan nama konstan selama pembuatan.
sumber
Tidak, Hudson / Jenkins tidak dengan sendirinya membersihkan ruang kerja setelah membangun. Anda mungkin memiliki tindakan dalam proses pembuatan yang menghapus, menimpa, atau memindahkan artefak pembuatan dari tempat Anda meninggalkannya. Ada opsi dalam konfigurasi pekerjaan, dalam Opsi Proyek Tingkat Lanjut (yang harus diperluas), yang disebut "Bersihkan ruang kerja sebelum membangun" yang akan menghapus ruang kerja di awal bangunan baru.
sumber
Di Jenkins 2.60.3 ada cara untuk menghapus artefak build (bukan artefak yang diarsipkan) untuk menghemat ruang hard drive pada mesin build. Di bagian Umum, centang "Buang bangunan lama" dengan strategi "Log Rotation" dan kemudian masuk ke opsi Advanced-nya. Dua opsi lagi akan muncul terkait dengan menjaga artefak untuk pekerjaan berdasarkan jumlah hari atau pembuatan.
Pengaturan yang berfungsi untuk saya adalah memasukkan 1 untuk "Jumlah bangunan maksimum agar tetap dengan artefak" dan kemudian memiliki tindakan pasca-pembangunan untuk mengarsipkan artefak. Dengan cara ini, semua artefak dari semua bangunan akan diarsipkan, semua informasi dari bangunan akan disimpan, tetapi hanya bangunan terakhir yang akan menyimpan artefaknya sendiri.
Buang opsi bangunan lama
sumber