Team City anlık görüntü bağımlılıklarını kullanırken, anlık görüntü dosyasının oluşturulma dosyalarını mı yoksa sadece SVN düzeltme numarasını mı kullanıyorsunuz?

Bir projede 2 yapı yapılandırmam var:

  • Build & Test Code
  • Deploy Code

I want Deploy Code to run only if Build & Test Code built successfully, so I set up a snapshot dependency.

Does a snapshot dependency mean that Deploy Code will check out the same SVN revision as Build & Test Code and then run the NAnt script against that checkout, which will not contain the compiler generated post-build files? Or, will a snapshot dependency on Build & Test Code from Deploy Code mean that the NAnt will run against the post-build, working directory files of Build & Test Code on the build agent?

UPDATE:

It seems if I put a snapshot dependency on Build & Test Code for Deploy Code and I have a build of the latest revision for Build & Test Code, my NAnt script will deploy the post-build files for that build of Build & Test Code.

I would still like to confirm that I understand the concept, as I don't really understand the Team City documentation. I think I should probably make sure Deploy Code runs on the same build agent as Build & Test Code, otherwise I might run into a case where Deploy Code checks out the SVN revision and then just deploys the pre-build code files. Is this correct?

Benim karışıklığım temel olarak, Kod Dağıtımı için bir VCS kurulumuna sahip olmanız gerektiği için. Bu, revizyon sayılarını anlık görüntü bağımlılığına göre karşılaştırması gerektiğinden mi?

7

2 cevap

Bağımlı Yapılar doco sayfasının Anlık Görüntü Bağımlılığı bölümünden :

Yapılandırma A'dan anlık görüntü bağımlılığı oluşturmak için   B yapılandırması, her A yapısının "uygun" yapıya sahip olduğunu zorlar   B'nin her ikisi de aynı kaynakların anlık görüntüsünü kullanır (kullanılan kaynaklar   revizyonlar aynı ana karşılık gelir.

Dolayısıyla, anlık görüntü bağımlılığı fikri, tam olarak aynı kod tabanına karşı bir yapıyı çalıştırabilmenizdir.

"Uygulama kodu" oluşturulduktan sonra "kod dağıtma" derlemesinin çalıştırılmasını istiyorsanız, ikinci yapıda bir anlık görüntü bağımlılığı oluşturun ve "Yalnızca uygun yapılardan başarılı yapılandırmalar kullanın" olarak ayarlandığından emin olun.

Bunun eserlerle ilgisi olmadığını unutmayın; İkinci yapı, aynı kod tabanını basitçe çekecek ve tekrar yeniden derleyecektir. İlk derlemeden oluşturulan eserleri dağıtmak isterseniz, bunun yerine artefakt bağımlılıkları 'na bakmak istersiniz. Bu, Paul'un cevabında yazdığı ve doğru yaklaşım olduğu şeydir.

Güncellemenizle ilgili olarak, bu post-build dosyaları sadece ilk derlemeden sonra hala yapım aracında oldukları için kullanılabilir. İlk yapıyı çalıştırmayı ve ardından aracıdaki "kaynakları temizleme" yi çalıştırmayı ve ikinci yapıyı çalıştırmayı deneyin. Orijinal derleme çıktısının artık orada olmadığını ve başarısız olacağını görürsünüz. Bu önemlidir çünkü eğer birden fazla oluşturma aracınız varsa veya iki yapı arasında biraz zaman ayırırsanız, çıkarılan nesneler olarak değil çıkışına güvenemezsiniz.

Ve evet, TeamCity belgeleri kafa karıştırıcı :)

7
katma
Makale dizininizi izleyerek "derleme ve test kodu" yapılandırmasında "dağıtım kodu" yapılandırmasında bir Yapılandırma Tetikleyicim olduğunu belirtmeliydim. Bu nedenle, başarılı bir yapı tarafından tetiklenir. Benim durumumda, post-build dosyalarının hala var olması, çünkü sadece bir derleme çalışanımızın var olması ve "kod dağıtımı" nın "test kodunun oluşturulması ve çalıştırılması" nın hemen ardından hemen gerçekleşmesi gerekir. Sanırım, daha iyi bir uygulama gibi göründüğü gibi, eserlerinizi kaydetmekten vazgeçiyorum.
katma yazar JustinP8, kaynak
Paketler için uygun mu? Çok fazla paketim var. Projelerimin çoğu onları kullanıyor. Tüm paketleri toplayan ve diğer tüm yapılar için Anlık Bağımlılık olarak kullanan Build'i oluşturabilir miyim?
katma yazar dariol, kaynak

TeamCity'de, NAnt değil MSBuild kullandığım için çok benzer bir kurulumum var ama aynı 2 adımlı oluşturma işlemini kullanıyorum ve nasıl yapılandırdığımı açıklarsam, umarım ne yapmanız gerektiğini anlamanızı sağlar.

Benim kurulumumda, Build 1 kodu kaynak kontrolünden çeker, derler ve ünite testlerini çalıştırır. Ardından, dağıtım için gerekli tüm dosyaları yapay eserler olarak yayınlar.

Build 2, Build 1'de enstantane bağımlılığı olan ve anlık görüntüsüne sahiptir ve bu, kodun alınmadığı anlamına gelir, yalnızca Build 1'den gelen eserleri alır ve bunları dağıtır.

Pratikte bu, Build 2'yi ve iki şeyden birisini tetikleyebileceğim anlamına geliyor. Eğer Build 1 güncelse, o zaman Build 1'in son başarılı yapısından eserleri dağıtır. Ancak Build 1 güncel değilse, TeamCity otomatik olarak Build 1'i başlatır ve sonra Build 2'yi daha sonra buradaki eserler kullanarak çalıştırır. inşa etmek.

6
katma
Bu tür bir kurulumu daha önce görmüştüm ama yapay bağımlılığın gerekli olduğunu düşünmüyorum. Şu anda çalışmakta olan bir kavram kanıtı var, bu da build/test konfigürasyonuna bağlı bir NAnt copy betiğini çalıştırıyor. Şimdiye kadar iyi çalışıyor gibi görünüyor, yapı tarafından oluşturulan .dlls içermeyeceği herhangi bir durumda olup olmadığından emin değilim. Sanırım bir şeyleri kontrol etmemek için bir VCS konfigürasyonuna neden ihtiyaç duyulduğunu sanıyorum, sadece bağımlılıktan sonra post-build dosyaları kullanıyorum. Sanırım sadece revizyon sayılarını karşılaştırmak için.
katma yazar JustinP8, kaynak