Team City snapshot bog'liqliklaridan foydalanganda oniy tasvirning post-qurilgan fayllarini yoki shunchaki SVN versiya raqamini ishlatasizmi?

Bitta loyihada 2 tuzilma konfiguratsiyasi mavjud:

  • 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?

Mening chalkashlikim asosan kodni tarqatish uchun VCS-ga ega bo'lishingiz kerak. Buning sababi, reviziya raqamlarini oniy suratga qaramlikni solishtirish kerakmi?

7

2 javoblar

Doco-ga bog'liq qaramoqning bo'limida:

Konstruktsiyani tuzish uchun A tuzilishidan olingan suratga qaramlik   B konfiguratsiyasi A ning har bir tuzilishini "mos" qurishga ega bo'lishini talab qiladi   har ikkala qurilma ham bir xil manbalardagi rasmni ishlatadi (ishlatilgan manbalar   versiyalar bir xil daqiqaga to'g'ri keladi).

Shunday qilib, oniy tasvirga qaramlik haqidagi g'oya shundaki, siz unga qarshi muvaffaqiyatli ishlaydigan boshqa bir qurilma sifatida aynan bir xil codebase ga qarshi tuzishni ishga tushirishingiz mumkin.

"O'rnatish kodi" ni faqat "qurish va sinov kodi" muvaffaqiyatli ishga tushirilgandan so'ng ishga tushirishni xohlasangiz, ikkinchi qurishda oniy tasvirga bog'liqlik yaratish va "Faqatgina mos keladiganlardan muvaffaqiyatli tuzilmalarni ishlatish" ga o'rnatilgan ishonch hosil qiling.

Esingizda bo'lsin, bu san'at asarlariga hech qanday aloqasi yo'q; ikkinchi qurilma shunchaki bir xil kod sathini tortadi va qayta-qayta kompilyatsiya qiladi. Birinchi qurilishda yaratilgan ashaddlarni joylashtirishni istasangiz, buning o'rniga artefact dependencies ga qarashni xohlaysiz. Bu Pavlus o'zining javobida yozilgan va to'g'ri yondashuv bo'lgan.

Sizning yangilanishlaringiz bilan bog'liq holda, qurilgan keyingi fayllar faqatgina birinchi qurilganidan keyin qurish razvedkasida bo'lganligidan foydalanish mumkin. Birinchi qurishni ishga tushiring, keyin agentda "tozalash manbalari" ni ishga tushiring va ikkinchi qurishni boshqaring. Original kompilyatsiya chiqqandan keyin u erda topilmaydi va u muvaffaqiyatsiz bo'ladi. Bu juda muhim, chunki agar sizda bir nechta qurilish agentlari bo'lsa yoki ikkita qurilma o'rtasida biroz vaqt o'tishi mumkin bo'lsa, unda eskirgan narsalar sifatida saqlanmagan yo'q chiqmasligiga tayanolmaysiz.

Va ha, TeamCity hujjatlari shubhali :)

7
qo'shib qo'ydi
O'ylaymanki, sizning maqola ketma-ketligingizdan so'ng "tuzish va sinov kodi" konfiguratsiyasi bo'yicha "tarqatadigan kod" konfiguratsiyasida Build Trigger bor. Shu sababli, bu muvaffaqiyatli qurilish orqali amalga oshiriladi. Menimcha, post-build fayllari hali ham mavjud, chunki bizda faqat bitta quruvchi agent ishlaydi, va "kodni o'rnatish" juda qisqa vaqt ichida, agar "qurish va sinov kodini ishlatish" dan so'ng, juda tez ishlashi kerak. O'ylaymanki, men artefaktlarni saqlab qolishni xohlayman, chunki bu yaxshi amaldir.
qo'shib qo'ydi muallif JustinP8, manba
Paketlar uchun mos keladimi? Menda juda ko'p paketlar bor. Loyihalarimning aksariyati ularni ishlatadi. Faqatgina barcha paketlarni to'playdigan va barcha boshqa tuzilmalar uchun Snapshot Dependency sifatida ishlatadigan Tuzilishi mumkin mumkinmi?
qo'shib qo'ydi muallif dariol, manba

TeamCity-da juda o'xshash tizimga ega emasman, bundan tashqari MSBuild-ni NAnt dan foydalanmayman, lekin men bir xil 2-qadamni qurish jarayonini ishlataman va uni qanday tuzilganligimni tushuntirsam, keyin umid qilamanki nima qilish kerakligini tushunishga imkon beradi.

Shunday qilib, mening o'rnatishda Build 1 kodni manba tekshiruvidan chiqaradi, uni kompilyatsiya qiladi va birlik testlarini boshqaradi. So'ngra, tarqatish uchun zarur bo'lgan barcha fayllarni asarlar sifatida nashr etadi.

2-chi qurilma 1-rasmda va suratkashlikning asliyatiga ega, bu esa 1-sonli artifakka bog'liqlikdir va bu hech qanday kodni tortib olmagan degan ma'noni anglatadi, faqatgina Build 1-dan olingan asarlarni oladi va ularni tarqatadi.

Amalda buning ma'nosi shuki, men 2-qurilishni va ikkita narsadan birini amalga oshiraman. Agar 1-bino zamonaviy bo'lsa, u faqat 1-qurilishning so'nggi muvaffaqiyatli qurilishidan foydalanadi. Ammo Build 1 yangilanmagan bo'lsa, u holda TeamCity Build 1 ni avtomatik ravishda ishga tushiradi va keyin 2-qurilishni to'g'ridan-to'g'ri ishlatib, undan keyingi asarlar yordamida qurmoq.

6
qo'shib qo'ydi
Avval bunday tartibni ko'rganman, lekin shunga qaramasdan, artefaktning asossiz bo'lishi kerak deb o'ylamayman. Menda hozirda ishlaydigan kontseptsiya mavjud, u NAnt nusxasi skriptini qurish/sinov konfiguratsiyasiga bog'liqlik bilan boshqaradi. Xozirgi kunga qadar yaxshi ishlayotgan ko'rinadi, faqat qurilma tomonidan ishlab chiqarilgan .dll fayllarini o'z ichiga olmaydi. O'ylaymanki, nima uchun VCS konfiguratsiyasi qurilishga kerak bo'lsa, nima uchun hech narsa nazorat qilmagan bo'lsa, shunchaki asta-sekinlikdagi fayllarni qaramlikdan foydalangan holda aralashtiraman. Tahminimcha, bu faqat revizion raqamlarini solishtirish uchun.
qo'shib qo'ydi muallif JustinP8, manba