Agak mencuri dari jawaban Ian Margett sebagai arsitektur yang umum di antara sebagian besar organisasi pengembangan Microsoft / .NET, model operasi target tingkat tinggi untuk terlihat seperti ini:
Tujuannya adalah untuk membuat pipa Penerapan Berkelanjutan, menggunakan perangkat lunak yang sudah ada, yaitu TeamCity , ProGet , SonarQube dan Octopus Deploy :
- GitHub adalah alat manajemen kode sumber, namun, itu bisa BitBucket atau Layanan Visual Studio Team. Model percabangan dan proses tinjauan kode berada di luar jangkauan pada tingkat tinggi ini.
- TeamCity dipilih sebagai Build System karena integrasinya yang erat dengan Octopus Deploy dan dukungan menyeluruh yang baik untuk .NET, msbuild, dan PowerShell. TeamCity juga digunakan sebagai orkestra penyebaran di Octopus Deploy.
- ProGet adalah solusi manajemen paket yang menyimpan Paket Octopus dan proksi paket publik / repositori gambar. Alasan untuk tidak menggunakan toko TeamCity NuGet bawaan adalah murni untuk alasan skalabilitas.
- SonarQube menyediakan manajemen kualitas kode berkelanjutan dan laporan diterbitkan sebagai bagian dari output build TeamCity.
- Octopus Deploy digunakan sebagai alat penyebaran untuk infrastruktur dan kode ke platform target.
Saya telah melihat pendekatan luas ini diterapkan di dua perusahaan dan berhasil menerapkannya di dua perusahaan tambahan - dalam kasus terbaru kami menukar TeamCity untuk AppVeyor yang bekerja, meskipun sedikit menyakitkan ketika membuat aturan firewall.