Eserleri Jenkins'te arşivleyin


132

Biri bana yapım sürecindeki eserler fikrini açıklayabilir mi?

Karınca komut dosyalarımı derlemek ve çalıştırmak için kodu kontrol ettiğim çalışma alanı dizinine sahibim. Sonunda, benim durumumda, kuruluma hazır bir jar dosyası alıyorum. Bu eser olarak kabul ediliyor mu?

Derleme komut dosyama jar dosyasını koymasını nereye söylemeliyim? Çalışma alanı dizininde mi? Jar dosyam BUILD_ID, ve benzeri değişkenlere bağlı olarak benzersiz bir dosya adı alıyor , Jenkins'e hangi jar dosyasını seçmesi gerektiğini nasıl söyleyebilirim?

DÜZENLEME: Tamam, bunun gibi bir şey yapmayı denedim:

görüntü açıklamasını buraya girin

Yol, çalışma alanımda henüz mevcut değil, çünkü derleme komut dosyasının onu yaratması gerekiyor ve tabii ki, .jarve .propertiesdosyaları henüz oluşturulmadıkları için orada değiller. Neden bana bir hata veriyor o zaman? Görünüşe göre bir şey eksik.

Ayrıca, Jenkins her derlemeden sonra yapıları siliyor mu (arşivlenen yapıları değil, bunları silmesini söyleyebileceğimi biliyorum)? Aksi takdirde, sabit sürücüyü oldukça hızlı bir şekilde tıkar.


12
Aldığınız hata büyük olasılıkla bir sorun değildir - derleme süreci başarılı olursa, oluşturulmalıdır. Kaydedin ve bunu deneyin, boru hattını kurarken birkaç bozuk yapıya sahip olmak tamamen normaldir. :)
Anders Lindahl

3
Uyarıdan korkmayın, derlemeden sonra bir yapı oluşursa, yapılandırmanız tarafından arşivlenecektir (yapılandırma sayfasında bir uyarı olmasına rağmen).
Huang F. Lei

Yanıtlar:


68

Anlayışınız doğrudur, Jenkins anlamında bir yapay yapı, bir yapının sonucudur - inşa sürecinin amaçlanan çıktısıdır.

Yaygın bir kural, derlemenin sonucunu build, targetveya bindizine koymaktır .

Jenkins arşivleyicisi, target/*.jarderleme başına benzersiz bir adınız olsa bile doğru dosyayı kolayca almak için globs ( ) kullanabilir .


@Andres teşekkürler, ayrıca, jenkins her derlemeden sonra eserleri siliyor mu (arşivlenen eserleri değil, onları silip silemeyeceğimi biliyorum)? yoksa myslef yapmaktan sorumlu muyum?
Michael

6
@michael: Çalışma alanını kendiniz temizlemelisiniz, daha önceki bir yapının sonuçlarıyla sonuçlanmadığınızdan emin olmak için her derlemeden önce en azından hedef dizini temizlemek iyi bir uygulamadır.
Anders Lindahl

@Michael 'Temiz' bir yapı adımı ekleyebilirsiniz. Örneğin Maven ile -sh 'mvn clean package'
Snowcrash

@AndersLindahl - "genel kural, derlemenin sonucunu bir yapı, hedef veya bin dizinine koymaktır." Tüm projeler tarafından paylaşılan bir bin dizininden mi bahsediyorsunuz? Bunu nasıl yaparım? Bu bir inşa sonrası eylem mi?
user3240688

@ user3240688 Hayır, proje başına hedef klasörlerden bahsediyorum. Birden fazla işten yapıları tek bir paylaşılan klasörde istiyorsanız, yapıları örneğin "$ PROTOCOL üzerinden yayınla" eklentilerinden birini kullanarak yayınlamanız gerekir.
Anders Lindahl

11

Bir yapı, oluşturma sürecinizin herhangi bir sonucu olabilir. Önemli olan, hangi istemcide oluşturulduğunun önemli olmamasıdır, çalışma alanından ana bilgisayara (sunucuya) aktarılacak ve orada yapıya bir bağlantıyla depolanacaktır. Avantajı, bu şekilde sürümlendirilmiş olmasıdır, yalnızca ana makinenizde yedeklemeyi kurmanız gerekir ve tüm yapı istemcileri çevrimdışı olsa bile tüm yapıların web arayüzü üzerinden erişilebilir olmasıdır.

Artefakt adı olarak normal bir ifade tanımlamak mümkündür. Benim durumumda, saklamak istediğim tüm dosyaları, oluşturma sırasında sabit bir adla tek bir dosyada sıkıştırdım.


3
"Artefakt adı olarak normal bir ifade tanımlamak mümkündür. Benim durumumda tüm dosyaları sıkıştırdım" Bunu açıklar mısınız? tam olarak istediğim gibi geliyor?
Chris Milburn

7

Ayrıca, Jenkins her derlemeden sonra yapıları siliyor mu? (arşivlenmiş eserler değil, ona bunları silmesini söyleyebileceğimi biliyorum)

Hayır, Hudson / Jenkins, bir derlemeden sonra çalışma alanını kendi başına temizlemez. Oluşturma işleminizde, yapı yapıtlarını bıraktığınız yerden silen, üzerine yazan veya taşıyan eylemleriniz olabilir. İş yapılandırmasında, Gelişmiş Proje Seçeneklerinde (genişletilmesi gerekir), yeni bir yapının başlangıcında çalışma alanını silecek "Oluşturmadan önce çalışma alanını temizle" adı verilen bir seçenek vardır.


1

Jenkins 2.60.3'te, derleme makinesinde sabit disk alanından tasarruf etmek için derleme yapıtlarını (arşivlenmiş yapıları değil) silmenin bir yolu vardır. Genel bölümünde, "Günlük Döndürme" stratejisiyle "Eski yapıları sil" seçeneğini işaretleyin ve ardından Gelişmiş seçeneklerine gidin. Gün veya derleme sayısına bağlı olarak iş için yapıları oluşturmaya ilişkin iki seçenek daha görünecektir.

Benim için işe yarayan ayarlar, "Artefaktlarla uyumlu maksimum yapı sayısı" için 1 girmek ve ardından yapıları arşivlemek için bir inşa sonrası eylemi yapmaktır. Bu şekilde, tüm yapılardan tüm yapılar arşivlenecek, yapılardan gelen tüm bilgiler kaydedilecek, ancak yalnızca son yapı kendi yapılarını koruyacaktır.

Eski yapı seçeneklerini atın

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.