 Okey, jadi sekali lagi, selamat pagi semua. Terima kasih kerana berada di sini. Jadi kita akan mulai dengan, kita sudah akan mulai. Jadi kamu semua ada pizza. Semoga itu akan membuat kamu gembira selama sekejap. Okey, jadi today's topic adalah tentang devops. Dan sebenarnya apa yang kita akan lakukan adalah, saya akan menunjukkan kepada kamu, bagaimana untuk mencubainya sebuah devops pipeline dan kemudian dari begini, dari scratch, sepanjang jalan ke sebuah model CICD. Tapi sebelum kita lakukan itu, sebelum saya sebenarnya menunjukkan bagaimana untuk mencubainya dari scratch, kita hanya akan mencubainya beberapa perjalanan, hanya untuk menunjukkan konteks. Dan kita juga akan menunjukkan kepada kamu, telah membuat devops projek yang telah digunakan, dan telah mencubainya. Jadi ini untuk menjelaskan kepada kamu, bagaimana perjalanan sepanjang jalan sebelum saya menunjukkan, bagaimana ia telah dibuat dari scratch. Okey, jadi ini adalah perjalanan yang dibuat oleh Puppet Labs, sesetengah masa, saya rasa 2-3 bulan lalu. Ia bercakap tentang bagaimana perjalanan tinggi yang tinggi, sebaiklah dengan perjalanan yang rendah. Mereka dapat menunjukkan, 200 kali lebih banyak, dan apabila mereka melakukannya, mereka melakukannya lebih cepat. Ada terma di sini yang disebut Lead Time, sebaiklah dari masa yang anda melihat kode anda, ke masa yang menunjukkan di perjalanan produksi anda, atau ke masa di mana pelanggan dan pelanggan anda dapat menggunakan. Jadi, nombor-nombor ini, saya tahu, sangat menakjubkan. Ia adalah sebuah sengaja scenario di sini, 2,500 kali lebih cepat. Jadi, jika perjalanan tinggi tinggi tinggi 1 jam untuk membuat perjalanan, jika Lead Time adalah 1 jam, perjalanan tinggi tinggi yang rendah akan mengambil selama 3 bulan. Ia hanya sebuah kesilapan di sana. Jika anda boleh berjumpa di perjalanan anda sendiri, di perjalanan anda sendiri, bagaimana jika anda mengambil kode untuk mendapat dari perjalanan ke produksi anda? 2 minggu. Ada sesiapa lebih lama daripada 2 minggu? Tidak, juga 2 minggu lagi. Jadi, beberapa hari lagi, 1 minggu lagi, ada beberapa perjalanan di antara daripada perjalanan ke produksi anda. Jadi, ia berbeda daripada perjalanan-perjalanan ke perjalanan dari perjalanan ke perjalanan. Jadi, ini adalah apa? Jadi, jika kita bercakap tentang solusi Microsoft DevOps, kita tidak boleh menyebabkan ini cukup. Ada aplikasi, aplikasi, aplikasi, aplikasi. Bukan hanya dot-net saja. Banyak yang banyak orang fikirkan. Jadi, ia membantu seluruh rancangan aplikasi dengan seluruh varitaya bahan-bahan. Ia membantu seluruh banyak perkara yang berbeza. Banyak orang menggunakan terutama TFS. Jadi, ada 2 varian. Ia adalah TFS dan TFS. Sebenarnya, salah satu di klub. Ada sesiapa yang menggunakan TFS di sini? Ya, beberapa. TFS? Ya. Biasalah. Pertama-tama, TFS adalah sebuah perempuan yang lebih kecil dari TFS. Sebenarnya, TFS mengubah setiap tiga minggu. TFS adalah setiap tiga minggu. Baiklah. Jadi, anda mungkin mengetahui yang ini adalah sebuah periuk yang diperlukan di antara periuk sebuah periuk TFS dan TFS. Saya akan menyebabkan ini. Ini adalah apa yang saya akan membuat anda. Saya akan menunjukkan ini dan kemudian saya akan menunjukkan bagaimana ia telah dibuat dari scratch. Jadi, pertama, kita lihat pelanggan bisnes. Anda akan mencari sebuah organisasi. Pada beberapa organisasi, kita mempunyai sebuah pelajar, seperti helikopter atau sistem berjalan-jalan. Di mana mereka dapat masuk, mereka dapat menerima panggilan, mereka dapat menerima panggilan perubahan, atau mereka dapat menerima panggilan, jadi anda mempunyai perkara seperti itu. Kemudian, kita mempunyai sistem itu, memperkenalkan dengan pembinaan. Di mana ia datang ke belakang. Di mana pembinaan dewa akan mempunyai. Ia akan memulakan pembinaan perubahan, melihat pembinaan dan memperkenalkan pembinaan. Di dalam pembinaan, ada beberapa perkara yang kita dapat melakukan. Biasanya, anda dapat melakukan perkara seperti pembinaan unit, anda dapat melihat pembinaan pembinaan, anda dapat melakukan beberapa pembinaan teknikal. Saya rasa ini adalah beberapa perkara yang anda dapat melakukan semasa pembinaan anda dilakukan, atau sebahagian dari pembinaan pembinaan. Selepas ia dilakukan, perubahan itu. Jadi, bagaimanapun, jika ia adalah pembinaan web, perubahan itu adalah pembinaan web. Di aplikasi desktop, di platform Windows, anda dapat ESE. Jadi, anda dapat beberapa pembinaan. Anda membuatnya menjadi apa yang kita nampak sebuah pembinaan artefek. Jadi, pembinaan artefek adalah sesuatu yang menghasilkan semua pembinaan yang berbeza, semua pembinaan. Jadi, anda dapat memilih untuk kembali dan melakukan pembinaan pembinaan pada pembinaan yang sebelumnya, jika anda inginkan. Kemudian, ia adalah tempat anda melakukan pembinaan, seperti ini, untuk perubahan yang berbeza. Selepas itu, apabila anda mempunyai aplikasi di produksi, ia adalah tempat anda melakukan pembinaan. Pembinaan berkata-kata menjadi sebahagian besar dari sebuah pembinaan perubahan. Pembinaan pembinaan adalah apa yang berkata-kata sebuah pembinaan untuk dapat berkata-kata, okey, pembinaan ini adalah menggunakan cara yang saya mempunyai. Pembinaan tidak menggunakan. Ia menggunakan pembinaan. Bersiap dengan informasi yang anda dapat dari data di produksi. Baiklah, mari kita lihat pembinaan. Okey, kita akan mulakan dengan ini. Baiklah, ini adalah sistem pembinaan saya. Saya menggunakan, seperti ini, Zendesk. Dan saya mempunyai seseorang yang telah membuat pembinaan. Jadi, ini adalah pembinaan yang telah membuat pembinaan dengan pembinaan yang particular ini di bawah. Baiklah, ini telah membuat pembinaan. Dan ada pembinaan dari Zendesk ke VSTS. Jadi, apa yang boleh saya lakukan sekarang, saya akan mengubah pembinaan untuk menjadi seseorang pembinaan yang telah membuat pembinaan seperti itu. Jadi, saya melihat sistem ini. Saya melihat ini adalah pembinaan yang telah membuat pembinaan. Dan ini nampak sesuatu yang sebabnya saya akan mahu pembinaan saya membuat pembinaan. Jadi, saya akan kata, okey, saya akan kata, saya akan menghubungi ini, pembinaan baru. Saya akan menghubungi projek yang betul. Ini adalah tanda. Dan saya akan menghubungi pembinaan. Jadi, ini adalah pembinaan yang telah membuat pembinaan. Dan saya akan kata, okey, membuat pembinaan. Jadi, jika saya bergerak di sini, saya akan menghubungi projek ini. Saya akan melihat, jadi saya telah membuat pembinaan di sini. Anda dapat melihat dari Zendesk, saya telah membuat pembinaan yang sebabnya saya sebabnya saya telah membuat pembinaan. Jadi, sebagai pembinaan yang telah saya memlogos ke pembinaan yang telah dapat melihat pembinaan baru yang telah disilis. Jadi, di sini saya dapat melihat ada pembinaan baru yang telah disilis dari Zendesk. Saya dapat melihat data historikal supaya saya dapat melihat di atas bawah sini saya telah mendapat 4 projek. Eltah, salah satu pembinaan baru itu. Jadi, saya dapat mencari pada ini. Dan ia akan menunjukkan saya projek yang telah sudah kita buat. Okey, jadi ini adalah apa yang telah di-request oleh pengguna-pengguna. Tengahnya di sini dan saya boleh memilih untuk kemudian, anda tahu, menyebabkan kepada seseorang untuk bekerja. Baiklah, jadi ini adalah pilihan itu. Saya boleh memilih untuk... telah anda melihat belakang Team Services? Adakah anda familiar dengan itu? Ya. Ya? Jadi ini adalah pilihan belakang yang anda boleh memilih untuk mengandungkan prosesnya. Seperti yang anda suka. Biar saya memulai Visual Studio. Okey, jadi sekarang saya sudah mempunyai tanda-tanda untuk pengguna-pengguna. Saya akan memutuskan tanda-tanda lagi. Jadi sekarang saya menyebabkan pengguna-pengguna. Jadi pengguna-pengguna tinggal di Visual Studio. Mereka tidak pergi ke mana-mana lagi. Di beberapa kes, mereka tidak menyebabkan kemudian menjadi Team Services. Jadi saya memulai Visual Studio. Dan apa yang saya akan lakukan adalah saya akan membuat beberapa perubahan. Seperti jika saya sebenarnya bekerja di tanda-tanda yang telah diberikan kepada saya. Jadi tanda-tanda dalam pertanyaan nampak seperti ini. Jadi tanda-tanda. Baiklah, ini adalah pilihan yang telah diberikan. Tanda-tanda di sini adalah QA. Okey, ini adalah QA. Jadi apa yang saya akan lakukan adalah saya akan mengubah... apa yang saya suka mengubah... saya akan mengubah ini di sini. Ini adalah Hello DevOps. Saya akan mengubahnya ke sesuatu yang lain. Jadi saya akan mencari file itu. Okey, mari saya mengubah ini ke Hello World. Okey, jadi saya mengubah ini. Saya akan mengubah ini. Kami mengubah ini ke Tax. Dan saya akan mengubah ini ke kawasan saya. Kawasan saya. Saya akan mengubah ini sebagai kawasan GIT. Jadi Team Services mengubah GIT. Jadi datang ke sini, kembali ke Team Services. Jika saya mengubah ke kawasan, anda akan melihat bahawa ia sekarang dalam perjalanan. Baiklah, jadi saya telah mengubah... apa yang kita nampak C-I-Build. Selepas kawasan ini telah mengubah proses ini. Jadi kita boleh lihat dan melihat apa yang berlaku. Jadi mari kita klik di sini dan melihat apa yang berlaku. Dan anda lihat bahawa saya di tempat-tempat di tengah-tengah, tiga perjalanan terlebih dah selesai. Dan ia hanya mengambil perjalanan yang berlaku. Saya telah mengubah kawasan saya untuk mengubah. Jadi jika saya klik di sini. Jadi mari kita melihat perjalanan yang saya mengubah. Jadi ini adalah perjalanan yang berlaku. Jadi untuk orang-orang anda yang tidak pencari, ini tidak akan mencari. Saya mengubah perjalanan saya. Dan kemudian saya membuat kode sos saya untuk mengubah oleh SonarCube. Ada sesiapa yang mengubah SonarCube di sini? Tak? Jadi untuk orang-orang yang tidak mencari yang SonarCube adalah. SonarCube mengubah kode stetik pada kode kode saya. Dan di tengah-tengah, ia akan beritahu saya apakah ada venerabilitas, jika ada pembunyi, jika ada pembunyi, yang saya patut mengikuti pada kode kode yang saya memutuskan. SonarCube adalah pembunyi ketiga. Tak berkongsi dengan pembunyi kode, tetapi kita mempunyai pembunyi dengan SonarCube. Orang-orang yang mengubah? Orang-orang yang mengubah. Jadi kemudian saya membuat pembunyi saya. Saya mengubah pembunyi unit saya. Dan kemudian saya mengubah beberapa pembunyi kode. Dan di tengah-tengah, saya mengubah pembunyi pembunyi saya. Di tengah-tengah, saya mengambil pembunyi pembunyi kode kerana ini pembunyi pembunyi kode. Dan saya mengubah pembunyi kode ke dalam pembunyi kode. Jadi mari kita kembali dan lihat jika pembunyi kita sudah selesai. Saya rasa ia sudah selesai. Jadi kita dapat lihat di sini, ia sudah selesai. Jadi ini sudah selesai 71 saat yang lalu. Ini adalah pembunyi yang hanya mengubah. Dan kita dapat lihat bahawa pembunyi pembunyi pembunyi berikan kita sedikit detik. Ia beritahu kita berapa banyak pembunyi kode. Tiada apa-apa pun. Ia berikan kita pembunyi pembunyi kode. Jadi ini sangat membantu. Ada beberapa pembunyi yang mempercayai beberapa persentangan pembunyi kode. Jadi seperti contohnya 50%. Jadi jika ia mempercayai di bawah itu, pembunyi pembunyi pembunyi akan mempercayai. Jadi ia baik untuk beberapa pembunyi pembunyi yang tidak mempercayai pembunyi kode, tidak mempercayai pembunyi pembunyi pembunyi kode. Dan anda akan melihat bahawa di bawah sini, ia sudah telah mempercayai untuk mempercayai ke environment saya. Okey? Jadi ini sudah di dalam cara. Jadi mari kita bergerak dan mencari perlihatan kita. Okey. Jadi menarik dari pembunyi ini, anda mungkin boleh mempercayai beberapa pembunyi. Baiklah. Pertama, anda melihat bahawa mereka ada 4 pembunyi. Jadi itu menjadikan bahawa mereka ada 4 pembunyi, yang adalah keadaan. Saya mempunyai def, saya mempunyai QA, saya mempunyai UAT dan produksi. Okey? Anda akan melihat beberapa mereka, beberapa pembunyi saya, pembunyi yang berjumpa di bawah, mereka adalah keadaan pembunyi. Dan anda melihat beberapa mereka berjumpa di Orang. Jadi itu bermakna pembunyi yang berjaya, BAT. Apa yang BAT adalah, anda akan melihat keadaan. Apa yang pembunyi beritahu anda? Jadi saya dapat mempercayai ini, pembunyi yang sekarang aktif, pembunyi yang sekarang aktif. Okey. Jadi saya dapat melihat bahawa def sudah berjaya. Dan ia adalah pembunyi dan pembunyi untuk QA. Okey? Jadi saya akan pergi ke depan dan hanya mempercayai ini dulu. Jadi kita hanya mempercayai ini. Dan saya akan menunjukkan apa yang berlaku. Jadi jika saya ingin mengedit ini, sekarang, jadi anda akan melihat ini di mana saya mempercayai keadaan. Baiklah, ini di mana konfigurasi telah dibuat. Konfigurasi telah dibuat sekali. Selepas itu, jika anda melihat pembunyi, ia hanya mempercayai seluruh pembunyi. Jadi jika kita akan melihat keadaan, ada beberapa perjalanan yang saya lakukan di sini. Jadi pertama, saya lakukan apa yang kita nama tokenisation. Jadi apabila anda mengambil aplikasi web dan anda mempercayai ke beberapa perjalanan, ada beberapa perkara yang anda perlukan untuk mempercayai. Satu adalah, kawasan kawasan kawasan kawasan yang berbeda daripada keadaan untuk QA dan UAT. Kawasan kawasan kawasan kawasan yang berbeda, kawasan kawasan kawasan yang berbeda. Jadi, kawasan kawasan tokenisation di sini menggunakan aplikasi dengan parameter yang betul untuk dibuat dalam perjalanan itu. Jadi setiap kali anda melakukan perjalanan, ia akan selalu menggunakan perjalanan yang betul, parameter yang betul dan perjalanan untuk perjalanan itu. Jadi itu telah dibuat di sini. Kemudian saya lakukan perjalanan. Jadi ini adalah perjalanan sebenar yang melakukan perjalanan. Dan selepas itu, saya lakukan perjalanan yang digunakan yang sebegini. Jadi ini adalah keadaan. Di QA, perjalanan pertama 4 adalah sama, tetapi tiga-tiga adalah berkawasan yang berbeda. Jadi jika saya kembali ke dalam keadaan di sini, anda lihat bahawa di QA, saya mahu memperkenalkan perjalanan yang berbeza, perjalanan yang berbeza, perjalanan yang berbeza. Jadi itu betul yang saya lakukan di sini. Saya telah memperkenalkan perjalanan ini untuk memperkenalkan dalam perjalanan keadaan saya. Jadi ketika saya memperkenalkan itu, saya akan memperkenalkan ke dalam keadaan. Saya akan memperkenalkan perjalanan ini di sini. Sebabnya saya lakukan perjalanan ini di sini adalah, dalam salah satu tajam saya, saya sebenarnya memperkenalkan perjalanan UI. Perjalanan UI. Maksudnya menggunakan selenium. Ada sesiapa yang mempunyai selenium? Jadi mesin yang di kanak saya, adalah mesin yang memperkenalkan perjalanan selenium saya. Jadi saya akan memperkenalkan perjalanan selain saya. Sehingga saya memperkenalkan perjalanan saya, anda akan melihat perjalanan yang bermula menggunakan selenium. Anda akan memperkenalkan perjalanan UI. Dan awal anda juga melihat bahawa ia mengawal seseorang untuk memperkenalkan. Jadi ini sebab saya telah memperkenalkan perjalanan QA yang saya memperkenalkan untuk memperkenalkan sebelum perjalanan boleh berlaku. Jadi ada dua konsep di sini. Satu adalah perjalanan perjalanan pre-perkenalkan. Satu adalah perjalanan perkenalkan post-perkenalkan. Jadi pre-perkenalkan sebelum apa-apa pun boleh diperkenalkan, orang atau seorang itu harus mengenali post-perkenalkan sehingga setelah ia telah diperkenalkan, lalu seseorang harus datang dan berkata, okey, ini nampak bagus. Okey, jadi anda melihat perjalanan perkenalkan tersebut yang telah diperkenalkan. Biar saya berhubung dan bergerak di sini. Okey. Di sini adalah di mana anda melihat perjalanan saya. Jadi perjalanan ini, perjalanan ini, anda dapat melihat perjalanan koneksi saya di sini. Anda akan melihat perjalanan saya, dengan respect ke QA. Jadi ini mengubah dari perjalanan, jadi jika saya akan menunjukkan perjalanan koneksi saya, perjalanan akan berbeza. Okey, jadi mari kita bergerak. Okey, jadi biar saya berhubung dan berjumpa dan melihat apa yang berlaku di sini. Jadi saya dapat melihat perjalanan, saya dapat melihat dalam masa sebenar apa yang berlaku. Jadi saya dapat melihat saya di sini. Jadi anda dapat melihat di atas, browser hanya menggunakan. Ia menggunakan pakaian. Anda akan melihat klik yang berlaku dengan otomatis. Kemudian anda akan memulakan perjalanan saya. Jadi untuk orang yang tidak melihat atau cuba perjalanan ui otomatis, kadang-kadang ini mungkin melihat magical ke sesuatu kegiatan. Okey, jadi mari saya melihatnya di sini dan kembali ke sini. Jadi setelah perjalanan ui otomatis saya telah membuat pakaian untuk memulakan perjalanan ui otomatis. Jadi saya akan memulakan perjalanan ui otomatis. Ya, pasti. Perjalanan ui otomatis. Jadi di sini anda dapat melihat bahawa saya telah menghubungi perjalanan ui otomatis. Jadi ini menghubungi perjalanan ui otomatis ke VM yang anda lihat tadi. Yang ini di sini. Jadi ia berdasarkan setelah setelah ini. Pakaian saya. Jadi ini adalah contoh perjalanan ui otomatis. Jadi anda dapat melihat perjalanan ui otomatis di sini. Jika saya pergi ke perjalanan ui otomatis yang adalah yang ini di sini. Pakaian VM yang membuat perjalanan ui otomatis. Ini adalah perjalanan ui otomatis yang anda lihat tadi Jadi ini adalah cara saya membuat ini. Dan perjalanan ui otomatis yang saya akan mencari dalam perjalanan ui otomatis ini. Jadi dalam VM saya mempunyai perjalanan ui otomatis yang saya mencari. Ini adalah perjalanan ui otomatis yang saya akan mencari. Ya. Okey. Adakah saya dapat jawab soalan anda? Ya. Okey, jadi untuk perjalanan ui otomatis yang saya mencari adalah sesuatu yang yang sedap. 25 user yang membuat aplikasi saya selama 60 saat. Ini untuk demo. Tapi jika anda mahu sesuatu yang sedap anda boleh memperkenalkan ini. Jadi ini adalah perjalanan ui otomatis yang sangat mudah. Ini adalah perjalanan ui otomatis yang sangat mudah. Anda dapat memilih untuk mempunyai sesuatu yang sedap jika anda mahu mencari perjalanan ui otomatis yang sedap. Jadi itu mengambil beberapa klik. Ia mengambil panggilan. Anda dapat membuat itu dengan kejapan anda. Tapi jika ia akan menjadi perjalanan ui otomatis anda boleh membuat dari dalam interface ini. Okey, jadi jika kita mempunyai perjalanan ui otomatis kita lihat perjalanan ui otomatis. Pada perjalanan ui otomatis, jika anda lihat perjalanan ui otomatis ia sama seperti perjalanan ui otomatis. Jadi pada perjalanan ui otomatis kita akan membuat apa yang kita nampak perjalanan ui otomatis. Maksudnya seorang user akan datang dan membuat perjalanan ui otomatis. Jadi saya tidak fikir pada masa ini anda dapat mengautomati segalanya. Ada tetap beberapa perjalanan yang memperkenalkan perjalanan ui otomatis. Jadi sebuah kisah yang dikatakan dari perjalanan ui otomatis yang memiliki otomatis jadi semua perjalanan ui otomatis dan seorang perjalanan ui otomatis membuat perjalanan ui otomatis untuk mengubah kata-kata ke dalam kata-kata lain. Jadi mereka membuat itu dengan perjalanan ui otomatis, semua perjalanan ui otomatis, ia berlaku ke dalam produksi dan mereka menerima bahawa orang tidak membuat perjalanan ui otomatis. Jadi semasa perjalanan ui otomatis mereka menerima bahawa perniagaan yang mengubah kata-kata kata-kata ui otomatis mengubah kata-kata seperti kata-kata dan kata-kata yang sama. Baiklah. Jadi ini hanya contoh mengapa keadaan ui otomatis masih berlaku. Jadi mari kita lihat keadaan ui otomatis masih berlaku. Mari kita lihat keadaan ui otomatis masih berlaku. Mari kita lihat keadaan ui otomatis dan lihat keadaan ui otomatis. Okey, masih berlaku. Okey, jadi sekarang keadaan ui otomatis. Ya, jadi ui otomatis berlaku. Okey, jadi sekarang dalam masa yang berminat tanpa menunggu ui otomatis untuk dibuat. Dan mari kita berharap ui otomatis telah dibuat. Jadi saya akan ambil ui otomatis ini dan mari kita berharap saya adalah ui otomatis dan saya perlu testa kata-kata yang telah dilakukan dalam environment ui otomatis. Jadi salah satu perkara yang saya boleh lakukan adalah dengan menggunakan plug-in kita panggil feedback test. Jadi keadaan ui otomatis testa kata-kata keadaan ui otomatis dan cuba beritahu perkembangan bahawa saya telah mendapat ui otomatis. Jadi perkembangan sangat secara natural bagaimanapun ui otomatis akan berkata, saya tidak ingat atau saya tidak nampak memperkenalkan ui otomatis lagi. Jadi apa yang saya akan menunjukkan anda membantu dengan pembinaan seperti itu. Jadi saya akan kata saya akan pergi ke kedai dan saya akan memilih satu ini dan saya akan kata keadaan ui otomatis. Okey jadi sekarang saya akan memilih pembinaan ui otomatis jadi saya akan memilih pembinaan ui otomatis jadi mari kita kata saya akan menemukan masalah dengan pembinaan ini mari kita memperkenalkan keadaan ui otomatis di pembinaan ui otomatis tidak berkata dengan apa yang saya nampak dalam kata-kata produk jadi saya ingin memperkenalkan keadaan ini jadi apa yang saya boleh lakukan adalah saya boleh pergi ke plug-in ini, saya boleh ambil screenshot seperti ini saya boleh memiliki screenshot seperti ini saya boleh memulai ini dan saya kata pembinaan ini tidak betul dan saya kata okey dan saya akan pergi ke kedai dan memperkenalkan keadaan jadi anda dapat melihat di sini semua keadaan yang saya nampak nampak dalam keadaan yang saya nampak mereka. Jadi sebuah sesi pembinaan saya, apa yang saya nampak nampak di sini, saya boleh memilih untuk membuat buku baru, jadi saya boleh kata pembinaan ini tidak betul dan saya akan kata selamat. Jadi apa yang berlaku sekarang adalah bahawa setelah saya nampak selamat keadaan yang anda nampak di sana dapur ke keadaan jadi anda nampak di bawah sini anda nampak pembinaan ini tidak betul dan jika saya nampak di sana, anda dapat melihat semua keadaan yang saya nampak semua nampak sebagai sebahagian pekerjaan saya dapat melihat pembinaan, keadaan, pembinaan, OS dan sebagainya. Jadi sebagai pembinaan pembinaan sekarang, datang ke pembinaan pembinaan, saya hanya perlu memilih siapa yang saya mahu memilih saya mahu memilih kepada kawan saya selamat dan selamat. Saya perlukan hubungan untuk membangkir keadaan yang saya nampak. Saya perlukan hubungan untuk membangkir keadaan yang saya nampak oleh pembinaan ini. Dan di dalam bag. Jadi jika anda melihat keadaan ini ini, ini adalah untuk Chrome dan Firefox. H akan datang nanti. Tak ada IE. Tak ada. Ia dipanggil TES dan Feedback. Jadi Chrome, Firefox dan H H akan datang nanti. Bergerak nanti, tak akan ada IE. Sampai untuk keadaan, tetapi dalam keadaan seperti ini, tak. Jika anda ingin melakukan tes keadaan yang saya menunjukkan, anda akan menggunakan Chrome, Firefox dan H. Bagaimana dengan Pesan TES? Ya, anda boleh meletakkan keadaan di sini. Jadi saya sudah meletakkan keadaan sebelumnya. Jadi saya ada... Ya, ini yang... Ya, betul. Jika anda meletakkan keadaan yang sama, anda tak akan berubah. Ya, ini berlaku pada Pesan TES juga. Ya. Tidak. Ia dibuat oleh Microsoft. Ia juga Microsoft. Jadi anda masih boleh menggunakan TES dan Feedback keadaan yang anda lihat di sini. Dan anda melihat bahawa ada dua mode, Konektor dan Stand Alone. Jadi sebabnya, jika anda tidak menggunakan Pesan TES atau Team Services atau Platform, anda boleh memilih Mode Stand Alone. Jadi ia akan menggunakan semua sesi, semua klik yang berbeza dan anda boleh meletakkan keadaan Pesan TES atau Pesan TES. Kemudian anda boleh tawarkan e-mail yang digunakan kepada pembinaan anda. Assuming anda tidak mempunyai TFS atau Team Services dan sehingga anda tidak boleh mempunyai pembinaan itu. Jadi ia lainnya. Anda boleh menggunakan ini. Bagaimana keadaan i.e? Bagaimana keadaan i.e? Anda masih menggunakan i.e? Ya. Saya masih menggunakan TES dan Feedback keadaan i.e. Saya masih menggunakan TES. Okey. Saya hanya menggunakan i.e. Ya. Tapi kami melihat orang bergerak dari i.e. Okey. Jadi saya hanya memperkenalkan i.e. Keadaan i.e. I.e. Saya memperkenalkan i.e. I.e. I.e. I.e. Saya menggunakan i.e. I.e. I.e. Saya menggunakan i.e. I.e. Saya menggunakan i.e. Okey. Jadi produksi juga memperkenalkan i.e. produksi, sebabnya anda akan mahu seseorang memperkenalkan i.e. Jadi anda akan mahu anda memperkenalkan i.e. Jadi anda akan mahu anda memperkenalkan i.e. I.e. I.e. Saya menggunakan i.e. I.e. Saya menggunakan i.e. Saya menggunakan penggambaran Remote Danestones quelle yang kami akan ajak So, if I were to go back to the approvers, more options, you can see these are my options. I can say all users have to approve in sequential order or as long as anyone user approve, then the approval is considered valid. So, these are the few options that you have. Yes, it might be pinnaged, it will approve before yourself. But when we please not allow today, it's not a factor, but now has a cool kind of feedback. Oh, no, in that case, no. So, currently the options that you have are only these three options. What if let's say for example it breaks my new ATE. I want to roll back to the previous version. So, how do I do it? Does it have to be a separate? Okay, so, when we talk about rollback, rollback is usually a very tricky thing to handle. In this example, I don't even have databases. So, with team services, you can do a schema compare, for example. You get the delta, so let's say if I'm adding a new column or new field, I get the delta and then I deploy that into my environments. So, when we talk about rolling back, if you have to do a database rollback, some things like this are very complex. So, what team services supports is what we call a roll forward model. So, you go back to a previous build. So, we have this thing called the artifact repository. So, if you were to look at all the builds, you'll see the different builds over here. So, you choose the previous build and then you do deployment again. So, we kind of call it a roll forward in that sense. You have to do it manually. Yes, it has to be done manually. So, you still don't have something like automatic snapshot change? So, yes, you can. So, we have this thing called... So, if you're using Microsoft SQL, we have this thing called DAGPEX, which is a snapshot of the databases schema. So, each time you do a release, you can take a snapshot of that particular schema and you can just redeploy that schema again. You can do that. So, the feature that I expect from UTFS, it's like I click to previous build and Azure automatically revert from previous snapshot from snapshot of previous build, revert all my affected machines and then I just move back to my previous snapshot. So, currently you can... Ya, I agree. But currently, that's still a little bit manual in that sense. We have just a lot of PowerShell scripts to do in the stuff for us. But maintaining it is just a platform. Maintaining the PowerShell? Ya, a lot of parts. Connect it together. I mean, you can use Team Services to execute your PowerShell scripts if you want. Ya. So, it already deployed into production? Or UAT you find as a defect? Ya, I'm creating a new module on UAT now. But now, current production has a defect. Okay. So, that would be more of branching, I would think. So, that would be more of the way you do a branch. So, if you were to think about that, how I would approach it is so, you're right. So, I have the latest branch that I'm working on, which is now in UAT. I find there's something wrong with... So, that depends. When you create that new feature, are you creating it in a new branch? Typically, we do recommend whenever you're creating a new feature, you always branch. That's the thing when you use Git as well. You want to create a new feature, you branch. Everything you do, you branch. Very rarely, you would integrate features back into the branch without ensuring that it is really stable. So, with the correct branching strategy, you can create multiple builds, build definitions over here on different branches. So, in that sense, so if I have a feature branch that is in UAT and I find out that my main branch has a bug, I can go back to my main branch, fix it, and then it will just be pushed all the way to deployment or production while my feature branch in UAT still sits there and then I can merge it back when everything is stable. You need to merge back UAT because my testing were failed. Ya, ya, correct. Ya, that's what you will have. It's also referring to the hot-picks. I'm doing hot-picks. Ya. Hot-picks is an advantage. Ya. Okay, so, okay. What I'm going to show you now is from scratch. Okay, so this should take about, I guess I hope in 20 minutes in creating a blank Team Services Project with full CI CD. Okay, so we're going to try that. It's kind of just to show how easy, of course in my demo sample it is to really start get started and to really set up something like that. It's not something that is, so you need to spend 2 months on to get started. Okay, so I'm going to go to my project home. I'm going to close this and I'm going to create a new project. I'm going to call this say N2N DevOps demo. Okay, that's the name of my project and I will say, okay, everything else looks good. Let me just say create. So this is the new project creation template. So currently I'm on what we call insider preview so I get to see something. So if you are using Team Services don't be alarmed if you don't see the same UIS I am. Okay, so this is what I see over here. Okay. What I'm going to do is I'm going to initialise readme file. So I'm going to say initialise to start with readme file. So readme gives me some information on my project. So do any of you really get markdown back in the day when I started development it's like markup. I still prefer markup in any case. The in-built editor inside Team Services is pretty decent. So you can see I'm editing my markdown file. I can commit this, I can save. And the one thing about Team Services is it kind of hand-holds you along the way. In the things that you need to do. So right from this page you see it kind of prompts me to say that hey, do you want to set up your CI. So I can click on set up build. Notice that I have not even checked in any code yet. I'm just going with the flow. I create my project. What it prompts me to do I'm just kind of going with the flow with what Team Services is asking me to do. So I'm going to say that so the end result of this is I want to do a deployment into Azure. So I'll say next. Okay, everything looks good. So the thing about Team Services is that it integrates with the different source control systems. So if you're still using SVN, it does integrate if you have your own remote or private Git it integrates with that. You don't have to say that if I use VSTS I have to use all of VSTS. It doesn't work that way. You can if you want but you have the option of choice as well. So okay, I'll say create. So this is the template that have kind of populated the steps for me. The basic.net stuff right now get restored build a solution run my unit test do a deployment and then publish the artifacts. So you notice something that the deployment actually happens within the build. So you have the flexibility to do that as well. You can choose deployment step to take place as part of a build process. But of course if you have this inside here you lose the ability to control things like the approvers the different environments. So if you want something quick and dirty you can get started with this. But I'm going to remove this for now because we want to really roll out a proper CD kind of pipeline. Okay. Let's see what else I can do here. I can say create a work item on failure. So if someone checks in the code and it fails the build it creates a work item as a bug and assigns it back to that developer. So this is something that I would like to have. The rest I think I will just leave it as default and I'll say save. How can you sign to developer because build can contain several commits? Right. So which developer? The developer the commit that is made by that developer. Ya. Yes. Ya. Correct. So I'm going to call this say CI and say okay. Okay. So I have saved this already. Okay. So I'm going to just take a step back and I'm going to go into the back lock. I'm going to create a new item and say okay create a new project. Alright. So this is one of the tasks that I want to do. I can create some sub-task like say task one, task two. I can move this around the board like this. So what I want to do now is I'm going to create a new project. So I have initialised a Git repository and for those who are using Git long enough we know that every time we want to do everything starts with a branch. So from within Team Services I can say new branch and I can call this say okay. So this is feature say this is feature branch. I call this feature one and this will be branched from master. Okay. So I've created a new branch and you can see at the top over here it gives me the option to clone. To clone this project on my desktop. So right now there's nothing. So I'm going to say clone. And you can see that there's a whole bunch of IDE that has inbuilt support. Okay. This is out of box support that's provided. If you don't see your IDE here it doesn't matter you can still you know work with the Git on Team Services. So I'm going to choose Visual Studio and this launches Visual Studio for me and okay. So it is prompting me to clone. So I'll say clone. Okay done and I'm going to create a new project now. Okay. So I'm going to create ASP.NET project. I'm going to select okay. Application Insights. So I want to add application Insights into this project. I'll say okay. I'll choose MVC. I will add some unit test and I'll say okay. Host it on Azure. Okay. I'll say N2M Dev Ops. This is taken. Okay. I'll say Dev Ops. RG. I'll just add another prefix. Okay. So I'll say create. So this is a wizard that you know it's a quick wizard that helps me to create an application a web application on Azure. So I could log into the Azure portal and do what I just did but from Visual Studio to do so. So Visual Studio has a very tight integration with Azure. Okay. So now my project is being created. I'm going to wait for this to load. Okay. So this has loaded. This is my vanilla ASP.NET application. So okay. So before I check in one thing I need to do is to switch the branch because I'm working on the feature branch instead. So I'm going to switch to the feature branch and I'll say check in. Initial commit. So I'll just do a commit and push. I know it's not really a good practice but I'll just commit and push within a single stroke. Okay. So now this is pushing my code into my code repository and let's see if the build has been kicked off because I have to be a continuous integration. Okay. So you see my build over here. It's called CI and you see that nothing has been triggered. Any idea why? Ya. So it was a different branch. So I have created the CI to be on my master branch but I checked in against the feature branch. So one thing we need to do is to merge these two branches. So in Git we do a pull request. So how many are not so familiar with Git? Not so. Still SVN. Alright. Okay. So we have to do a pull request so these terms may not sound so familiar but basically we're going to to merge the branch by doing a pull request. Okay. So from within Visual Studio and by the way Visual Studio is actually quite friendly if you are starting with Git in terms of getting familiarise with Git. It has a lot of hand holding in that sense. So I'll go to pull request and I'll say new pull request and this brings me back to team services and I can see that okay so this is my pull request this is basically I checked in a whole bunch of files my entire web application actually. I can choose to link it with a few more work items so I can choose task 2 and maybe even task 1 and I say okay create a new pull request so when I create a new pull request the team is now then notified to say that there's a new pull request can you come in and approve which in this case I happen to be in the same team so I can go ahead and say approve so if there are multiple people in the team you can have multiple approvals and I can say complete right so I complete the pull request it gives me the option to delete the feature branch and I'm just going to do that so this completes the merge ya ya ya so this will be handle yes correct okay so if we now come back here so now you see in progress now you see the build being kicked off so if you were to look at this okay it's waiting for the build to start and we will see the build actually happening so if you were to just go back to edit again so this is just to share a few more stuff about the build system over here you will see that so early on we start off the whole presentation talking about how you know you are able to do builds for other systems as we are not just dogged that so you can see that there's the end build here there's maven you know if you are looking at docker you know it can dockerize your apps so this was the schema compare I was talking about so a task that actually compares the snapshots of your database anyone uses 45 or have heard of 45 so this is by HP and it is kind of like penetration testing for your application so if you have or have used 45 you can you can integrate that within your whole pipeline flow as well gap, gran, ionic, jankins so if you are really using jankins you can get team services to trigger a job on jankins so one of the ways that we do it is so for example let's say you use github and then you use jankins but you can say that okay I want TFS or team services to still pull back the binaries from jankins and have team services manage the releases for me the deployments into the different environments possibility as well so yeah so there's a whole bunch of stuff you can see I can even do iOS Xcode builds okay so let's see if the build is completed should be by now yeah it's completed okay success so if you were to look at the build summary so similar to what you saw earlier right so when was it when it started when it ended the test results these were the tasks that were associated with the build so you get that full traceability in that sense right and if you look under deployments it says that okay so there's no deployments found you know do you want to go ahead and create a deployment right so one thing my team services it does gives you that flow nothing to another quite intuitively so I'm going to create a release definition now I'm going to do so these are all templates I can choose any one of these templates and when I choose the template that means that when I create the build deployment pipeline it would already have populated the tasks for me right if I want to start from scratch as an empty template I can just choose empty over here then I can just pick and choose the tasks that I want okay so in finishing up ya sure okay so we have a few build agents let me okay let me get to that yes correct so let me just let me show you what happens under the hood in a while okay so let me just create the release first so while the app is being released then we can look at some of these things so I'm going to say so over here you can see there's a Jenkins option to be able to pull the binary from Jenkins okay so I'm going to call this environment dev I'm going to link my azure subscription app service name is what was it that I created ya but I think this was the one and okay I should be done I will just rename this as cd safe okay so I'll just go ahead and do a release now so this I'm doing a manual release right so I'm just going to say okay release it into this environment based on this build okay and now team services will go ahead and do the deployments for me okay so coming back to that question so we have this thing here called agent queues so if I choose that you can see that there are a few what we call agent pulls okay we have hosted agent pull so when you create a team services account you get one hosted agent for free so what this means is that when you do a build so for example you have 5 people in your team right all of them queue the builds at about the same time because with each team services account you're given the first one is free and you can add more if you want the rest of your team members who have queued slightly later will have to wait for your job to be finished before the rest kicks in okay so this is a hosted agent that means it's hosted on Azure you can create your own build agents so imagine you spin off a VM or you have a machine somewhere in your own office you download the agents copy it into your machine so it runs as a service or as a console up to you and you have the choice so that becomes another agent for you alright so this will be what we call the on-prem version of the agent so you have you can either choose to have a team services hosted agents for you so you just purchase more as you go along or you can just use your own machines as build and deploy agents as well so you get to choose from the Azure machine and you have the ability to configure so the hosted build agents are fixed so if you were to look at this so for each agent we have this thing called capabilities so capabilities is basically what the agent can build so for the hosted build agents you can't change this from time to time add support into the hosted agent so for example Docker was added recently you can you can build your Java stuff but with your on-prem agents it's basically what you install on that machine so if you install Java you install node you install all the different kind of build tools that build agent that resides on that machine would then have all those capabilities to build what it is you want to build ya so for hosted agent there's no way to install ya ya now you don't need build controller no ya no ya that concept is ever since TFS 2015 was released we no longer go by the controller concept it's more of an agent concept okay so let's go back to release i think the app should have been released by now and yup okay so there right from start all the way to release from scratch to to full CICD this is an example of how you can do it okay any questions open okay good question let's see I have not tried that I did not output app service URL so it does not show here so I guess one way I could do it is to go into the logs and actually look at you know what was the URL that was being deployed into ya so this is the URL right but ya I think that would have that would be a useful feature to have to just launch the app from there other question this build result the result form can I customize it add some dashboard this this page can you customize the logs build summary or whatever let's say I have some tools that provide test reports from me yes because customized can I add you so okay so if you have some test tools that you are using it is up to that tool right to provide the relevant information back to team services so for example if you were to look at some of these tasks over here okay let me go back to the other demo so let's go back to I think Contoso Sports okay so you saw that in the Contoso Sports example I did a Sonar Cube analysis right so Sonar Cube is an example of a third party service that I'm getting to scan my code so you're saying that you want to customize this page to maybe say include those reports over here so the way that is customized is based on how Sonar Cube okay so in this case you see that Sonar Cube provided not really a lot of detail just a little bit and you can click on the link to view the full Sonar Cube report which actually brings view everything in full detail right so if you were to look at the tasks over here the amount of information that you see in the build summary is dependent on how Sonar Cube in this case Sonar Cube was the one who created this this task that you see here is how they develop it right so they can choose to display as much or as little data as they want it depends on the third party developer to write to look summary some text not really it depends on the task that you're using and how much information that task chooses to dump out summary I can't replace to my own template for example no not for the team services one at least if it's TFS you probably could actually I'm not really sure because in TFS you could go down to the code level and make some modifications in the team services one it's provided to you as a service you can't really make that change to deploy to a local machine ya you can do that you can deploy locally I know the examples I'll show you because it's easier to show rather than to set up you can deploy you can deploy on-prem onto your VMs on cloud ya ya ya so for example okay let's look at these builds so let's see let's say this build right so this is a build summary page I can see this artifacts link over here so this were okay let me say explore so these are all the files in this case it's a web deployment files that I have package as a build artifact artifacts is basically the output of solution build ya so like if in your current desktop open visual studio you right click you build whatever that is build out that is essentially the artifacts it will be the same thing as you will get in team services whatever that is being built is the artifacts in this case you can see that I have a few you can you see this zip file that's because for my build task when I am doing my visual studio build I actually passed in some arguments to package it as a zip so if you look at my so this is my solution build so this actually basically achieves the same thing as you would have if you were to try to right click on the solution and build on your machine so you can see over here MS build arguments I passed in some arguments so that it kind of packages packages it in the zip file otherwise you would see your usual your DLLs or your EXE as artifacts yep it is possible to say have multiple agents on deploying on a single windows multiple agents deploying on a single windows instance I don't think so because for that to happen so if you're deploying on-prem if you're deploying on-prem the on-prem deployment happens over what we call the WinRM protocol Windows remote management or secure power share so it uses this port 5, 9, 8, 6 ok so when that port is already in use it is unlikely that another agent would be able to communicate through that same port to that same machine from multiple sources so I don't think so I have not tried but I don't think so which port you use for agent in previous version I have not tried that with the newer ones previously you actually can come around or any other questions? you do the same thing with TFS it has to be TFS update TFS 2015 update 2 or later 3 is it? is it 3? the one with the release management is it? oh ok update 3 ah ok ok so update 2 you do not have the release management there is right? then update 2 should work ya i mean my recollection is update 2 2 or 3 ya but then again if you installing might as well just get the latest latest by the way is 2017 not 2015 ya 17 is out 17 is in production Visual Studio 2017 is not RTM yet but TFS 2017 is RTM ya and what for release management as a single product assault master continue just talk so everything now integrating to RTM that is the direction so the last version of TFS that you get the separate release management was 2013 i think ya 20 ya ya last step this UI test compelled will be built compelled up to you you can you know you to to decide so ok so for example so this is an example of a UI test that fail so i can say so in QA so this is the so say this is the UI test right this is the UI test i can say continue on error and i check this check box so by default this is unchecked so if it fails everything stops so if you check this it will still continue down whatever it needs to execute yes yellow so the build is successful but your test failed essentially but if you don't check this right if you don't say continue on error then even though the deployment is successful but your test fail it will show rate ya i mean that's how that's the logic of this check box also that means if it fails you always you know cause it to run ya what choice user needs to step to their definition what rights i mean permissive project contribute the rights contribute the rights i think that there's a whole matrix permissions matrix online i mean i can't recall but ya ya you can go and check it out ya yes we have all container ramifications of what does this pipeline has to offer like question was just mentioned i mean deploy multiple artifacts to one agent do you like deploy say multiple containers to this agent or say do you build multiple containers simultaneously on the first agent? ya so you can so you you can choose to paralyze your deployments and your builds so we see so that is somewhere deployment conditions i think it's this one over here i'm not too sure it could be this one so you're able to paralyze your deployments in that sense but of course you didn't have to weigh between the amount of available build agents you have versus how much you're actually trying to deploy ya okay any other ya sure i remember you talked about you know setting program about jail and something that last time oh do you track i'm not supposed to track is this too as well like how is your team positive performance no not with this so usually what happens is we will export the raw data to power bi and then we track it from there ya not from within this ya okay any other questions if not i have presented what i wanted i came to show you guys you can have casual discussion if not thank you all for coming ya thank you