Coding Blocks - GitHub Actions

Episode Date: September 17, 2023

In this episode, we are talking all about GitHub Actions. What are they, and why should you consider learning more about them? Also, Allen terminates the terminators, Outlaw remembers the good ol’ d...ays, and Joe tries his hand at sales. See the full show notes at https://www.codingblocks.net/episode218 News What are GitHub Actions? Workflows Jobs Steps Actions […]

Transcript
Discussion (0)
Starting point is 00:00:00 all right start us off with some random intro random intro what are you talking about my intros are scripted out this is the way it's supposed to be just as it was intended insert your deity here intended it to be that way yeah and subscribe And subscribe. Oh, and some number episode, insert number here. But it's off by one, so. I'm Michael. Who are you? Thank you. Who are you?
Starting point is 00:00:35 I'm Joe. What I'm waiting for is I keep messing with the episode intro, and I'm hoping that just like one day Alan's going to lose it. Like he's going to go into a full meltdown twitching you know and you know yeah he's gonna explode i'm close every time yes it's where my head would be cold we'll figure out like that is the one that we're doing from now on what not this one but the future one maybe we'll be like this is the one that was it no how we're gonna do it no this is this is this is the future one maybe will be like, this is the one. That was it. No. How we're going to do it. No, this is the way.
Starting point is 00:01:07 It's evolution. Yeah. I can't take it. All right. So what are we talking about today, Jay-Z? GitHub Actions. I'm excited. I'm pumped.
Starting point is 00:01:15 All right. Jay-Z is pumped about GitHub. I'm pumped about GitHub. So people are coming on board here. All right. But first, but first, we have Outlaw reading names. It always goes well. Wow.
Starting point is 00:01:30 I got this. I got this. Stand back. Way back. No, no. Never again. Thank you very much. Joe Recursion Joe, Viv or or Viv and the original Nicholas.
Starting point is 00:01:46 So thank you all for your review. Some of those were second reviews, I believe. Some of those were also like, Hey, I'm doing this. So you never asked for another review again. So it's going to be awkward later on in the episode,
Starting point is 00:02:00 but nevertheless, really do appreciate that you took the time. Well, hold up it could have been no none no reagan for reagan that yeah now you're just making up words see no non ever i got that proper noun like that one was one that i got right oh that's amazing all right so i have this is this is i guess a little story to share so my my pc my desktop you know i built that thing god same time i think we all did like three or four years ago it's been a little while right and at the time i got a samsung i think it was an 850
Starting point is 00:02:42 pro and those things were hyper expensive. So I got the 512 gig. Well, it's been getting on my nerves of late because I'm constantly having to go and clean files up on there. Um, especially doing the audio recordings and all that kind of stuff. And I'm like, man, I'm tired of dealing with this. So, you know, trying to support local ish businesses. Um, I went up to micro center and I was like, you know what, I'm going to get, I'm going to get a new SSD. So while I'm there, I'm like, man, everything's on sale. So I got a two, a two terabyte 6,500 read, um, 6,000 right speed, two terabyte SSD for like 110 bucks. Right. And I'm like, all right, that's sweet. They also had a four terabyte SSD NVMe on sale for less than 200.
Starting point is 00:03:29 And I was like, okay, done. I'm getting them both. And then I'm like, you know what? I'm cracking this thing open. I want to be able to see my Ram and,
Starting point is 00:03:38 and something prettier over the top of my CPU. So I went ahead and got a water cooler, right? So all, all great, right? Get it all in there. Everything's went ahead and got a water cooler, right? So all, all great, right? Get it all in there. Everything's working well, lo and behold. So I actually kind of irritated with myself. I'm like, man, I remember having like three and a half or two and a half inch SSDs mounted to the back of, of the, the case section, dude, I had a whole two terabyte SSD that I didn't even have registered in windows that was just sitting there not being used for, I don't even know how long. I mean,
Starting point is 00:04:11 it has to have been two or three years. Like, I don't know. I was, I was a little ashamed. You can lose those things for sure. Dude. Like when I, when I started scrolling through the drives that it said unallocated space, I was like, why do I have two of these things in here? Yeah. But let's talk about the real thing here. Like, which one, which drive did you get? Okay.
Starting point is 00:04:34 So I went the two terabyte fast one is actually the Micro Center brand. Oh, really? So I've had good luck with it i replaced the one in my ps5 with one of those things and it's been golden like for over a year and i was like you know what i'll go ahead and do it and i inland it's the inland gaming performance or something i probably still have the package laying here somewhere, but yeah, I mean, it's super fast and it was like 110 bucks. And I was like, okay, like that's, and it has a heat sink on it. Right. Whereas a lot of the ones, even, even when you spend more than that, they don't. And I was like, all right, I'm doing that. And then the other one was a crucial, the four terabyte was a crucial.
Starting point is 00:05:19 And I was like, dude, I mean, I'm going to have this thing for a while. And I had to refrain from being like, well, I mean, I went this far. So we'll get a processor and a motherboard. Oh, you went all. No, I didn't. I almost did. But I have a 3900X. Like this was a Mac daddy processor just a couple of years ago. And it still sells for like 350 bucks.
Starting point is 00:05:42 So I was like, no, I'm not going to do it. I don't really use it that much, you know, but of course I was eyeballing some, you know, 40 eighties and some, you know, so one of my boys just rebuilt his and went with the Samsung nine 90 pro two terabyte. Yeah. 7,450 megabytes per second yeah they're insane and i looked at that one but it was like double the price for like you know he didn't pay double was it not not on amazon oh okay yeah it's like 135 right now on amazon oh that's not bad at all yeah i mean is it real though that's right the picture to what's on samsung's website that's so true nowadays man it's so weird yeah don't i like i almost refuse to order a usb drive off amazon anymore because i'm like what kind of nonsense are they gonna send
Starting point is 00:06:41 me that's gonna install some garbage wear on my computer so which which water cooling did you go with then um deep cool so okay i was looking up reviews on all kinds of stuff i love this thing it's gorgeous it's pretty my can't hear it i'm kind of shocked though because like you were such a fan of the noctua that i can't believe you didn't go with that so i don't like the way it looked and i looked up so i went through man you know how we do when you start looking for things you read five million reviews you watch a thousand youtube videos i've probably got five days invested in this one little decision right um but only five wow that's pretty good right yeah i mean but this is like a hundred and forty dollar purchase like it's way too much time for that but but no i mean the thing is amazing i had seen some reviews on it where they said that this thing with the newer
Starting point is 00:07:38 processors with the higher tdp it's one of the best on the market like it's one of the few that can actually keep them cool when you overclock them. And I'm like, dude, if they'll do that for the new stuff, it'll absolutely keep this cool and I'll never hear it. And that's what I want. I want zero noise out of my machine and it looks cool. So it's definitely not as compact, but have you checked out the Noctua Chromamax Black. I did see it, yeah. Yeah. So that's what my son put on his. It's pretty nice. They make good stuff, man.
Starting point is 00:08:15 I've been very happy with the Noctua stuff that I've used. But, yeah, I wanted something with a little bit of bling to it. Like, not crazy RGB stuff, but it's really pretty. Like, the deep cool thing on there is gorgeous. Yeah, I just like the water cooling just aesthetically, like how it just opens up everything so much more. That is what I wanted, dude. And it looks so good. And
Starting point is 00:08:33 with the fans, like the Noctua is like what I had, it covered up your RAM slot. So if you ever wanted to get in there and add more RAM, you've got to unmount everything. And I was like, I'm done with that. I want something that I can just stick in there and be done well specifically on that um chromo max the it's even worse than that because depending on this the height of your ram and everything you might not even be able it comes with two fans and you might not be able to fit
Starting point is 00:09:01 the second fan yep unless your case has enough room that you to fit the second fan unless your case has enough room that you can position the second fan kind of offset to the first. Yep. So, I mean, you're not necessarily getting the full advantage of where they wanted to ideally place it, but so, you know, like in the case of my son's case and motherboard,
Starting point is 00:09:24 he couldn't, with the RAM that he picked, he couldn't fit the second fan, which is like it feels like he just threw money away. Right. I mean, the whole point is to be able to to blow air across those things. But well, but I mean, you still have the other fan. You still have the single fan. But, yeah, that's the one thing that's kind of unfortunate about the way that you know it's wildly popular like eleven and a half thousand you know four point eight stars on you know eleven thousand four hundred reviews so wildly popular but yeah unfortunately it uh it it's just gigantic and it just depends on how you're gonna do it but also too some of the problem the problem with some of the water cooling is even though you can aesthetically like have this big open clean area. Right. Because you got to think about it from like even an airflow perspective. Right. That if you can have less things in the way, then air can move more freely throughout the case. Right. I mean, that's just me thinking, you know,
Starting point is 00:10:25 I hope logically, but, um, the problem with, unless you're going to build your own water cooling solution, you know, if you're going to buy, if you're going to use like an off the shelf water cooling solution, sometimes where that radiator has to be positioned relative to the length of a hose that is attached to the CPU mount and the flexibility of it and everything. It kind of, it's, it's almost unfortunate. Some, cause like in one of my boys, his, with water cooling but according to the manual ideally where you wanted to have the hose come out of the radiator i believe was on the bottom of so like i you know per the manual ideally you want to mount the uh radiator vertically with the hose at the bottom, right.
Starting point is 00:11:25 Go coming in and out of it. And, you know, in his case, he like, wasn't able to do that. So he had to position it where it was, um,
Starting point is 00:11:33 coming out of the top, which, you know, the whole point is to try to get like maximum efficiency in terms of the cooling. And already it was like, Oh, well we're already starting at a disadvantage where we,
Starting point is 00:11:43 we can't mount it on the top of the case because of the case and the motherboard, and we can't mount it where the hoses are at the bottom. So whatever. Yeah, it's all a pain. And you know, one of the other funny things is when I got the water cooling, I didn't even think, are the fans supposed to blow in or out? And so I had to look all that up because i'm i'm going through it and they're like oh you should really be pulling air in and i was like okay all right i can make that happen
Starting point is 00:12:09 well that also depends on how you're mounting mounting the radiator so like i have my radiator mounted on the top so my fans are blowing out pulling out yeah mine's on the front and it's sucking air in so yeah i don't it was again it's one the front and it's sucking air in. So yeah, it was again, it's one of those funny things. Like you get in there, you're like, I'm going to do this one thing. You're like, well, I'm in there might as well, you know, why be there? Yep. And that was, so when I built this one, that was 2019. So that was four years ago. I think that's me too. Yeah. I don't know. Cause I think yours was before that. Cause that year for the shopping spree, you bought, you were in the buy category rather than build. So, so I ended up replacing the processor later
Starting point is 00:12:57 though, because I think I told you guys, I screwed up and bent one of the pins on the processor. And it was later when things started using that that address in the cpu that things started crashing so i had to replace the motherboard and the processor so most of the components i still have there but um the the motherboard and processor are relatively new you bent a pin on the motherboard uh yes yes i was like how old was this processor that it still had pins on it no yeah the the mother and dude those things are so tiny so like i tried to move them back with uh with like some tweezers no man no didn't happen i'm surprised it lasted as long as it did though it went for a year and a half before it started having some like real like memory address
Starting point is 00:13:42 problems you know the shame of it though though, the really sad thing about the old school processors where the pins were on the processor, right? Those were perfect for little beard comers. Sad that those went away because they were amazing. What?
Starting point is 00:14:00 No, it didn't do that. Come on. I feel my hair with that. I hate having a well-groomed beard i like it wild you're gonna do it do it okay i concur well that makes this github actions thing weird then all right let's do it uh i also like things weird so let's do it all right so i'm gonna tell you a little bit about uh github actions i'm going to tell you a little bit about github actions i've been playing with it a little bit um i figured it'd be cool to kind of go over the major concepts and just talk about uh some of the experiences that happened with it and then i'm going to try
Starting point is 00:14:33 and convince y'all that it's like the best thing ever done and all right well episodes are over i think i think i think i'm going to be able to sell you on it um because it's the thing is it's not anything really amazing or new or crazy or different in the world. There's CI solutions, CI CD solutions from other companies, but it's some of the integrations and stuff I think are super cool, but we'll get there. So first, let me tell you a little bit about what it actually is. So it's a CI CD platform, by which I mean a continuous integration and continuous deployment platform that was launched in 2018. And it lets you define and automate workflows. We've talked about CI, CD, you know, a lot.
Starting point is 00:15:11 So I don't think we necessarily need to go in there too deep. But basically, it just means when I say something like that, I mean, when people check things in, it's responsible for seeing that something got checked in and it's going to kick off some things. It's usually going to do a build, maybe run some tests, maybe deploy some software for you. That's kind of like the basic definition of it and something that uh you know most places i think anywhere you're working it's probably gonna have nowadays i don't know about smaller shops it's been been a minute for me but i would think that most places would be doing this sort of thing by now if you're working in a traditional kind of software establishment right i think is that true i think a lot of places do i i mean one of the last conferences i went to or maybe it was a podcast i was listening to i can't remember somebody was talking about the very first thing they did when they set up a project was they set up all those
Starting point is 00:16:02 you know those things so i think i think at least developers are well aware of how much time and pain it can save them to do this stuff nowadays right okay man i mean if you're not in the year 2023 then we need to have a talk right yeah like good point if you're still like oh hold on we need to get a new build out let me boot up the laptop that does the builds because it has the certs on it. Yeah, or log into the VM where we have all the stuff set up. Yeah, just work on the server. Yeah, if you're using GitHub or Azure or any number of things now,
Starting point is 00:16:38 Joe's about to tell you something about it. Yeah, so chances are you're already probably doing some stuff like this. You might even be using GitHub Actions, but they are a new player so 2018 you know unless you started your project in the last five years uh then this probably wasn't even an option for you and you're probably using some sort of legacy system but i think most developers probably have a github account by now you know even if it's not for work you're probably doing something uh on the side of you just had to create one for one reason or another. Uh, it's probably, it's biggest competitor is, uh,
Starting point is 00:17:05 get lab CI and just, it's another solution that's like embedded in with the, uh, source control system. And there's been around for longer. I didn't look up when it, um, was started,
Starting point is 00:17:16 but it's, it's very similar. Like, uh, I looked at some solutions that had both and it was like, you can compare like almost like file profile. Uh, so,
Starting point is 00:17:24 you know, my first start looking at this, I was like, okay, it's kind of cool, but it's like other compare like almost like file per file uh so you know when i first started looking at this i was like okay it's kind of cool but it's like other things i've seen like we've talked about azure dev loss we've talked about i think circle ci or travel travis ci or there's other solutions out there um but this one i think is particularly cool i'm super jazzed about it because it integrates so well into github.com and no surprise also with the git paradigms and this is why i think or not i think i'm going to try and sell you on this solution over other ones because it's really based around git paradigms repositories branches tags pull requests hashes immutable ref logs all that stuff it's at its core it's built around git and i think that's really cool and it works really
Starting point is 00:18:13 well with github because guess what github is also built around those concepts as well i was i was just gonna say like going back to the competitor thing, you know, um, I mean, you eventually mentioned circle CI and things like that, but I was also kind of thinking like you mentioned Azure DevOps, but I was like, that was my first go to was like, Oh man,
Starting point is 00:18:36 Azure DevOps for the win. Cause it was still so fantastic in a lot of the features that I feel like Azure DevOps was ahead of the game compared to GitHub, at least just comparing those two. And there's now things coming over from Azure DevOps to GitHub. Like, you know, when you're reviewing a pull request, for example, like even the display of it, as dumb as it sounds to have that tree view on the left. Right. It's like,
Starting point is 00:19:06 why did that take so long, man? I agree. Yeah, I agree. Like, yeah, I wonder how similar it is,
Starting point is 00:19:12 you know, and, and there, some of the things where like Azure DevOps would like, because it, it would have your repo and your CI CD platform altogether. And, you know,
Starting point is 00:19:22 it could automatically do builds just like the GitHub actions. It, you know, Oh, Hey, if this, if this passes the, the build and all the tests,
Starting point is 00:19:31 go ahead and merge it and delete the branch. I don't care. Be done with it. Right. Yeah, totally. And that's, that's all the kind of stuff we're going to see here.
Starting point is 00:19:37 I think, um, as you DevOps and before that was called visual studio online, it had the concept of pipelines. I think that was what they called it. Oh, but that was so gross compared to what they eventually got to, though. Okay.
Starting point is 00:19:50 Yeah. Yeah, I'm curious to see how similar it is. So GitHub Actions. Action is like the atomic unit. It's the thing that actually runs a line. It's the smallest piece. Most of the time when you're talking about GitHub Actions, the product, we're actually talking about workflows. And workflows are kind of like this higher level construct that you use to orchestrate jobs, which are made up of steps, which eventually run Actions. And it can run on either GitHub virtual machines, which is the default, or you can even provide your own servers.
Starting point is 00:20:19 You can, of course, provide containers, stuff like that. But I thought it was pretty cool that they'll actually run stuff in your data center if you want. It'll just kind of orchestrate it. You just kind of base an image or whatever off their runner so it knows how to kind of communicate. But that was pretty cool for enterprising type stuff. And of course, GitHub has their own enterprise type product too, which is nice.
Starting point is 00:20:38 So this is kind of, I started getting excited here because I was like, well, this is kind of cool because this is something I can use on my own at home, my personal GitHub account account and then there's a chance you know my job's going to use this or my next job's going to use this or you know it's it's something that's uh at least going to be similar to other solutions because all these solutions are kind of similar so this seems like a good way for me to get my foot into devops which has traditionally been a really hard thing to get into. You know,
Starting point is 00:21:07 when you're talking about clouds and builds and that's all stuff that you kind of need to have an ecosystem around to even get your foot, you know, foot in the door or get your feet wet. That's the one. Yeah. I'm trying to remember though, the name I like, and I don't know why I can't think of right now.
Starting point is 00:21:20 It's like net something. There was a nut where like you could do free hosting and it could be tied into like as soon as you push to your repo it would do all the builds and then netlify thank you yeah like that's what joe got his feet wet with yeah yeah i love no they're still doing it and uh for sale has a product now um i think it's called for sale okay so let's build around next yes we'll put a pin in it but uh because originally eventually i'm going to want to know like what you thought of like that experience versus this one but we'll come back to that yeah great uh so uh github actions are free for standard github runners uh i think i got yep a note here so for a free account
Starting point is 00:22:02 you get 2 000 free, which is computer minutes. So if things run in parallel, for example, you're going to have to add those things together, and it'll tell you how much it's using. And I did probably hundreds of runs this weekend when I was kind of working on stuff. And I used like, I don't know, 200 minutes, you know, so nothing setting this thing up, which is really nice. So as a personal developer just working on a small project, I think that 2,000 minutes is going to be way more than you're going to need. And this per month? This per month.
Starting point is 00:22:30 This per month, yep. Okay. You also get 500 megabytes for free, which is not huge. The storage and that's for things that you can use for all sorts of stuff. But they have kind of a built-in solution kind of similar to Artifactory called GitHub Packages, which is another separate project, sorry, product from GitHub.
Starting point is 00:22:55 And it basically lets you host artifacts. So things like images, like Docker images, of course, but also Java jars and.NET DLLs, or if you want to use like a npm packages stuff again or just arbitrary file storage so you're saying this 500 megabytes is whatever the assets are that are built that you're trying to store yep okay so you can blow past 500 quick very quick i'm working on game stuff so you know my artifacts for a published bill is like 60 megabytes so that is uh 50 megabytes or 500 megabytes total so uh that just means i can't go over that so i just have to be careful about like deleting artifacts and replacing artifacts
Starting point is 00:23:37 rather than just having a long list of artifacts you know that's from my personal account if you're on a github pro account you 3,000 minutes and one gigabyte. So it's not huge. And then they've got some other pricing options there if you're enterprise and stuff like that. But I was just surprised to see how much, or I should say how little, the difference was between the free tier and the first paid tier, which is pretty cool. So here's a couple examples of things you might do with workflows. You can automate
Starting point is 00:24:05 builds and releases whenever a branch has changed and that could be either on like a push so like a commit for example or a pull request uh pull request obviously hasn't been committed yet but you can run that stuff and kind of run it on the side there and make sure it's going to work before you allow it in so let's you do like build gates stuff stuff like that. Running tests, linters, things like that on pull request, you know, or after. You can automatically create or assign issues. You can assign, you know, labels to issues or issues to people. You can make updates in a wiki if you want to for some reason. Remember, GitHub has pages where you can host a website based on github and it's backed
Starting point is 00:24:45 by github okay works great so but based on your experience with this though um when it comes down because like okay so everybody's going to have their own build chain right it's nice to say like you could simplify this thing for things like a javascript or whatever where it's like you know node based or something like that but you know when it comes time for build chains where it's like well i need this very specific version of java uh i want this version of spring or whatever like that's where i'm assuming correct me if i'm wrong that the the container you know where you the the container that you said you could build your own image off of their image and they could run a container to do it, right? But was that only for if you were going to run your container locally?
Starting point is 00:25:36 You could specify here's the Docker image I want you to run whenever you do the build. Yeah, so you can say here's my. I want you to run as this container. And so that job runner is going to run as a container. But, you know, what surprised me is it's actually, there's three other operating systems you can do like Windows, Linux,
Starting point is 00:25:55 or something else. I think it's two different kinds of Linux. So you can say, I want my runner to run on Ubuntu latest, not even a container. Why would you want to do that sort of thing? Right? We love containers. Well, it's great for things like those issues I mentioned or automatically closing stale issues in GitHub. I mean, you can make a container if you want to,
Starting point is 00:26:17 but if you've got like a one line bash command that you want to run as a job, why bother creating an image? You can just create a workflow for it, throw it in there, run it on Ubuntu dash latest or whatever specific version you want and you're done well i guess what i was trying to get to is like those times where you have a very specific tool chain yeah excuse me but like you know um okay let's pick on our old friend um you know let me introduce you again to mr extjs over here like if you wanted to do something like that right if you had you because it has its very own specific builds that's why i was asking like that but yeah okay i get it yeah so you know of course like you know containers super powerful you can do what you want but i'm kind of curious about this uh so i'm going to
Starting point is 00:27:02 check it out so if you go to github.com slash marketplace okay right and you know i love docker i think docker is a new get it's fantastic but i'm going to search for apps or do you love containers i love both uh i do love both docker is great even though sometimes i worry about them okay so this is these are all the things that you can do with github actions in in the marketplace yeah this is the marketplace and the marketplace is kind of a weird term for it because i have yet to find one that you can pay for even if you wanted to xdjs does not exist there it doesn't have one which is uh surprising to me so i thought maybe they would publish one they should sensha uh the company that owns them now uh should absolutely create a gith GitHub action for this because it makes sense.
Starting point is 00:27:48 I'm going to search for React because I'm sure somebody's done this. Oh, there's lots for React. Yeah, I should have probably done one that's less than. Oh, my gosh. I'm going to search for React build or something. Maybe I just remembered the name wrong because there's the Azure pipelines that's like front and center on the GitHub actions. But I could have sworn that was the older name of the Azure DevOps one. I want to go back and find out.
Starting point is 00:28:15 I'm just going to search for Angular because I found it easily. So if you search for Angular, then there are a bunch of actions for Angular. And a bunch of them are kind of similar, so defining the one you want is going to be a challenge because I'm seeing 18 results. So I'll just click it on the first one. What this is is that this is an action. Remember I said action is the kind of small, most atomic unit
Starting point is 00:28:39 that somebody else has created that lets you specify arguments like your version of Angular. And behind the scenes, they are maybe using Docker. Maybe they're just installing everything you need on that Ubuntu latest VM. Maybe they're doing some stuff on a server that they're hosting in their own data center. All that stuff is up to them. But somebody has taken the time to put together an action that presumably does what it says it's doing. In this case, the Angular build, which is pretty nifty.
Starting point is 00:29:10 So, you know, I wouldn't trust somebody, some random person's Angular GitHub build. But if you search for Docker in the marketplace, see here, Docker has a big checkmark. They are a verified creator, which basically, you know, GitHub's taking the time to give them a special checkmark. GitHub has all sorts of, sorry, not GitHub. Docker has all sorts of interesting actions for things like building images and publishing images to repositories things like that all sorts of different stuff that you want to do with docker they have uh things that they've set up for the actions set up for that you can reuse which is really nice
Starting point is 00:29:54 so that is pretty cool to me the whole marketplace thing is pretty nifty but um i think we're kind of jumping ahead a little bit just because it's like you know that's what we do that's what we do that's right this is episode 218 i mean come on you know yeah you know by now i do like though that like i mean okay so going back to the pipeline thing i i guess i was wrong there because it does look like i did some other searching and you know azure pipelines code is pipelines and things like that so um I guess I was just remembering that wrong, but this does remind me similarly to what we were able to do in Azure DevOps where you're like, Oh,
Starting point is 00:30:34 let's what's available. Like what are other tools that are available that I could just like bake into my, my pipeline here, I guess technically like even for example you know jenkins has a similar concept too with plugins that you can add in and there's like a way to like to to search like what plugins are available that i could like add into the yep process that's uh the gist uh just about you know the marketplace and how it works
Starting point is 00:31:03 what i really like about it though is in marketplace, if you click on any of those actions, every single one of them takes you to a repository. And the repository has the documentation in the readme, and it usually has releases. It's got tags, stuff like that. But, I mean, it's a GitHub repository. So the work might be done in some other server, and can't really see you know necessarily you know the work's being done although every single one i've looked at you can see it right there in the repo so it's essentially open source you know um but what's cool about is this is git right git is immutable you can't go back in time and change a commit hash to point to some other file contents or something like that
Starting point is 00:31:44 right if you have the commit hash it's always going to point to some other file contents or something like that, right? If you have the commit hash, it's always going to point to that content because it was generated from that content. Hey, so real quick, real quick, you said it takes you straight to it. So what I saw is, so I clicked on Docker Scout just as an example here. It didn't take me to the repo. It looks like it took me to a page that was basically the readme. But over on the right, it does have a link straight to the repo that has all the code in it. So you can see exactly what it is. And it is the same readme. So it is a link deeper, but it does look like it's, you know, you can get straight to the code so you can see what they're doing.
Starting point is 00:32:20 Right. Like nothing's hidden from me. Yeah. Which I really like because it means everything that I've looked at has been one click away. So I'm sure there's somebody doing proprietary stuff, but I haven't found it yet. It depends on which one you're looking at because the apps are different than the actions. And apps are not actions. You cannot use apps directly in your workflows.
Starting point is 00:32:41 So that link that Alan's referring to isn't on the right, is what I was getting at. No, mine was. Mine was Docker Scout for action. Yeah, and I'm saying for an app, if you go back to the slash marketplace, you're not going to see that link there. Yeah, you can't get to the GitHub repo because it looks like it's behind a paywall. I'm looking at the circle ci one but an example i want to like go back and just uh very specifically you know your comment that you were talking about about get being immutable so in going back to like our our friend uh that we greatly miss, Azure DevOps,
Starting point is 00:33:28 where you were doing all your pipeline in YAML there, and you could very specifically specify the version of any given thing that you wanted to use, right? It looks like, if I'm reading some of these examples too, it's almost the same syntax as the Azure pipelines at, you know, YAML. Which makes sense, right? It's all about Microsoft. Both of them. Yeah.
Starting point is 00:33:55 Where you're specifying like at and then the version number to pin it to a given version, right? Yeah. And that corresponds with a tag. That's not the only way you can do it. So you can do the at and V for whatever they call the tag. You know, the, the name is up to them.
Starting point is 00:34:07 You can also do a commit hash and say, I'm using this commit hash for this action right now. Yeah. I thought you would like that. And you take it. You don't even have to tag it. It can be a work in progress. Well,
Starting point is 00:34:19 cause they can delete the tag and retag a different hash if they really wanted to be evil. Right. Especially I was thinking like where my mind went to this was like, okay, if I use one of these tools from the marketplace, right? And, you know, because like the build chain now from a security point of view is under more scrutiny than it used to be in years past, right? And you don't want attackers to be able to get into your build chain. So if I'm the attacker, the first thing I'm going to do is like, okay, let me get some tool that's already in the marketplace.
Starting point is 00:34:52 That's either widely available or let me like, you know, put something out there that looks real. And now I'm going to inject something into that. So that's why I was kind of curious about like, okay, how can I be sure that like, this is the very specific thing, the action version of the action that I want that can't be, um, you know, changed without my explicit consent of changing it. So, you know, by using the Shaw, like you mentioned, then, you know, that, that can get me there. Yeah. And I love that because, um, the Shaw is some new made up concept, you know,
Starting point is 00:35:25 whatever that they kind of introduced for this. Like we understand what that is. Like we know how to go check out that repository and look at that shot and pull up that commit and see when it, when it happened, who did it, you know, what the circumstances were,
Starting point is 00:35:36 which is really nice. So if you look at like, I think Docker's examples for their GitHub actions, all appointed to specific commits. So like, this is the commit to this example works for, and it's always going to work for this example because it can't change nobody's going to go and update you know you can't it literally points to this and it's always going to point to this if we make some change in the repo or something then the commit might
Starting point is 00:35:57 not be there they can delete the repo but this is going to work so i thought that was really cool yep uh agreed and you can also if you know on the flip side if you're like you know what i uh so I thought that was really cool yep agreed and you can also if you know on the flip side if you're like you know what I I don't I want to get the latest security updates so if docker changes how they do a build in a minor point
Starting point is 00:36:18 release then I want to get those changes then I could do it supports semantic versioning so I can say just give me at you know v v4. And if they do a.4, or sorry, 4.11, 4.12, 4.13, I will constantly get the latest minor version of it. I love poking around here and seeing like some of the companies and people that have actions out there.
Starting point is 00:36:38 Of course, Datadog has an action out there. They are everywhere. Yeah. It's amazing uh so um you know as for who uses actions and uh if you're going to set up your actions and you want to kind of get some ideas of like what kind of stuff you might want to do i i took a look at a couple repos uh kubernetes doesn't use it um but typescript does and typescript had a pretty nice setup i looked at vs code uh their the repo and uh it was a bit of a mess uh actually it was like there there was a bunch of uh workflows and stuff that
Starting point is 00:37:11 they weren't using anymore they've been broken for months and stuff like that so i was kind of surprised to see that but um the cool thing is if you go to any repo uh actions is a top level tab it's just to the right of pull requests. Oh, yeah. So you can click on actions for any repository. And if they have any actions, you're going to see them there. So TypeScript has a bunch of them. The first one that caught my eye was CI. So I clicked in there
Starting point is 00:37:35 and now I can see how TypeScript does their builds. And the last one ran 24 minutes ago. It took 21 minutes. And the last one ran 24 minutes ago, it took 21 minutes. And you can click in there. It's, remember, this is all tied in tightly integrated with the source code. So I can click from this job to go see the actual details of the run. But I can also click on the file right there. And in this case, it's ci.ymll all your workflows have to be in a magic folder that's underneath dot github in a folder called workflows so you know if any repository has workflows this is where they're going to be so now i'm looking at their ci.yml file and i see what they're running
Starting point is 00:38:20 now it's made up of a bunch of uh you know different jobs and you kind of have to click around to like read everything because it's all you know it's all connected but you can see the versions uh how it's set up today on the file but also for any run so i can go to a run that happened last week and see uh you know just directly like what version of what job what action was run and i can click on that and go see the repository and go look at the actual code that was run which is really cool and it's like with get ops you know we've talked about like being able to go back and introspect and see exactly what happened so if you know build 48 worked but 47 didn't or you know 49 didn't we can go look at the one that didn't compare it and see very precisely what changed,
Starting point is 00:39:06 which is very cool. And that's the kind of stuff that we're used to with like source control, right? And this is so tightly integrated and just built around the concepts of Git that that stuff just kind of comes along for free. And of course it works because this whole thing is built on Git. Yeah. I'm already loving everything i'm like poking around at some of these and i'm i'm already like it reminds me so much of what we were doing back with um azure devops and the pipelines there i feel like the three of us we had to take a step backwards in our cicd processes because yeah we really did love azure devops like we we were taking full advantage of it i feel like and we had to take a step backwards and um this looking at this this feels very
Starting point is 00:39:55 familiar it felt like syntax two to three yeah they were like two to three years ahead of what like github was doing right like github has started getting all the glorious things that that were in azure devops it really felt like microsoft was like hey all the cool ideas let's let's play them out in azure devops first and let's not let's not change github because the world loves it as it is so let's like try all these crazy cool features over here and then like you you know, well, I hate to say the cherry pick cause I don't want to confuse it,
Starting point is 00:40:28 but you know, uh, selectively implement those similar features and, and get up. But I mean, I, yeah, these,
Starting point is 00:40:37 the syntax looks so much like what we were doing before. I think about the front, like a business sense, like what Microsoftrosoft has managed to do is they've taken the most popular uh get you know repository hosting service in the world all these projects have been hosted there have been for years and suddenly they've said hey here's a really great ci solution that you can use and if you need to pay for extra minutes we're here for you and if you want to host your own you know, we'll make it easy for you. We'll play nice. But, uh, you know, we're here for you
Starting point is 00:41:06 if you want to spend some money. And they, so it's like just overnight, they turn this thing on and suddenly they've got a huge list of customers, you know, potentially lined up to use their product and they made it really easy to swap over. Well, I think what's awesome is you said that, and correct me if I'm wrong wrong if it's a public repo you basically get this stuff for free yeah right so so you can like if you're working on an open source project and you don't and you don't have a bunch of automation already or you do and you want to simplify it maybe you just start moving over to this right um if you've got a private repo obviously you're going to pay a little bit more but but i mean just imagine having something like this set up as opposed to having set up your own
Starting point is 00:41:49 jenkins server and all kinds of other things to to do all this right like it's already there they have all the tools it'll probably be cheaper in the long run just to use what they have yeah and it kind of makes sense like if you're already invested in github and you're bringing on some new maintainer or something for your open source project for example it's kind of things that you have to say okay well here's we've added you to the github organization now we're going to go add you to travis ci and now we're going to go add you to the google group so you can see our documents and stuff like that like no screw all that like github gives you issues it's got the repository stuff built in like the artifactory type behavior with github packages uh it's got the wikipedia built in it's got the repository stuff built in like the artifactory type behavior with github packages
Starting point is 00:42:25 uh it's got the wikipedia built in it's got the releases built in for downloads it's got github pages for hosting simple you know documentation type websites uh it's got the cicd solution why wouldn't you just stay here yeah you got everything you need yeah yeah but also the more that they can do to make it like the default go to like the de facto standard right like you're not going to okay let's let's change it out right like if if if jay-z and i have a construction company and we hire Alan, he's going to like, whoa, whoa,
Starting point is 00:43:07 whoa. Use a Stanley hammer. No, no, no, no, no. I,
Starting point is 00:43:11 I insist on my Husky, right? Milwaukee, my man. Milwaukee. So, so yeah, see,
Starting point is 00:43:18 see, see what we started. But if it's, if it's a, you know, if they make it to where it's like, everybody's just familiar with this pipeline, right? Then it's like, well, why wouldn't we do this? So I was curious.
Starting point is 00:43:31 So in the background, I was searching for just trying to compare the Azure DevOps pipelines. And yeah, I was so right about the similarities between even the UI. I'll throw a link out here for you guys to see there's some similarities in the UI in the Microsoft documentation, similar to the GitHub actions UI. Like when you see like the results of it, right? Oh yeah.
Starting point is 00:43:59 It looks identical just about. Yeah. And then, and then check out this link here where our old friend, the Azure Pipelines YAML, right? Minus the tile, right? Like Windows is all about the tile. GitHub doesn't do that. So they styled it different.
Starting point is 00:44:17 There are some similarities in the styling, I thought. But the point being, like like you look at that look at that azure so so if you're already familiar with the azure pipeline yaml for your workflows then you moving over to github actions is like no brainer okay like i i've got to interrupt this this thing for a second because it's been in my mind ever since you guys said the nasty word YAML. What do you guys prefer? Configuration stuff all seems to now be leaning towards YAML, right? Kubernetes is all in on the YAML. I mean, there's so many things. Even Spring, you can do your properties files in YAML what do you guys prefer do you prefer json or you prefer yaml i'm a yaml dude now are you really i don't know when it changed but yeah i and like i
Starting point is 00:45:14 know sometimes it's gonna bite me i'm gonna have spacing off and it's gonna do something i didn't expect it and it's gonna take me an hour to figure it out and i just have to accept that and it's gonna be an ambiguous error right like there's going to be nothing that points to what the problem is at all yeah yeah what about you all like if you if you had your druthers would you if if somebody was like hey we need a configuration file what are you going to do are you going to go json are you going to do a line by line properties file or are you going to go yaml because going to do a line by line properties file? Or are you going to go YAML? Because those are really your three. Well, I mean, I guess you could go
Starting point is 00:45:49 XML, but nobody lives in that world. So, so by properties file, you mean like just name value pairs kind of thing. Yeah. Yeah. Or, or, or, you know, basically what, what JSON and YAML allow you to do with arrays and objects and all that kind of garbage, like what is going to be your knee jerk reaction to what you're going to do? Okay. So my, my answer is more complicated than Jay Z's because you know, if, if you had a small app,
Starting point is 00:46:13 the name value pair is good enough. Like who cares? Right. Okay. I do like the hierarchical kind of approach that YAML and Jason can get you. However, I prefer the structuredness of JSON compared to the YAML because it's too easy to like, you know, I'm not crazy about white space as a strict format right right um so yeah that's just it's more obvious to
Starting point is 00:46:50 me when like oh this is an array of things um you know versus in yaml like you look at the first time right wait what happened oh you know you eventually get used yeah like i mean you know jay-z's like this is all old hat to him like whatever but and the only real advantage that i could think of if if you know if i were put on the spot i would say like well i guess technically yaml is fewer characters because you don't have to have like the brackets for the array and the curly braces for the objects and whatnot but But how much YAML am I expected to write to where, like, that benefit is going to really pay off? And maybe if you're at, like, Google scale in terms of how much YAML you're writing,
Starting point is 00:47:34 then it pays off. But I don't know. I don't know. I really don't understand how that's the thing that took off. Yeah, I mean, you know, what's funny is for me, if I'm writing something, I prefer it to be JSON because I can put, I know exactly what I have in my array. I know exactly what I have in my object. It's super easy. If I'm reading something, I kind of prefer YAML. So it's, you know, and to be completely honest, they're basically just copies
Starting point is 00:48:04 of each other, right? Like, I mean, there's so many translators out there to convert back and forth because it's just different syntax for the same outcome, right? So although I think YAML in its language specification has additional garbage built in, right? Like the thing where you can copy blocks and reference blocks and all that. So it's actually, I guess, technically a little bit more powerful. Are you going to start writing your logging output in YAML? That's a good idea. You're going to do it in JSON.
Starting point is 00:48:37 I don't miss the quotes, though. You know, it's pretty common to not have quotes on strings, but that will also bite you sometimes. Totally. There are mistakes that are related to that. I mean, how many times you, have you updated the YAML file and you're like, you put true in there and it's like, oh, it needed a string. Doggone it. I got to go back and do it again. You know, I mean, I don't know. I think that's what's so frustrating. So at any rate, I'm, I'm off my derailment. We can get back.
Starting point is 00:49:00 And all the linters are like, you have to quote the property name as well in json which is like why yeah you don't need that json shut up yeah yeah so uh just for fun i took a look at like some of the biggest repositories on github and i went to react so facebook react and looked at the repository and they do have actions they also have circle ci so a circle ci clicked on the file there and it's cool that you can go see circle ci and you can get some information about how they run things but ultimately this circle ci config.yaml just shows job configs it doesn't really show how it's built how it's organized you can kind of figure out some stuff but ultimately it's a you know configuration file but you go at the workflows, and they're not doing very much. It looks like they're basically publishing the artifacts on GitHub for releases.
Starting point is 00:49:49 So if you wanted to come download React from GitHub for some reason, they're there. And they got some stuff for issues dealing with closing stale issues, stuff like that. But what's nice about it is I actually see line by line, script by by script what they're doing so if i was writing the next big angular you know competitor view competitor whatever i can go look at uh and not even necessarily competitor but just a similar product i can go look at how react does their issues how they deal with uh their releases and you know go see it and that's something i i didn't get from azure pipelines because i couldn't really go see other orgs and see how their stuff was set up you know it wasn't public um there probably was a way to make stuff public but i never saw one so it's just kind of cool like the kind of how well it fits with like open source kind of nature so like i could probably find some open source game on here
Starting point is 00:50:38 for example if i wanted to make a game pipeline uh or sorry game workflow i can go find some game on here and see how they do it. And it's nice. And you can go click on actions and see the last time it builds, see what the output looks like. See, you know, does it,
Starting point is 00:50:52 does it happen on every commit? Does it happen on a nightly schedule? How do they handle nightly builds? Like how did they handle betas versus alphas versus releases? You know, it's pretty cool. You'll be able to like really have insight into how the organization works and see it encode and versioned.
Starting point is 00:51:11 So. Yep. So we're still in the intro. Well, we've talked about some of those. We're going to just kind of run through it pretty quickly. So we said workflows are the kind of highest level concept. Basically, a workflow is going to be triggered by some sort of event so this is going to be like a push pull request uh issue being opened there's actually
Starting point is 00:51:30 a ton of them you can schedule it to run every night you can have a manual action if you want to give someone a button and maybe even take a couple simple fields you can say uh this one takes a boolean and a number and you know force the user to have, to enter some input and it's validated. So that's all cool. Some of the issues we've, or the examples that we've talked about, you can also see in that TypeScript repository I mentioned.
Starting point is 00:51:56 So, you know, CI does linting, checks builds, just publishes, stuff like that. Still issues. It does code scanning. So on pull request, push push and also on a weekly schedule like every night sunday i think like 1 30 in the morning it runs uh some stack analysis on typescript which is pretty cool publishes results uh can fail a build and so it can block a pull request if there's something bad enough in that stack analysis which is cool i thought
Starting point is 00:52:23 it's interesting that they also ran it on a weekly schedule i don't necessarily understand the benefit of that since it seems to be running on every push um and pull but whatever uh they also do a nightly build which is pretty cool and that's something that's kind of common for people to grab so like if you're working in say qa or something it kind of makes sense for you to grab last night's build and everybody's kind of in sync with the version that they're testing and talking about your your weekly thing though like you might be building on commits and everything for the uh you know when prs are pushed and whatnot you know as part of a build gate thing but that doesn't necessarily mean that those are the artifacts you're keeping so you might still publish a nightly artifact so you still want to do like a nightly build or a weekly or whatever your cadence is that's a really good point there
Starting point is 00:53:10 could be some if down in there it says only publish the report or only send the email if it's the the scheduled run stuff like that yeah we used to do things like that too like especially like don't publish the pull request artifacts who cares about those right you know but you might care about those i don't know what your use case could be you might be jay-z's weird so whatever yeah i am uh there's uh i do have a little section here on kind of miscellaneous things i wanted to mention but i did uh want to mention that they do kind of have some like almost like a scripting language built in so you can do things like conditionals and stuff like that um you know just all basic stuff so you don't have to bust into bash
Starting point is 00:53:45 and pass around inputs and outputs if you need to lowercase something, for example. It's got some limited support for that. But it handles basic stuff like that. So you can do your conditionals and checking, stuff like that. I wanted to mention too, when you're calling,
Starting point is 00:54:00 workflows can call other workflows, whether your own or a repository that you have access to, which could be public or it could be something else in your organization. You can have a lot of control over that. But you can pass that version either as a tag or a commit hash. We already talked about that, but I just really like that. I really appreciate i mean this is definitely a carryover from azure devops where like the filters that you could put on the branches that you wanted to apply this pipeline to right it's the same as what uh azure pipelines has nice that part i mentioned
Starting point is 00:54:41 i mean like other platforms have something similar to that but this one was just so much nicer in my opinion yeah good times uh the ui so i mentioned that kind of the filterable history of how things look which is nice you can click on it to go see the exact version i'm sure we've all worked in times uh experience times where you're like working in between two different tools and so you're like okay so this is the build that ran in jenkins so let me go back and find the commit hash and okay now let me find that commit hash and github or my local okay and what pull request did that come out of okay and who approved it you know all that sort of stuff like a lot of that junk just goes away when the stuff's just linkable and right there so i love that i'm already
Starting point is 00:55:19 in there it's one tool you know so i thought that was particularly cool about kind of having that history and that stuff just in a tab in the website. Hey, so what else is kind of cool about that? So I'm not logged in to GitHub right now because, you know, I just had to redo Windows and all that stuff. So I haven't logged into everything, but it looks like you could actually see the details of what happened in the workflow. So it shows you the steps like in Azure DevOps, right?
Starting point is 00:55:41 Like it did this step and then this step and then this step. But it said, hey, if you want to see the log output, then you have to log in. So, I mean, it looks like you'll actually be able to see like the details of the steps that all succeeded in that workflow thing. So that's pretty sweet. Yeah, I didn't know it even made you log in.
Starting point is 00:56:00 I have been logged in, so I didn't know. But yeah, I've been clicking into like TypeScript, for example, and like looking at the output of of their playwright tests and stuff. It's really cool. That's excellent. That's all stuff that's in the repository anyway. So theoretically, you could have kind of found that stuff yourself. But there's something cool about seeing the actual output of the run
Starting point is 00:56:18 without having to spin up the repository yourself. Let's see here. Sorry, I clicked away. So yeah, we mentioned that workflows can call the workflows. Jobs are the next level of indirection. So generally under a workflow, you're going to have a nested jobs and jobs. The special thing about jobs is that they are associated with the single runner, which is that machine. So either that runner is going to be Windows-latest or Windows 95 or whatever versions they support, or you can say use my container that I've built
Starting point is 00:56:51 and I'm giving you access to somehow, or you can say here's my remote machine and here's how you authenticate to it. And then the job is just really a kind of a holder for those steps that run. And each of these steps are going to run sequentially each step is made up of an action but it's the important part is that they're going to run sequentially and they're all going to run on that single runner the jobs can have dependencies so
Starting point is 00:57:14 you might have a job that does your build and job that does your publish and the job that does the publish is dependent on the job that does the build obviously you can't have those run at the same time i'll think about something yeah at law at law looks like he's he's about to burst with with love and joy i'm so excited knew it but why so another like reason for like why to use this thing it's integrated to the github command line so you can you can github like run and list all the workflows or view the workflows rerun a workflow so you're talking about the the command line that you mentioned some gh yeah the command yeah no not odd well i mean no some odd episodes back.
Starting point is 00:58:06 It's been a while back where you were saying, hey, install the GitHub command line instead of just the GitHub tools, and you'll get access to some additional features. So that's what you're talking about. Yeah, it's part of that. Yeah, I think I wonder if that release that command line tool was actually part of this greater strategy. And they just kind of rolled that out first because they, you know, why not? Cause you'll see a lot of the examples of stuff are actually using that GH to do things like say example,
Starting point is 00:58:31 you could have a workflow that assigns that onboards a new email address, that's them up and get hub associates them with whatever repositories you select in the dropdown and, you know, gives them a picture and tags them with new user or something like that. So, you know, you can do all sorts of cool stuff with that GH. Yeah, it looks like that was episode 194, by the way, or at least that I've mentioned it one time.
Starting point is 00:58:55 I've probably mentioned it several times. But yeah, cli.github.com if you're not already using it. You're crazy. But, I mean, it goes to the point of like, if this is already the place that you're crazy but yeah i mean it goes to the point of like uh you know if this is already the place that you're at right like the more you're already going there to like merge your your code and whatnot and check out code or whatnot now you can view the status of builds and see your build in progress and you know block your pr already like all in the same place and oh by the way if maybe you prefer to do all your pr
Starting point is 00:59:25 management from the command line using the github command line i see a lie then oh yeah by the way you can still do all that same management of the of the build process from the command line so yeah i'm super excited about that yeah it's really's really nice. And one thing, I had this in the miscellaneous too, so jumping ahead once again. So when you fork a repository, by default, you've got a connection back to that fork. So if you fork Firefox, for example, and you go to your version of Firefox,
Starting point is 00:59:59 it's going to have a little link at the top there that says, hey, this is forked from whatever. And you can break that link. You can go in your repository, remove the or whatever it is uh that kind of like shows that linkage you know it's it's not really it's not a hard whatever it's just kind of a convention but uh there is another config i forget what it is exactly but you can mark a repository as a template you've already seen this uh github uh it's a github thing seeing say that my hub my repository here is a template and what that means is it's designed for people to uh fork it and run with it without
Starting point is 01:00:33 pushing back to your original so this is something like i ran into a lot with github actions where like you know i keep bringing up games that's because i was that's what I was messing around with. I saw somebody set up a Godot CI CD solution that would watch your repository for changes to your game. It would build your game. It would build it for Windows and Mac and Linux and web. And it would publish it to wherever you had set up for publish like Itch or maybe Steam or whatever. Obviously, there's going to be a bunch of configs and stuff and you know things you have to kind of pop in there but someone just set this repository up as a template because it's literally meant to for you to go check out and then hook up for your game and kind of pop your game into it like almost like a framework or something
Starting point is 01:01:17 so i thought that was really cool and that's something that's not it's not built into git that way but it just fits so naturally uh with with the Git mechanisms and the way it works. And if somebody updates that repository, maybe you want to pull those changes in. Maybe you don't. I don't know, but it's an option. Okay, so I was going to ask that. So what you're saying is with a template, let's say they have a bunch of automation set up for that template. You fork that, you automatically get all that automation in your project. However, if it was just a regular Git repo, you forked, you know, somebody, you know,
Starting point is 01:01:49 I fork your Jay-Z's awesome game. I forked that. I'm going to get your code, but I'm not going to get any of the automation because you didn't have that thing designated as a template repository. Yep. And so it's like some dumb stuff too. Under the actions, if you go into settings and actions are two new things that are there, there's variables and secrets.
Starting point is 01:02:09 So I think that if you do a clone that you'll get the variables. And so that's in design for just kind of configurations. Like, do you want to publish to itch or do you want to publish to steam? Like true, false kind of stuff where secrets is going to be things that are irretrievable once you put the data in and they also get masked in logs which is really cool so github is uh is really good about the workflows actually know whenever secrets are being used and they know to mask those values so they're
Starting point is 01:02:34 promising you those are never going to show up in logs which is nice when you're running an organization you don't want your keys being leaked out and logs that anyone can see on the internet i put a couple example uh command gh command line options that integrate in with actions for like cache and running and workflows oh that's so yeah oh you know i i didn't uh so i mentioned um everything is an action this is next up actually so i'm not jumping ahead so everything is an action so uh when you clone a repository uh that's an action if you want to pool check out uh you know a repository that's an action so github has a bunch of built-in actions for things like that that revolve around things you would do on github uh and that's all in the repository under like i think it's github.com slash actions and there's like org level stuff um so if you can
Starting point is 01:03:27 go look at the checkout action and its version i think they're on version four right now so you can use v4 at v4 you can use a specific commit hash if you want and what they've done is they've basically put a wrapper around get checkout for you and does some cool things by default like it i think it does like max depth one by default and it's exposed a couple variables that you would likely want to change so maybe you say i'm doing this checkout for some specific reason so maybe i want uh to do a sparse checkout or maybe i don't want to do a sparse checkout maybe i want more depth maybe i want less depth so it's, it's done things in a smart, uh, smart way by default,
Starting point is 01:04:06 but it's also exposed easy parameters for you to change. That would, you know, be likely to need to be changed when you're doing stuff like this. So I'm not sure. Okay. So I don't expect you to know the answer and I'm trying to like poke around and see if I can find a quick answer.
Starting point is 01:04:24 Cause like we've mentioned enterprise level a couple of times, like you don't expect you to know the answer, and I'm trying to poke around and see if I can find a quick answer. Because we've mentioned enterprise level a couple times. You wouldn't want your keys being exposed in enterprise or whatever. But this exists in GitHub Enterprise. So you might be running your own on-prem instance of GitHub for your organization, and you could still take advantage of these. But then the question that I had come to mind is like, hmm, how does the marketplace work in that scenario? Right.
Starting point is 01:04:50 Oh, yeah. Yeah. I mean, that's a good question. I think you want to be really careful what actions that you use because you don't want to be exporting your stuff. Oh, but I will say so there are permissions And by default, all jobs that you call only have read content, which gives them access to everything that's in your repository. But they don't have access to secrets. They don't have access, I think, even to configs.
Starting point is 01:05:18 I'm not sure about that. Or sorry, variables. They don't have the access to issues or users or a bunch of different stuff so anytime that you call an action that needs to do that sorry you call a job it's done at the job level you have to specifically grant it the permissions that you wanted to have and if you don't give it the permissions that you wanted to have and you run it and it doesn't have something it needs you know it's going to crash i i would be pleasantly surprised but um i'm going to assume that if you're using github enterprise that you you don't get to use a marketplace so i'm looking like you're
Starting point is 01:05:52 because you're already taking on the effort to like do it yourself i would assume no so i'm looking and they have uh actually let me drop the link in here it looks like there's at least a way to do it so i just dropped a link there and if you go i guess about midways down the page yeah we got lots of links in this one um it's all in line 74 if you go down about midways down the page you'll see part five integrating with github so it sounds like they have some sort of ability to hook up github enterprise on-prem with public github and if you set up those connections then you'll actually have access to the github marketplace so it my guess is is something that you have to do explicitly to make this happen but yeah so by default you're not going to get it
Starting point is 01:06:45 it would be my assumption yep but because then like i don't know i'm just thinking about maybe i'm thinking of this from like my security uh hat is on a little too tight and you know it's covered over my eyes because i'm like okay well you know if i'm well, if I'm going through the trouble of running my own GitHub Enterprise instance, then now I'm going to let you get some external marketplace actions? Probably not, right? I'm probably going to lock that down to where you can't do that. Well, I don't know. Let's think about it in terms of what it's probably doing. Right. So the whole reason you'd even run GitHub enterprise locally is so that you don't have your code out in the cloud somewhere. Right. That's, that's more or less it. Right. are basically repositories, right? Like that was one of the selling points that Jay-Z was saying up front
Starting point is 01:07:45 is you can actually go look at the actions. You can go see the code that they've got. If those somehow can basically be replicated locally and then run. Oh, they run in your runner. Right. So if you look at the GitHub checkout action, for example, all it does is run GitHub,
Starting point is 01:08:03 you know, get checkout, passes various args, does some plumbing for you. Right. So it might be an outlaw. I'm totally with you on the on the security hat, but it might be that these things are innocuous enough that you feel OK saying, hey, I want to be able to run this thing. And it might even mirror that repo down to your, your local enterprise setup so that you can have access, I think, and without having gone and set it up and looked at all of it, but it would make sense for you to be able to basically say, Hey, I want to use this action. It will use that repository code. Maybe you lock it in on a version and then that way you're guaranteed that, you know, Hey, this thing that I'm running is exactly what I expect it to be. Yeah. I mean, maybe I just
Starting point is 01:08:51 totally, I mean, it's, it's speculation because we haven't done it, but it, it's cool that they have the link there. I can see where maybe have blessed very, very, very specific actions down to, like, here are the permitted shots. These are the versions of those actions you get to use, right? Totally. I mean, it's cool. It's cool it's cool i don't know what the steps would be but it's pretty awesome that hey if you guys find an action out here that is going to make things extremely easy for us in our on-prem world let us take a look at it and then we can approve this
Starting point is 01:09:38 thing and we can use it right like that's pretty sweet yeah i want to go i want to go to this let's yeah yeah i mean it's pretty nice let me open up jira real quick on convert issues i know right yeah but baby steps hold up hold up so i actually kept my mouth closed earlier on this right like because in your mind as a developer you're like well why we need jira right like i don't need jira anymore but we got to keep in mind too typically when you're talking about a github ticket it's very code specific right like it's not project or maybe it is i i don't i haven't done much in there but every ticket i've ever seen has been you know there's a bug here we want this feature here as opposed to project planning type stuff i mean zero definitely has so much more in custom fields custom labels and the filters and you know i don't i could do
Starting point is 01:10:31 a little less of that stuff i'm saying i mean i don't know that you have to that again going back to azure devops like this is all stuff that azure devops had years ago. Right. Right. Yeah. So like it was literally like a competitor to Alassian and Jira at that point. So I don't know. I mean, you could write whatever your issues are in either. Yeah. Are you going to have epics and all that?
Starting point is 01:11:01 I mean, I know that Azure had that stuff as your DevOps or was it as your DevOps that had Azure DevOps? Yep. Azure DevOps had it. Okay. Yeah. Yeah.
Starting point is 01:11:13 I mean, I'm looking at the documentation for the GitHub issues on it and like I'm seeing familiar UIs like, Oh yeah, that's right. That's what it looked like in Azure. But what if I, I need to create tickets that have like 70
Starting point is 01:11:26 required fields like i'm not gonna be doing that in github well now with the github action you can have it yeah that's right yeah send it over to google drive or google form or something hey why don't we just ask chat gpt yeah which is better jira or github i know you got the tab open there joe yeah let's see uh you know i've uh i've been disappointed with the lily i have a feeling when we log in here that it's like you're on gpt4 right you shouldn't be disappointed i'm on gpt35 now because i was disappointed and i was like well i'm not gonna get anything from it and you know i'm still using i'm using uh copilot and stuff and so i'm still in love with it but it's just uh see so we're saying which is better jira or project management for project management project management github issues or jira has a comparison
Starting point is 01:12:18 page i wonder which of those saying is better so gps can, I'm not going to tell you the answer. Yeah, right. It's answer is it depends. Jira. No, no, no. I did it too in the background. In summary, if you're looking for a powerful and highly customizable project management tool with a focus on agile methodologies, Jira
Starting point is 01:12:39 may be the better choice. On the other hand, if you're primarily dealing with software development and version control using GitHub, GitHub Issues is a simpler and more integrated option. The choice also depends on your team's familiarity with the tools and your specific project requirements. Some organizations use both tools in tandem for different purposes within their projects. So we haven't had these guys as a sponsor in a long time, but it makes you wonder if Clubhouse was doing it right you know mixing the peanut butter and the and the and the chocolate like you know having that kind of stuff together
Starting point is 01:13:11 in one tool so that people aren't having to bounce back and forth maybe maybe they had the right idea yeah yeah hey and clubhouse if anybody's listening hit us up shortcut now shortcut yeah i remember oh shortcut that's right okay so it's not clubhouse anymore and in fairness the last and hit us up. Shortcut now. Shortcut, yeah, I remember. Oh, shortcut, that's right. Okay, so it's not Clubhouse anymore. And in fairness, Selassian was also full disclosure, they were a past sponsor as well. Yes, they were. Full disclosure. Yes. I typed shortcut, but I got
Starting point is 01:13:37 shotcut and bing. Yeah, that might be a different... Wait. Wait, hold on. I'm in edge. You bing? No, I'm in edge. You being edge? No, I'm in edge. So the search was big, which I think doesn't, doesn't being just default to using Google at least at one point in time, it did. Yeah.
Starting point is 01:13:57 I, uh, I'm in trouble for that as a Microsoft MVP. Yeah. Like who here lost a little bit of respect for Alan when he said he binged something like raise your hand. Hey, let me remind you, I just reinstalled windows. And so edge is what I have on.
Starting point is 01:14:13 Oh, that's, that's your excuse for not having already reinstalled Chrome. Hey. And even though I was mad at windows 11, cause I'm pretty sure it's what jacked me up or maybe it was windows 10. It was windows 10. I actually have a love hate relationship with both of them right now.
Starting point is 01:14:27 At any rate, I'm on windows 11. So anyways, back to it. Uh, yeah. So we were talking about actions and, we'll take a break here in a second,
Starting point is 01:14:38 but I wanted to mention a couple other things real quick. So, you know, I mentioned jobs, uh, run on each runner, uh, or sorry,
Starting point is 01:14:44 each job is associated with a runner so um what that means is if you got two different jobs each one's going to need to like check out the code for example and so if you're if you want to be efficient about things then you're going to want to bundle things up in smart ways so on one hand like my first inclination was like okay well i want a job to do a build a job job to do deploy, because sometimes I want to build and sometimes I want to deploy. I want to be able to split that stuff up. It just results in a lot of redundant work as you're doing multiple checkouts. And even though that stuff's fast, it just kind of stinks. And I found that a lot of companies actually will bundle common actions too. So Docker has a ton of actions out there, but like one of the most common ones is actually docker build push
Starting point is 01:15:25 and what it does is in a single action will do a build and then push to a repository and so it just kind of saves you having to do this stuff in multiple uh different steps and they're so commonly kind of put together and it's uh it's able to use things efficiently which is nice also plumbing inputs and outputs is not really fun. And I wanted to mention one last thing, which is upload artifact, which is another action. And what upload artifact is, is this is actually a little bit different from using GitHub packages. There's another one called upload package for that.
Starting point is 01:16:00 So if you want to upload a new get library or a Jason package or whatever, then you can do that sort of stuff and upload either to your personal or to the public you know private whatever wherever you want to put it but upload artifacts is kind of a special one where actually just upload stuff to some temporary storage so it can be used and shared between jobs so like if you like if you did a build and say you weren't using docker and you just wanted to like build your dll your jar and have it kind of available for the next step but you didn't want to publish somewhere because the downside of publishing in like an artifact repository is that it fills up you have to deal with cleaning that stuff out you have to deal with oh someone deleted a version somebody was relying on we didn't realize anyone's using that it just opens
Starting point is 01:16:43 up a can of worms so it's kind of nice to have like a temporary storage day uh location and by default it retains data for 90 days but it does come out of your 500 megabytes or whatever what space you have so if you if you have the same thing up there with 20 different versions you're eating into your 500 meg quota right but versus the publish artifact is like hey step one built some common jar that the other 18 steps might need to rely on right and that way it's not going to build it's not going to count against your your uh package space that you get that's what you're saying yep and then uh just real quick i did want to say there's a uh you can build your own custom actions of course you can clone a repository.
Starting point is 01:17:26 They've got a convention and a bunch of documentation for that. But then there's also this kind of basic example, just run, which just lets you run console commands. So if you do Ubuntu, for example, you can run bash commands. If you do Windows, you can run DOS or PowerShell commands. And that actually surprisingly takes care of most things you would want to do i think the real takeaway so far though that we've learned tonight is that um jay-z is cheating and get ahead of game jam jam jam to january by already starting so right when you see his super polished game you can be like wait wait a minute well i mean the ci pipeline will be public i do have it publishing the itch but unfortunately i don't know
Starting point is 01:18:06 what i'm doing i did just switch over to gido because uh actually there is a big stink about unity uh that's started this week my switching or starting to look at switching has nothing to do with that but it did have to do with devops because you have to buy a seat uh which means you can't do the free tier if you want to do any sort of build automation for Unity. And the seat is like at least $1,000. And you can't just buy a seat for automation and you'd be on the free plan. So you need to buy two seats and keep that going. So if you want to do continuous integration deployment with Unity, you're looking at like $2,000 a year minimum.
Starting point is 01:18:44 And they just jacked the prices up. So now you're looking at $4 a year minimum and they just jacked the prices up so now you're looking at 4k a year and that sucks for especially for somebody like you that's not making money off of it you do it because you like to mess with it well i mean we're not trying to judge maybe he's making money off of it oh geez right yeah that's right yeah the games are a little risky so i haven't mentioned them. Well, you know, I know that no, no,
Starting point is 01:19:09 never again is going to be upset with me, but he, that person can close their ears for a moment. But if you haven't already left a review, we would greatly appreciate it. You can find some helpful links at www.codingblocks.net slash review. And if you've only left one, then now's your chance to leave another one.
Starting point is 01:19:31 If you've left two, you're okay for the time being. Yeah, for the time being. For now. For now. And with that, we head into the unnamed portion of the show that I keep trying to make a name for every time on the flight it never works out but here we go again this she this is coder co party what is the box party authority i keep trying to come up with a way to say like combine coding blocks in jeopardopardy and it just every time I'm like I got it this time and then I start to say it like
Starting point is 01:20:08 and my mouth can't like make those sounds and like yeah where it fails every time I'm sorry what if we called it embarrassing blocks that's how I feel size in the name okay we can go with embarrassing blocks did you win the last one
Starting point is 01:20:24 pretty sure you did i think i'll lose most of them probably yeah i mean the reason you need to look it up um you know what would be fun if we had kept like a running total of all the stats we should not do that who's winning you know that's too hard to do not Not even who's on a streak, but statistically Joe wins or something like that. Those that have a gambling addiction might want to
Starting point is 01:20:54 place bets as they play along. At any rate, this is 218. According to TechHouse Trademark Rules of Engagement, Jay-Z, you are up first. Your categories are fire Island or big blank. Hmm.
Starting point is 01:21:17 This one's going to be weird. The topic is, this is jeopardy. Okay. I didn't make these categories up okay so it can't be it can't like as bad as it might sound like how bad could it really be ready for my nude scene bernie and bernadette or all about alternative book characters. And lastly,
Starting point is 01:21:49 everybody loves Rain Man. Oh, good luck. Let's go with Big Blank. Alright. Not Rain Man, huh? I'm an excellent writer. It's been 40 years. Let's go with Big Blank.
Starting point is 01:22:03 Let's go with 3. Step right up, ladies and g gents from acrobats to clown cars we've got it all inside this structure what's the big tent no alan for the steel what is the big top that That is correct. Yes! I don't believe what you just said. Look at me! The big tent, what the heck? That's what it is. He was so confident, though. Oh, man.
Starting point is 01:22:33 So confident. I was like, no. All right, Alan. Here's your chance to walk away with it. All right, nude scenes. No, sorry. I have new categories, right? Sorry.
Starting point is 01:22:44 How bad can those categories have been? Okay, just here's an example of what those were. On this sitcom, this is a freebie if you guys get it. On this sitcom, Phoebe spied ugly naked guy having dinner with ugly naked gal. What is friends? There you go. There's only one Phoebe. I don't know of any others.
Starting point is 01:23:06 I'm sorry, Phoebe Cates, if you're listening. See, I don't even know what that means. What? Yeah, no,
Starting point is 01:23:14 it's gone. Wasn't she the actress from, um, fast times? Got nothing, dude. What? No, come on.
Starting point is 01:23:24 I'm not making this up. we go to the internets and and i'm pretty sure if you were to look up fast times at ridgemont high uh yeah ridgemont high it was wasn't it her am i wrong no yeah no phoebe cates. I was right. Yeah. Boom. What year was that made, please? While you're on it? That movie is way before us.
Starting point is 01:23:53 That's what I'm saying. 1982. Yeah. Right. Yeah. I was crawling around in diapers. All right. All right. Well, here's your chance for the steal or for the, you know, to go ahead and like solidify your victory.
Starting point is 01:24:07 That would be nice. Your category choices are lost in exploration. Books and authors. Human anatomy and physiology. Sitcoms. Fun with flags. flags starts with two vowels starts with two vowels for 100 because level one okay coming about 40 days after lent begins it's one of the few days when it's relatively safe to put all your eggs in one basket.
Starting point is 01:24:55 Really? You don't know it, Joe. Come on, man. Oh, my gosh. Oh, my gosh. Advent. Joe, for the steal. Easter. There go i was looking for two vowels that were the same oh man yes oh man personally i would pick sitcoms every day. I was going to, but I was like, man, how many? I was thinking two consecutive same.
Starting point is 01:25:29 Oh, man, whatever. Yeah, I'm looking through some of the questions for sitcoms. I'm like, oh, yeah, I would have totally picked that one. Okay, here we go. Dang. Jay-Z, this is your chance to break the tie. All the way. Your category choices are ballet and opera.
Starting point is 01:25:49 Okay. And that's your choice. I just can't. All right, here you go. Facts about countries, history in comedy, politics,
Starting point is 01:26:07 dog gone words, or, uh, this one's gonna be awkward. Johnny Gilbert says the number one hits. So that you're going to hear like the spoken lyrics of a song and you got to name the song. Dog gone. Whatever. I guess, man, like the spoken lyrics of a song and you got to name the song dog gone whatever i guess man shame on you for not picking the song one i am so terrible with lyrics for what was it what was your your level top level one level oh you're going five going
Starting point is 01:26:39 five it's only said so much for you alan we. We had Big Tintin advent. I mean, come on. Shoot for the stars. Man. This command means the dog should be on the owner's left side no more than about six inches away. From their what is heel. That's what I was going to say. With the win. Man. How's that the hardest one? That doesn't even was going to say. With the win. Man, how's that the hardest one?
Starting point is 01:27:06 That doesn't even make sense. Yeah. I mean, we're playing the celebrity version of this. Oh, okay. That's not fair. And we still don't get them right. Well, I wasn't going to say it. Right.
Starting point is 01:27:20 Yeah. Yeah, I would have definitely picked the song one, though. I might not have done well with it, but I would have picked the song one though I might not have done well with it but I would have picked the song one let's do one pick the middle of the road one the number three
Starting point is 01:27:35 is that what you're trying to say alright and again I'm speaking this I'm not singing this it's also Johnny Giller so I should probably say it in like an announcer voice I'm speaking this. I'm not singing this. It's also Johnny Giller, so I should probably say it in an announcer voice. She's got eyes of the bluest skies, as if they thought of rain. I'd hate to look into those eyes and see an ounce of pain. I know this. Is this the Moody Blues?
Starting point is 01:28:12 Once Upon a Time? I do know this one. Let's hear it. We just got to sing it. Alright. I've been walking the streets at night just trying to get it right there you go yeah what is november rain got it no was that november rain no sweet child but you were singing patience though yeah i know but i i knew that i knew that you had the right artist though the band was there yeah uh all right well that was fun so um with that in mind what
Starting point is 01:28:48 else can you tell me about actions yeah and so kind of saved uh not a whole lot for uh this section and we covered a lot of it uh just wanted to mention a couple things so i kind of touched on inputs and outputs uh basically the gist is that you can specify inputs and outputs so you can have a job and say these are my required fields or these are not required and they're defaulted. And you can also specify outputs. So some stuff I did with here is like I would generate a tag. And, you know, as I mentioned, I was building game stuff. So I like that the version of the game engine was part of my tag, for example, and that kind of stuff was like dynamic.
Starting point is 01:29:21 And so the tags I was generating from actual game had the version of Godot in there and also had my build number. So things like that. So I had a little function that would do that and then I would use that and kind of pass it on and use it for my uploads and releases and stuff. You're doing it in YAML. It's not super fun.
Starting point is 01:29:41 So it does work, but no one ever said DevOps was fun. I don't think you know, it does work, but that's no one ever said dev office was fun. I don't think it has ever said that. Hey, so, so I have a question for you on this. Um, this goes back to when I was playing with Azure functions back in the day, is there a lot of stuff that's done by convention? So I'll give an example, like Azure functions, there were all kinds of ways that if you structured your functions a particular way, then things got passed in and sort of auto-bound for you. Yep. If you don't do that, you can totally do it programmatically yourself and make it hard on yourself if you're not aware of the convention.
Starting point is 01:30:20 So I guess what I'm asking is, is this similar to that? Like you can, if you learn about what they're doing with their hooks and their, and their different things, then it's real easy to hook up. Otherwise you can definitely inflict some pain on yourself unbeknowing, unknowingly. Yeah. So to an extent, so everything that happens on a runner, that's the job level. it happens sequentially in steps. Everything there can access information from prior steps. So if you generate a tag in step one, step two can say steps.step1.result or whatever you name it. And that's fine.
Starting point is 01:30:59 But to expose stuff outside of the job, you do have to explicitly set it because you don't necessarily want your next job which can be run by a third party even to necessarily be able to go and try to guess at variable names or other things that um you know might be set by convention so by default there's a hard line between things at the job level and then of course at the the workflow level which is just a step up okay sorry i was I was putting a quote in there about the, um, going back to our conversation about GitHub enterprise plus the marketplace. Oh, cool.
Starting point is 01:31:30 So I found in the documentation where they said that by default, the workflows cannot use actions from, uh, github.com and, and the GitHub marketplace, but you can configure it like we were suspecting. Um, were you talking about like the answer that you were just giving was that in regards to the inputs yeah inputs
Starting point is 01:31:51 outputs because i was questioning like as soon as you said that but then i like went off on my own tangent i'm like how well how how was it it's all an input like how do you have an input it's all uh you know based off of what's in my repo but now i get it that you're you know based on it being an input to the from the previous step from the previous step yeah yeah yeah yeah and that's that's similar to how um azure functions work i would imagine aws lambdas and all those right Like if you use their internal tools to trigger an action on a function or something, a lot of times it'll hook it up for you. You just have to know it's doing it because it's all convention-based, right?
Starting point is 01:32:34 Like it's not necessarily obvious. Yeah, I did like the explicit nature of how you have to share stuff between jobs. Like it's very much there. If it's not listed and in plain text, it's not there. And because everything has to have a repository, it has to be associated with a repository that you have access to. You can always see the inputs and outputs in a consistent way.
Starting point is 01:32:54 Okay, nice. So no hidden, you know, variables, no typos, stuff like that. Uh,
Starting point is 01:33:01 yeah. So overall, just go ahead. I was going to say like the one downside though, that I do see and you, you tell me maybe actually there is a section in here about, um, or maybe I spoke too soon.
Starting point is 01:33:14 Cause I was gonna say like the one downside was that like in Azure DevOps, for example, the code, the hosting of the code, I, the repository, and then the pipeline to do builds and tests and everything we're also like all sitting beside the ability to deploy as well
Starting point is 01:33:31 and so you could like trigger that entire thing right but github.com isn't hosting your code necessarily so you know they're assuming aside from like pages right um but they do have i do see that they have like oh if you want to do deployments they have like you know deploy to your cloud provider and here's how to get to amazon or google kubernetes or uh azure so yep so there's a home has actions stuff like that um all the major cloud providers have hooks digital ocean you know all linode uh have actions set up that that made that easy and of course you can always do that stuff via command line or you know like rest calls whatever if you wanted to as well but yeah uh yeah so just overall i just wanted to mention uh pretty much everything uh i said i really liked
Starting point is 01:34:20 about i like that's really built around git that to me was like the killer feature for me personally uh so it's like a lot of the concepts to me was the killer feature for me personally. So it's like a lot of the concepts and stuff already just kind of fit really well with what I use Git for and I use GitHub for. I couldn't find anything that it couldn't do that I was used to from some other CI, CD provider. So as far as I can tell, it's basically a feature parity. I did look at CircleCI to see to see what they said about their, like on the comparison page, which of course is going to be biased for them.
Starting point is 01:34:51 And the only thing that they could really say, I think I look at Travis CIT was basically that they've got some magic that makes it faster because they're smarter about caching and stuff like that. And I kind of felt like, you know, if, if you're only, if your sales switches that we do a little bit faster, it's kind of like,
Starting point is 01:35:04 yeah. So I'm a little bit worried about those companies and what that might mean for competition uh git labs got a great uh a great story around ci2 so i kind of feel like most organizations if you're starting off today you're probably going to go with github or git lab and both of them have really nice ci solutions so kind of tough to argue with that at this point and you'll be happy to know that they have um if you want to do like containerized services they've got one for postgres sql so perfect very nice yeah i noticed microsoft had a ton of them too now they seriously have like uh if i'm reading this right like if you wanted to test that your stuff still works with whatever your database is, it looks like that can do it.
Starting point is 01:35:47 But they also have another one for Redis. There surprisingly wasn't many listed there, though. Oh, interesting. Okay. I did like the free tier, of course. It's a really great way to get started without spending any money. Documentation is fantastic. They have a bunch of resources that we'll have in there in the show notes.
Starting point is 01:36:08 So there's like a great breakdown of features, actions. There's a whole kind of website dedicated to just learning GitHub actions that will kind of walk you through a tutorial basically. And then once you get the rough hang of it, it's so easy. It's really nice. Scales up to enterprise nicely too. We mentioned GitHub Enterprise. You can have a hosted version of it, and they've thought about what that means for workflows and stuff.
Starting point is 01:36:33 And so if you are using that at work already, then you could probably start using actions already. You probably have some sort of budget of minutes, whether you use it or not. And this is the kind of thing that um does sit alongside other stuff really nicely like i mentioned facebook was using circle ci for their actual builds and stuff but they had a couple github actions for managing new issues with react and bringing on new users and stuff like that so it kind of makes sense that you know you're able to kind of dip your toe in and do some stuff over here where it's good and over there where it's good and it's all good the only
Starting point is 01:37:06 downside that i ran into and i think this is going to be a common downside is that we're working with git so everything's done via commit so if you're just testing something you're just trying something out you're doing commits so you're going to be wanting to do this in a branch already. But I mean, I have like a hundred and something commits from this weekend when I was just trying different things and kind of exploring and messing around. So my history is terrible, but okay. One,
Starting point is 01:37:35 first of all, there's nothing you can do about it. If you were in any other kind of build pipeline, you had that same thing. You were going to have to commit push in order to like you know if if you're relying on some automation to do your build that isn't local then you already had that going on right and as far as your history i mean you we've talked about how to squash all that before so yeah you know you don't have to leave all that mess you shouldn't you should not it's
Starting point is 01:38:05 embarrassing looking at you jay-z yeah you know you know this like so i what i did is that when i got done with my stuff i converted it i squashed it all down to one commit and i made it a template so now i have a template i can use for my games going forward so no one has to see that ever again i was really nice but what i was thinking i was like compared to like a jenkins or something you could have a ci cd solution that's totally detached from your code and any, you know, changes you make to like Jenkins jobs. Like it's common to have like your Jenkins,
Starting point is 01:38:30 you know, groovy files, whatever, uh, set up, uh, in code. But it's also possible to like change like things about how your job is
Starting point is 01:38:38 scheduled or to rerun or, you know, your job configs are often done just like in Jenkins. Um, so that's what I was kind of comparing to. Yeah. But I mean, I would strongly advise like even in a Jenkins world that you would, you would keep that configuration in code in your repo. Yeah. Like that's a good idea. Yeah. That's a great, that's like, that is the right idea.
Starting point is 01:39:05 That's correct. Yeah, because, I mean, what happens if you didn't, the alternative is if you didn't and then you lost that server for some reason, like you just lost all your build configuration. Yeah, that's bad. Yeah, exactly. Yeah. I'm not speaking on experience or anything.
Starting point is 01:39:20 That's never happened to us. So, yeah, the major downside is you have to learn how to rebase uh which is something you'd have to do anyway so or you should do anyway rebasing is amazing yeah it's not bad uh yeah so next step so if you're interested in this then uh if you already have a github account you should go and start messing around today it's uh i think because everything we said like it's a no-er investment to me. There's you cannot convince me that there is a developer out there that would not benefit from learning a little bit more about how it builds on automation work. And I think that this is the prime. This is the best way to get into.
Starting point is 01:39:57 I cannot imagine a better kind of onboarding working solution for learning more about like kind of build automation type stuff if you've not done it before um what's the ticket number that i need to be working on to do this number one is issue number one github i'm sold and so just for fun i kind of put together like a little list of ideas so like if you've never done this before like uh step one you should build your project on every pull request or trunk. There's a million examples of it. It's really simple, and it's super useful. Why not? Running your tests, outputting test coverage, for example, running a linter, static analysis tool.
Starting point is 01:40:36 You can send an update, send an email to yourself every time a build fails, something like that. Doing releases, auto- tagging new issues, or if you have an issue that hasn't, you know, hasn't been looked at or hasn't been closed or whatever, you can, you know, tag yourself or do something interesting with it just to kind of get the ball rolling. So there's just a couple of lists, a list of items there that if you want to try getting started, you're not sure what to do. We've got a couple of ideas there in the show notes okay so you you said here
Starting point is 01:41:09 in the in the notes though to send an x and it took me a minute to read that i was like is that really what everybody like the the annoying thing is not to harp on this but like i keep seeing so many articles that when they refer to to x would be like formally twitter yeah and it's just annoying because like yeah if we've moved on then we've moved on let's just call it x and let's move on yeah it's not clubhouse yeah we're no longer tweeting we're xing yeah that's weird isn't it, no one seems to call it that. It seems so awkward to say send an X. It hurt to even write it. I mean, I'm not.
Starting point is 01:41:50 I was trying to be serious. Yeah, I guess you're right. It's not send an X. It's just X, right? So you can X, update. Anyway, here we go. I actually Googled or I binged. Yeah, we already know. What do you call Googled or I being a being.
Starting point is 01:42:05 Yeah, we already know. What do you call tweeting now? It's a post. Okay. So if you want to post. Okay. So here's another one. This is from Mashable.
Starting point is 01:42:21 What do they call it? They should rename it Expressions. That's pretty good. So if you want to post an expression or update LinkedIn whenever you create any release, this is a good way to do it. Yeah, whatever. All right. Well, this is going to be an extremely link-heavy episode. So you'll find a whole bunch of links in the resources we like section.
Starting point is 01:42:48 And with that, we head into Alan's favorite portion of the show. It's the tip of the week. I kind of cheated and held this back during the episode, but in fairness, I didn't realize it until I was basically done. And I was like, man, this is kind of annoying because uh what i was doing is i was editing my yaml files in github.com and i had the actions right there so i'd see the run which is fine but uh guess what when you do that when you edit as soon as you save that file you're doing a commit so you can't do for example changes to more than one file
Starting point is 01:43:21 in one commit so i would like do one file cancel the run go to the files like this is dumb i wonder if there is a visual studio code extension for github actions and there is of course and it's beautiful i mean if you even look at like vs code it's got your files there on the left it's got a little you know bar on the left and it's got like a main area it's basically the same exact ui as the website and you don't have to do all the stupid stuff i was doing like canceling jobs and stuff and it just works great like you don't even have to do this stuff in github if you want you can bring everything right into visual studio code which is awesome sold and sold right yeah we got a link there to that extension.
Starting point is 01:44:05 And yeah, I mean, it's, it's, I couldn't find anything that you couldn't do in the extension. Excellent. All right. So I've got a few,
Starting point is 01:44:13 two of them came during the show as I was thinking about things. The first one though, had an issue come up very recently. It's very fresh in my memory, sort of painful. So if you have persistent volumes that are being terminated because something happened in your Kubernetes cluster, you might panic a little bit because maybe you had a bunch of data set up that you had for test purposes,
Starting point is 01:44:37 like this was a dev environment, so it wasn't catastrophic, but maybe it was a production environment or staging environment. And your only saving grace is they're in terminating state because the pod that it's bound to and the PVC that it's bound to has not been terminated yet. So the PV, the persistent volume still is hanging around. There is a tool. I did not use it personally yet. I was about to, uh, there is a tool for resetting the terminating state of the persistent volume. So in theory, in theory, this could save your bacon, right? Like if you accidentally decided that you were going to do something that was going to terminate this thing, you're like, oh, I really don't. I really don't want that to happen.
Starting point is 01:45:29 This might be able to help you. Yeah. And I haven't used this either, but it's going to be a fail if after you use this thing, it doesn't play a sound that says Abibak. I feel like I feel like it should. So, of course, it would be like a better impersonation than that one was, but you get the idea. That's pretty excellent. So again, I have not used it. I'm putting the link here for anybody that may find themselves in a panic situation. This might be helpful. All right. So Jay-Z kept saying reactor during the show. And every time somebody says React or Angular, it makes my brain go.
Starting point is 01:46:07 It gets its wings. Right? What's the popular thing nowadays? Because there for a while, the three of us were all heavily involved in like web UI stuff. And I have mostly been doing back-end work a couple of years now, a lot of streaming apps. So I was curious, right? So I went to Google trends and looked, and so they've gone away from the search volume thing that they used to have in trends. And now it's more of a popularity thing. So if it ranks a hundred, then it's the most popular thing that's being searched.
Starting point is 01:46:43 It's all relative now. So it's kind of like pointing stories if you're familiar with that garbage. So yeah, here's what was interesting to me is view is kind of leading the way now, which I find highly interesting. I don't, it makes me not believe this. Yeah, I really don't. Because you were saying that like it's on a scale of 100. Yeah, if you click on that, so the interest over time, if you click that question mark next to it, it'll tell you. It's relative to the highest point on the chart. So you don't have real numbers.
Starting point is 01:47:18 It's all relative. Yeah, so if you go to like the Vue.js and you hover over United States, the search interest is a five. They're all low numbers. React is 10 and Angular is six. Wait, wait, wait. Hold on a second. What am I doing wrong?
Starting point is 01:47:43 Which one are you looking at? Compared breakdown by region or? Scroll down and they have like the different sections. View, react, and angular. And you said that like it's based on a score of up to 100, right? So that's not compared though. I don't know what that number represents. Hold on. You have to click the.
Starting point is 01:47:59 That's the search interest that shows you. Values are calculated on a scale from 0 to 100. It's the most popular. Dude, I don't know know i don't understand this because if you go to the one that says compared breakdown by region then you'll see that the number is 53 if you mouse over the us so i i don't really know what they're doing with their numbers here this is one thing that's always dangerous about graphs and trends in general i think we've talked about this before is you can't look at something and be like oh man that's crazy you have to really understand what they're trying to so and i don't even know what they're trying to show here yeah it's really confusing because like even if you do look at it by like the u.s right you click into the u.s and
Starting point is 01:48:38 it'll show you by state and there's a lot of states that just flat out don't have any data and then there's somewhere it's like okay in ne out don't have any data. And then there's some where it's like, okay, in Nevada, Vue is 100%, but React and Angular are zero. So no one in Nevada is curious about React and Angular, or they just aren't using Google search to find out their information. Yeah, I don't get it. Now, here's what's interesting, though. So this wasn't actually my tip but so first on the first the the first graph here they have the interest over time
Starting point is 01:49:11 it was interesting to me that view is the highest across the line that's surprising but really what i wanted to point out was if you go down to the chart that like, well, I was just talking about where it just says view JS on it. You can find out the other things that people are interested in along with view. So in this case, Lodash is a big one. You have Rust, JavaScript, Vite JS, never heard of it. And Penea, that's another one. and also if you go down to react you'll see that identity is apparently some sort of project that people are are interested in netlify comes up a lot so my tip really was hey if you're interested in a particular framework or something like that you can sort of find out what things are going hand in hand with it. And I think outlaw just figured out something with this five.
Starting point is 01:50:06 Yeah, I get it now because, okay, this is, this is, if you, if you change the thing, like if you go back to like the last five years,
Starting point is 01:50:17 for example, past five years, it's always view for the last five years, which is like, no, it's not, that doesn't add up. And you have to go to like from 2004 to present before you see back in 2016 where Vue wasn't on
Starting point is 01:50:36 the top. The search here is you're comparing the literal search term of Vue.js compared to react.js compared to angular.js when people are talking about react nobody's including the.js in their search so you're saying so you're comparing which one of these three search terms is most popular in the you know the default length that you had there was for the past 12 months and you know angular.js i could see it hitting somewhat in there because, unfortunately, the way they did the naming of that whole thing. But typically, you're going to do a search for Angular, how do I do a model view controller,
Starting point is 01:51:19 or whatever your question might be. How do I bind to this button? So you know what's interesting, though? Man, I don't know i took the dot js off the end of it and i just did view and the numbers are the same really and react i took react.js off of it numbers the same like i i don't i still don't get it or they're very similar right like views leading the charge react is second and angular is a distant third oh not in mine no no i'm wrong i'm wrong i'm wrong reacts at the top yeah the colors were inverted reacts at the top then then view and then angular yeah that that makes more that makes a little bit more sense a little bit more sense to me yeah so but again going back to the the tip is this is
Starting point is 01:52:08 actually kind of a nice way to see what other people are using alongside those libraries so um yeah yeah the problem for poor view though is that like you get other searches that have nothing to do with oh yeah the javascript library they're all like french related type searches the top the top my car had a saturn view you did it had a body panel and a few pieces of trims on it i love that car i thought jay-z was making like five5 an hour. I sold that car. Yeah. He truly does not care about vehicles at all. No one ever loved that car.
Starting point is 01:52:53 That's true. That's true. No one ever loved it. That's true. All right. And so the last one, and this was just because Jay-Z said the rebase thing. A redo? So one thing that always bugged me and I had to look it up many, many times over the years, if I did a rebase, I was like, man, am I rebasing onto the branch
Starting point is 01:53:15 I'm checked out on? Or am I rebasing, um, to the stuff that I'm pulling from? Like it just didn't make sense because it was sort of a nebulous term. And we talked about this during our get episodes, you know, 93, one 93. So we talked about this and it's actually such an easy way to just get your mind straight without having to guess at anything. If,
Starting point is 01:53:42 if you branched off dev for instance, right, or, or trunk and you start making changes to your stuff, and then you want to pull in the latest changes from your trunk, you can basically say, get pull origin trunk dash dash rebase equals I. And that's basically saying, Hey, bring me in the latest changes from my trunk. And then let me rebase on top of that in this branch that I'm checked out on right now. And so it it allows you to mentally do that in place, at least me anyways. And that that helped clear it up. We specifically talked about this very thing in episode 193, because I remember at the time i i always do dash dash rebase equals true and and that would just let it uh you know it would it would do the rebasing for you it would
Starting point is 01:54:34 rebase all of your commits on top of whatever the light the latest was from the branch that you're you're rebasing from and i i remember talking about at the time, just being like a creature of habit to where like, I wasn't going like, you know, looking at like, oh, what new options might be there? And one of the, the I was for interactive and you pointed it out at the time that you could do a dash dash rebase equals interactive. And my mind was blown. I was like, wait, what? Because it was, it was the, cause it was the equivalent of being able to squash. If you wanted to squash your commits, it brings up an editor and it's a 2E kind of thing.
Starting point is 01:55:13 I don't know, maybe Jay-Z would say it's not a 2E. I have mine in Visual Studio Code, by the way. Yeah, whatever. Nobody does that. So it would allow you to pick what actions you wanted to perform on those various commits. So I put a link to episode 193 in the notes, though. And for those that don't know what a rebase is,
Starting point is 01:55:33 real quick, we're not going to go super deep on Git, but you've been making changes, you make a commit, you make a bunch of other changes, you make a commit. Well, there's also 100 other developers making changes in your same repo. When you pull those changes in to your branch, your changes are going to get interspersed with all theirs, right? Depending on the times that they were committed. So a rebase says, Hey, I don't want mine all mixed in with everybody else's. I want them all done consecutively at the end of everything. Right. And so that you can see all your stuff consecutively.
Starting point is 01:56:05 So that's why you do a rebase is so you can see all your changes side by side, you know, all in a row in the git log, the commit log. And, and the squash thing that the outlaw just said, it's even cooler than just saying squash. If you had 10 commits in there, you can choose which ones you want to squash, right? Like, so, like Jay-Z's always said, you know, I'll commit, I'll commit stuff that's completely broken, right? Because I just, you know, I want to check it in so that I don't have to worry about it. Well, later on, you don't want somebody to accidentally go to that commit where it's broken. So when you do your rebase, you can say, hey, I want to squash this particular commit. So it merges it with the previous commit, right? Or the next commit.
Starting point is 01:56:49 So that you don't have that same git history still floating around with a broken branch. It was even, you know, there was a lot more to it than just that, too. Right. Remember, you could reorder commits if you wanted to. You could delete them. You could edit commits. Yeah, you could delete them so like there are a bunch of cool things in that um tui that you could you could uh choose to do on those
Starting point is 01:57:12 on those commits and don't punish yourself don't use the tui go ahead and set up get to use visual studio code i so strongly disagree with this statement. No, dude. I love the Visual Studio Code integration. I think, yes. You know, okay, fine. Use Visual Studio. We all use Visual Studio Code. Visual Studio Code is great. But I can't get behind, like, encouraging people to not use, like, every time you have an opportunity to practice your VI skills, like, keep that muscle strong.
Starting point is 01:57:44 Because, I mean, you laugh it off. you have an opportunity to practice your vi skills like keep that muscle strong because i mean you laugh it off but i mean like you're gonna get into environments to where like you might be lucky if you even have vi right you know like especially like you might shell into a container and then you're like oh i need to i want to try something and you know maybe maybe you're lucky that you have vi on that but so i'm strongly of the opinion that if one of the few times that you have to practice and and keep that muscle strong is when you do this rebate interactive rebasing then fine because you've already using uh code for all your heavy lifting don't let that become your crutch to where you forget how to do these other things i guess i don't feel so bad about it because i use vi in
Starting point is 01:58:31 so many other situations that i that i'm that i am okay loving my vs code experience with the rebase yeah fair point yeah i mean if that's you too then fine yeah then i i will concede that but you know as a general rule of thumb i'm not going to like recommend that you know Fair point. I mean, if that's you too, then fine. Yeah, I will concede that. But as a general rule of thumb, I'm not going to recommend that. If people have the opportunity to practice their VI skills, then by all means, go for it. And before you talk to me about practicing your EMAC skills, we're going to go step outside. Nobody needs that. No, they still do. I know there are a lot of people that use.
Starting point is 01:59:06 Yes, it's great. Yeah, it's all right. So, Hey, check this out. So,
Starting point is 01:59:11 um, I've been doing a bunch of Docker stuff lately and I thought, Hey, I wonder if there's like a linter for Docker files, wouldn't that be cool? Like I would like to make sure that my Docker files are best practices, using best practices, right? Well, there's a couple.
Starting point is 01:59:30 And from what I can find, like the one that is more widely used or popular is the Haskell Dockerfile Linter. And I'm not sure if this is how they meant to pronounce it, but I call it Hadolint. So H-A-D-O Lint. I'll have a link for the show notes to the GitHub repo, but you can just brew install this thing and then run it against your Dockerfile
Starting point is 02:00:01 and it'll point out all kinds of cool things. How many times have you done something like an app get install or an apk ad of some packet like curl for example right now when you did that did you pin it to a specific version of curl or did you just app get install curl can we abstain from Yeah, that's what I thought you might say, right? But those are the types of things that it's going to like point out like, oh, you should, you should do that. Or if you did like an ad instead of a copy, it's going to call you out and say like, no, no, no, you should really use a copy command here and not an ad. Um, so
Starting point is 02:00:40 there's a bunch of cool little things that it'll point out that, you know, you're doing wrong. That's quite lovely. Oh, you know, something I recently learned, I don't know why I never thought to do this before, but when you add or copy, you can do a change mod or shmod or shown on it at the time of the copy, which is a good idea to me. Like there's been lots of times when I would actually set the permissions on the file before I would check it in. But that's kind of dumb because a lot of times you don't really expect that script to be run by the person who's checking out the repository.
Starting point is 02:01:11 You want it run inside the container. So why try to mess with that stuff and possibly have it set up or screwed up by somebody else when they're working on it when you can just set the permissions that should be there at the time you copy it in.
Starting point is 02:01:23 Yeah. That's cool. Yeah. That's cool. Yeah. So basically just a dash dash Shemot or dash dash Shemot. CH mod, CH own for all the normal folks out there. Joe said he was weird at the top of this episode. I got that from outlaw.
Starting point is 02:01:36 Hey, I totally understood exactly what he was talking about. He's speaking my love language and Shemot. He, he, he shmoaned my heart. Yeah. So you do say Shemot. Why? There's no, I'll take it. Yeah. and he he shmoaned my heart so
Starting point is 02:01:45 you do say shmoan I'll take it um wait did I say it with an M yeah well own shmoan just ch own though sounds like Michael Jackson
Starting point is 02:02:01 shmoan yeah that's right yeah I'm even sitting on my tippy toes when I say it yeah Oh, no. Sounds like Michael Jackson. Shmoop! Yeah, that's right. Yeah. I'm even sitting on my tippy toes when I say it. Yep. I want to see the moonwalking video to go along with this. Hey, man, I will I can backwards or forwards. Which way?
Starting point is 02:02:18 Really? Can you? Can I? Of course I can. We're going to have a break dancing competition i will sir meet you in the streets me and turbo we're gonna meet up with you you are in trouble that's amazing somebody's gonna get that reference but in the meantime alan never will but subscribe to us on uh you know whatever your platform choice are and that's the end of the show bye good god i'm over here look is it from the man whatever
Starting point is 02:02:52 i'm gonna break him of habits i will i will break you i'm like uh drago no am i pronouncing that right was that right drago was. Yeah. That will break you. You pull it. Like, what is it with 80s references for you? That might even be 70s. Rocky? When did Rocky come out? Yeah.
Starting point is 02:03:13 Well, no. That's like Rocky 3, right? Hey, Joe, do you know? No. Okay, good. Come on. You guys give me such a hard time. Rocky, 1976. Good. Come on. You guys give me such a hard time. Rocky 1976.
Starting point is 02:03:28 Yeah. I'll be pulling out references from over 45 years ago. No, but no, no, no. That, that my, the reference that I gave was not a Rocky one reference. I mean, who would do that? Actually? No. Rocky four.
Starting point is 02:03:40 What am I thinking? Rocky four. Of course it's Rocky four. Of course. Rocky three was 1982 we're still talking 40 years but rocky four rocky four is uh 1980 what was that one 85 and you obviously aren't keeping up with any of the uh creed movies because then you would know that it's also very relevant to i'm not well i'm not gonna ruin yes spoiler they box don't they
Starting point is 02:04:09 you haven't watched the creed movies dude i've got kids at a high school i don't have any personal time man none like zero personal doing their homework for them i have to sit with them to make sure well one of them does it but yeah yeah no it's ridiculous okay i'm just saying maybe somebody should like watch the latest one is creed 3 and it's kind of relevant to this conversation so and that's 2023 so hey hey and the turbo meet me in the streets is that snail movie by pixar i think it was it was so not oh okay so that's totally not it. It's amazing.
Starting point is 02:05:09 Oh, man. Do you really? I Googled or I binged it. That's probably why. That's why your answers are wrong. You binged it. Now, I'll give you credit on that one. The turbo reference, that's old.
Starting point is 02:05:24 It's pretty good. If I called out ozone none of that like rings a bell what what if i said electric boogaloo does that ring a bell no song okay you don't remember the movie Breaking and Breaking 2, Electric Boogaloo? Never heard of it. And Turbo was one of the characters from the movie? Nope. I've heard of it. I know the title. I saw it for a friend.
Starting point is 02:05:56 His friend saw it and he told me about it. I'm familiar with the jokes. His name was Schmeichel. And he saw it. He schmodded. He was like, oh man, check out Turbo. He's got the cool jacket.
Starting point is 02:06:11 Oh man, so awful. Hey, subscribe to us, please. Yeah, and leave us those three-star reviews. Yeah. Why? We were doing so good. I give.
Starting point is 02:06:28 Three up. Three plus.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.