 Kerana saya fikir ia kod ental, tapi akhirnya semua orang ada perjalanan. Jadi saya tak ada perjalanan tapi saya ada sesuatu untuk menunjukkan, saya rasa. Okey, jadi apa yang saya akan menunjukkan hari ini adalah sesuatu yang saya menjelaskan untuk pipeline CICD di mana saya bekerja. Jadi saya dari GapTec, nama saya Joseph dan saya adalah devops juga sebagai perjalanan software. Jadi, ya, itu perkara saya. Okey, jadi apabila saya pertama menunjukkan sebagai perjalanan profesional, saya rasa salah satu perkara yang saya menjelaskan adalah perjalanan. Jadi, bagaimanapun anda tidak masih perjalanan, tetapi masih belajar, atau sedikit perjalanan untuk mendapatkan perasaan. Tetapi masih belajar. Okey, apa yang anda berfikir tentang perjalanan? Ada idea? Setidaknya, ada tiga nombor yang anda lihat di aplikasi, dan aplikasi anda akan mendapatkan kemampuan dan kemampuan baru akan masuk. Okey, bagaimanapun, ya. Perjalanan adalah sedikit perasaan untuk saya. Selepas seketika saya datang, saya sedar, kenapa perjalanan menggunakan nombor yang berlainan? Jadi, sekejap lagi ada perjalanan yang berlainan. Saya rasa banyak orang tahu tentang Git. Jadi Git adalah juga perjalanan. Jadi kenapa kita perlukan lebih banyak perjalanan? Okey, jadi... Okey, saya akan perlu menangani ini kerana saya tidak mempunyai perjalanan. Okey, jadi mereka akan menjadi perjalanan. Jika anda mencuba... Saya perlukan sesuatu yang berlainan kepada saya. Saya akan mencuba yang terbaik untuk ini. Baiklah, saya rasa... Saya akan minta maaf. Saya harap dapat. Bagaimana dengan perjalanan yang anda lihat di aplikasi? Okey, ya. Bagus. Jadi, perjalanan menggunakan nombor yang berlainan. Jadi, saya mengharap anda tahu apa yang terjadi di Git. Jadi mari kita buat perjalanan di Git. Jadi mari kita katakan temp. Dan kemudian kita melihat temp. Okey, yang terkenal. Kita kongsi perjalanan. Kemudian kita boleh membuat beberapa perubatan. Kemudian kita boleh mempunyai perjalanan yang begini. Okey, itu peluang saya yang menghasilkan perjalanan untuk... Lama commit anda dapat memperkenalkan perjalanan. Ya, jadi... Okey, jadi anda dapat melihat ini yang terjadi dalam perjalanan untuk anda. Anda dapat melihat di sini yang ada perjalanan di sini. Komit hash sebenarnya membuat orang tahu ini adalah versi kode yang ini dan apabila kamu membuat komit yang lain menjadi versi lain tetapi perkara ini adalah kita tidak tahu apa yang berlaku jadi ini satu cara untuk membuat versi yang lain untuk kami, apa yang kita lakukan adalah hash docker jauh-jauh bagaimanapun ada doktor tidak begitu banyak jadi docker adalah kontainerisasi seperti layak virtualisasi apabila kamu boleh mengambil sistem operasi dan membuat doktor tanpa mencari perkara yang akan berlaku jika tidak, saya akan beri contoh mari kita membuat file docker saya tidak tahu kita membuat node jadi saya akan menggunakan node node 8 alpine apabila kita mempunyai file docker file docker ini adalah template untuk kamu untuk membuat vm tidak adalah vm yang benar sebab masih membagi kernel dengan sistem operasi mari kita membuat image dan kamu akan melihat ada juga hash itu satu cara lain yang kita lakukan versi pada kode ini adalah hash yang mempunyai kode di setiap masa tapi perkara ini adalah jauh-jauh jika ada bug bagaimana kamu tahu ialah perkara yang berlaku dengan versi yang berlaku jadi mengenai komunikasi manusia mengenai komunikasi manusia bagaimana kamu tahu perkara yang berlaku seperti versi 1.0.3 bukan kata 8c1d329 bagaimana saya dapat tahu okey baiklah, itu untuk level produk sebab lain perkara yang kita lakukan versi adalah untuk pastikan perkara tidak berlaku dan saya sebenarnya mempunyai contoh untuk perkara ini mari saya balik ke kode saya dan perkara ini adalah produk dan ya, itu di sini okey jadi kita menggunakan node pada gavtec dan bagaimana kamu berkenal dengan node? node.js, saya rasa itu adalah perkara yang lebih popular jadi kamu harus tahu itu okey, jadi kamu juga tahu node ini adalah perkara yang terkenal namun npm memperkenalkan sebuah masa dan seperti keadaan kamu sepenuh okey, jadi saya telah membuat versi git yang berlaku yang saya sebenarnya mempunyai tapi jangan lihat ini jika kamu menarik okey, jadi perkara ini saya akan menunjukkan bagaimana perkara ini adalah perkara SEMVER SEMVER adalah perkara yang kamu lihat seperti 1.0.3 1.0.3 adalah versi patch yang mempunyai bagaimana perubahan bagaimana perkara yang tidak memperkenalkan kode perkara tengah, jika memperkenalkan 1.0.3 0 adalah versi minat jadi ada keadaan baru, tetapi masih keadaan yang berlaku dan untuk keadaan pertama, keadaan terlebih-lebih adalah versi keadaan yang lebih besar dan apabila perkara berubah kamu tidak mahu berubah tanpa menerima kode okey, jadi jika kamu menikmati perkara.json, untuk orang yang tidak tahu perkara.json basically, ini keadaan perubahan, menerima perubahan kamu jadi di sini, kamu dapat melihat bahawa saya memperkenalkan perubahan yang saya menerima lebih awal dan saya memperkenalkan perkara tengah 5.0.0 jadi, ada 3 perkara lain satu ini menunjukkan pengetahuan dan satu yang terakhir menunjukkan perkara 5.0.0 jadi, saya telah menerima pengetahuan di sini jadi, saya tidak menerima apa-apa ia berlaku kepada setiap pemeriksaan dan menerima pengetahuan MPM jadi, mari kita cuba itu okey, jadi sekarang saya menerima pengetahuan saya dan kamu akan melihat bahawa MPM adalah sebenarnya menerima okey, beritahu, sesuatu tidak betul kerana ia tidak menunjukkan okey, jadi okey, saya sebenarnya menerima sedikit kerana saya rasa banyak orang mempunyai node 8 yang berlaku dengan pemeriksaan jadi, saya akan melakukan pemeriksaan dengan node 6 yang berlaku dengan MPM 3 dan tidak mempunyai pemeriksaan okey, jadi kita akan menerima pemeriksaan dengan MPM 3 dan kamu akan melihat pemeriksaan mempunyai pemeriksaan jadi, okey, kamu dapat melihat di sini bahawa kamu dapat melihat di sini bahawa satu daripada mereka mempunyai pemeriksaan dengan MPM 5.01 dan ada yang lain di sini mempunyai pemeriksaan dengan MPM 6 dan lainnya mempunyai pemeriksaan dengan MPM 5.1.0 jadi, ada perbezaan antara Karat, Tilda dan Star jadi, dalam Karat kamu tidak mempunyai pemeriksaan minor jadi, jika ada kecepatan baru kamu akan menerima dalam Karat kamu akan menerima pemeriksaan dan dalam Star kamu akan menerima pemeriksaan kelebihan yang lain jadi, perkara yang menarik adalah jika kamu tidak memperk Corp jika kamu membuat pemeriksaan dan kamu tidak membuat pemeriksaan merah jadi, saya menulis pemeriksaan yang sama untuk semua saya tak akan membandar dan kamu percaya mereka adalah sama jadi, saya akan mengambil semua pemeriksaan sekarang So, konteks ini dalam satu dari mereka, dalam 5.1.0, it's a minor change, it's not supposed to have any breaking changes, but I did introduce a breaking change. So, now we'll run it. So, from 5.0.1, we show us the resolve version from MPM. I'm sorry. Yes, it's MPM. I'm sorry, this is getting a bit awkward. Yeah, blame MPM. Yes, use Yarn. It has an offline cache. Okay, I don't think this is working out. Okay, one last try. It's not, I'm just going to skip this section. Okay, never mind. Okay, so in any ways, what was supposed to happen was that the minor version was actually broken, even though the specs should not have changed. So, these tests were actually specs and rewrite tests in order to verify the behaviour that things are working correctly. And in this case, the test will actually fail, because one of our dependencies had code which is breaking. So, that's the dangers of not knowing versioning, because you might introduce a breaking change in your minor version. Okay, so how many ways are there of doing tagging? So, I guess the first way is more intuitive, which is to actually increase your version over here. So, when we started out with Project Tag, one project that we did, we tried to use the version in MPM. But this actually got pretty messy quite quickly, because when we pushed the automated pipeline, and the pipeline does the versioning for us, we got a lot of merge conflicts that we had to resolve by ourselves. So, yeah, don't version using the file, unless you're, I mean, I guess if you're a one-man team, it's fine. So, another way is actually to get tags. So, what does, what do get tags look like? Okay, so this is a fresh repository, there's nothing. So, I'll go ahead and add one over here. Okay, so get tags looks like this. And get tags, the good thing about get tags is that it tags this number. So, for example, the 0.0.0 over there, it's actually associated with the commit. So, these give away for you to reference the commit. So, remember what I said just now about the SAM ver versioning, where the patch version indicates a bug change, minor version, non-breaking changes. So, when you tag this to a commit, it actually lets you understand what a commit does. So, for example, if you see the major version suddenly hop from the previous commit, you know something's going to break. Yup, so that's what resulted in me creating this package, version tagging scripts. So, I'll show you an example of like how to use it. Okay, the easier way will actually be to just use Docker. So, it's on Docker Hub and you can run it by having this command. Okay, I'm going to put down the mic for a while. Okay, so what this is going to do is basically I'm using Docker to run this image over here and I'm mapping the volume of my present working directory into the containers slash app and I'm running the command iterate at the end. So, there are a few commands that I created. So, first is init, which is to initialize the repo for versioning, which actually adds the 0.0.0. But since it's there already, we are going to use iterate, which you will see will change it to 0.0.1. Yup, so if we do the listing right now, you can see that it's 0.0.1. And if you need the minor version, you can do this. Just add a minor behind and likewise if you need a major, yup, you get a major. Okay, so, I guess what else what I'd like to tell you about the code is perhaps some difficulties that I encountered while writing this code. So, okay, firstly, I needed it to be completely language agnostic so I had to learn shell script. So, this is also one of the things that I didn't quite understand as a junior developer when I first joined. Like, why do I have to learn shell scripts? I'm perfectly fine with JavaScript. Like, leave me alone, that stuff is disgusting. Okay, so it's actually really, really important for you to pick up a bit of shell scripting because in some cases you will never know what kind of system you're working with and shell is probably one of the more... one of the things that you can expect to almost always be there unless you're using Windows, of course. So, I heard even Windows has shell support in its latest version. Okay, so one of the problems that I face was that Git does not understand numbers. So, let's say I am going to tag 1.0 Let's see, okay, it still works. Next, I am going to tag 1.9.0 so let's assume 2, 3, 4, 5, 6 all the way up to 9 has passed. Okay, still in order and now this was the surprising thing to me. So, can you see that 9 comes after 10? Yes, so this was one of the points that I really had a lot of trouble with. I mean, okay, it's easy to do in javascript but if you try to do it with shell script you'll find that it's not as simple as it looks. Yeah, this was one of the major points that I found difficult. And another was like, well, Unix works in different ways from Mac. So, when I wrote it on my Mac, it was totally worked. And then when I put it on the Linux, it completely broke. Yeah, so shell script is pretty important. Yeah, so I think that's all I have to share for today. The address over there. I'm not sure whether you can see it but it's my user handle and version dash tagging dash scripts. So, the instructions are there and a more full set of read-me's. Yup, so I guess that's it. Ya, thank you for listening. Okay, if you have any questions you can... Ya, so that's my name. If you're looking for something you've got tag, looking for a gig with us, you can email me there. You can find my geeky writings and my many unfinished products at github.com. Thank you.