Hey, fellow buddies, thanks for watching. All right, you guys, I have been horrible at recording garage sales, horrible. But I am gonna show you some of the things I found this weekend, and then we're gonna go into some items that sold over the weekend. And this is basically going to be a reseller vlog. So let's get started. Hey, fellow buddies, thanks for watching. Amazing, right? All right, let's get started. All right, so you guys know I just did a video on strawberry shortcake. Would you not? I just, I can't even believe it. I found strawberry shortcake this weekend. I found it. Now, is it the stuff in the video? No, but it is vintage and it is super cool. And I'm bringing it to my what not toy show whenever I end up having that. So stay tuned for that, but I'm gonna show you some of the stuff I found. My husband, I don't even know what's in here, but this is coming tonight to what not. All right, so I actually found more than just strawberry shortcake. I did find this rainbow bright little gal. And I'm not sure who these are, Sassoon or something. And then I kind of, I've got these in a little baggy because I believe that these characters go together based on my research. And I feel like whenever you can put things together that go together, you can get more for your item. So we're gonna do that. I'm not sure who this is and check this out, my crazy cut. These must go to something, but I'm not sure what. So if anybody knows, let me know in the comments. Found some little McDonald's toys. I'm trying to identify this ball. It says Hong Kong on it right there, but I don't know what it goes to it. Was with the strawberry shortcake items, is this a strawberry shortcake item? Does anybody know? And I also found this ball, which opens up, but I don't know why. So I don't know if this is strawberry shortcake or not, but I ended up getting like a whole bunch of the little characters. So super, super cute. Look at them, look at their little faces. Strawberry shortcake is really easy to identify. They have a very, very distinct look to them. This hat, not sure what it goes to. Just some different things in here. I've got some brushes. Sometimes the brushes alone can do well. I did get this pony. It's got some issues. It looks like it's missing its wings. And it says 19, is that 87? 87? Or no, wait. Is that a date? Yeah, I think that's 87. But it says made in China, patent pending. Is this an old one? Is this good? I haven't looked it up yet. So gotta look that up. And then here were just some other things that were, I think this goes to a McDonald's toy. So, and then this pony, but it's in such poor condition. I'm gonna look it up and see if, I just don't know if I could get it clean. It's by Cosbro Softies from 1984. I had another one and it was completely missing the tail. So that one is done. Let's see what else did I get? I picked up this guy. It says rat race and it's definitely vintage. What do I do when it has something on the tag? Well, I just tell them it has something on the tag and I take a picture of it. This is from 1987 and it is a heartline plush. I wanna say I paid, I think a quarter or 50 cents for this guy. So now here's where I need your help. Look at this, 1956. And it is, I think it's, is it, I don't know, Supreme Council, monarch of said grotto. Is that, am I saying that right? Forums and ceremonies. Not sure what this is, but it's very, very old. I think it came with this cup. So I don't know if it's, is this Masonic maybe? And I also got this book, which is really, really old as well. But look at this. I have no idea what any of that says. So is this some sort of like code or what is happening here? I don't know what's happening here. So I'm not sure what these are. I need to do some more research and I can't even read what that says. But those are some unique things that I got this weekend. Another interesting item that I don't normally pick up, I got this ash tray. And the reason I picked it up is because it says made in Brazil. So I don't know what kind of glass this is. And it does look like it might be, have a little bit of chipping right there. But I only paid a quarter for it and I thought I would take a chance. Now, here's another thing that I got that is really interesting. I don't know what it is, but it was $2. And I just, I have picked up cards kind of like this, not the same, but they were educational cards similar. And I did really well. I wanna say I sold them for like $300 or $400. I don't think these are the same thing, but unfortunately the sticker's on the front, I hope. Ooh, good, it didn't mess anything up. So these are, I don't know what these are. War in the air, they look like there's some type of educational cards. It looks like 1977. And I'm gonna have to figure out, is it Edo service, printed in Italy? So all of these cards, and it looks like it's military type stuff. So maybe it's a Bolo, maybe it's not. What's this? The Second World War. I don't know if this is the same thing or not. Yeah, so I'm gonna do a little Google search on this and see, I don't know if it's complete. I have no idea. But again, I paid $2 for it, hoping it's a Bolo, but if not, I'm sure I can make some money on that. A hat, I got a hat. And it's brand new with the tags. And I can't remember what I paid for it. I think like a buck. And I got this little guy for a quarter. How cool is he? He's Disney Store, so I pick up Disney Store, no matter what, but there's this little magnet the lady showed me when I was leaving. So you can put this on your shoulder and it's like your little buddy and he's from some TV show, I'll have to Google lens him. These are all Legos. And this is probably just gonna go in my big Lego hoard until I have time to figure out what I have here. So I am like a Lego sucker, but they all had the little mini figures. So I know you can sell the mini figures separately, but these, if these are sets, I would like to eventually take the time to, oh, look, is this a dinosaur? Ooh, ooh, it's a dinosaur. Or no, wait, is it a dinosaur? It actually says Marvel. Oh, it's a Black Panther. Rhino face off by the mine or something. I don't know what it says. But check that out, how cool is that? Legos, Legos, Legos. We pick up this Chuck E. Cheese ball. It's made in China, but it's definitely vintage. It's a hacky sack. I always pick up anything vintage Chuck E. Cheese. If I remember correctly, this was a quarter. And I could not find this exact one. So I'm gonna run an auction on this. Sometimes Chuck E. Cheese is long tail, but a lot of times you can get a decent amount of money for it. If you guys watched this as my Bolo recently, you saw that Chuck E. Cheese item that I sold for big money. And here's one that I've never seen. It is a patootie. I did pay up for her, I paid $5 for her, but she holds this little baby. And she, I believe it's from the 80s, and she is just in excellent, excellent condition and look at those green eyes. And I have her listed and available in my eBay store. Let's take a look at a few more things that I picked up. I have sold these in the past, but I've never had one with the original tag. It is the world's cutest dog by Gund. It is Boo. And I have sold these in long hair and short hair. They are typically bread and butter, but this one has a tag. So I'm gonna price it a little bit higher. I found this. It's a saran wrap and it's on this little thing. And I was like, I can use that some way, somehow. Maybe a quarter, I don't know. I got a couple more plush here. I am a sucker for plush. Oh, that's disgusting. This may be going in the donate pile. Well, that is a total bummer. You know what I did? I smelled it. That's disgusting. It doesn't smell like anything. So, oh my gosh. I don't know what that was, but I also got this bunny from the same place. It's got something right here, but I think I can get that off. That's just a little spot. I hope the bottom, I hope it wasn't sitting in a bag that, okay, so this one looks good. Any bunnies I can pick up. I love, love, love the bunnies. I think these were in a different box. So maybe there was something in the bottom of the box that was in the garage or something like that. I don't know who this is by, but any bunnies I pick up. I also picked up these really cool ephemera items, which I just think are awesome. Look at this Halloween. Oh, so cool. So there's a whole bunch of those. Oh, look at the Valentine's. Awesome, awesome. I don't know if they wrote 10 cents on them or what, but yeah, pretty cool items. I got this for my husband and I to watch. Adam Sandler cracks me up. I got these craft things. So I am doing an ephemera show on Tuesday. I may be bringing these to the ephemera show and I believe they are uncut. So one thing that's important when you're selling patterns is if they are cut or uncut, if they're uncut, that means they have not been used, which is going to increase the value. I paid 10 cents each for these. These are gonna be a bread and butter, especially if I bring them to whatnot, but somebody may be looking for these and we've got bunnies and dolls. So went ahead and picked those up, got all of these awesome things from the 60s, 65, 70. I just think these are so cool. I wish that they did not have writing on them in the 10 cents. This may be able to come off if, because it is kind of on a sticker there, but we'll see, I don't know, fun items and let's keep looking at what else I found. So I thought about this and I am not even going to attempt. It is just not worth the time it would take to get this clean and then I would put it in the washing machine and, but I would have to clean that first, maybe take the hose to it and I'm just not gonna do that. So it's probably like soda or something like that that's been sitting on there for like 25 years. I don't even know if this is that old. So this is going on the donate pile. Somebody else can buy this, clean it up and probably make some decent money on it, but it's not gonna be me. All right, so here is part of my ephemera for my show on Tuesday. So we're gonna add these in there. Let's see, we'll just put those right there. So that's for Tuesday. Now I wanted to show you guys some other things I got this weekend. I'm starting to put together things for my toy show and I got all of these Funko Pop things. Funko Funko. No, they're Funko, it's Funko. I always say it wrong. I think I've got like 12 of them that I'm gonna be bringing. I also got some new old stock toys that are Barbie in here that I'm gonna be bringing some transformer thing and a Lego thing that are all new old stock.  So that's gonna be coming, but this stuff is ready to go. So I'm trying to organize it and get ready. So what does it look like after a what not show? We're also gonna talk about the what sold, so stay tuned. But part of what I sold was all of my jewelry that I did a show on, I did an untangling and actually one of my friends, the gal that you have seen in the shows, my shows, shows. My goodwill Ben, she went to the Ben's with me. She actually came on what not with me and helped me untangle jewelry and we sold it. It was so fun. So if you guys have not come over to what not, definitely come see me even if you just wanna hang out and watch, that would be awesome. So there is a referral link, you can get $15 if you use my what not referral link to join and come see me, I'll be on tonight, Sunday night at 10, 15 p.m. Eastern Standard Time and wait until you see what my husband found and I'm bringing it tonight, so stay tuned. I have 17 orders going out for what not and these are all in bundles. So if somebody bought more than one item, I have the names on the bags and I have them in piles. So now I just have to wrap everything up. So I just write the name on the bag and then I package it up. I actually had, nope, it's not in there, two items that sold from my marketplace on what not. So this is a little fireplace for a dollhouse. You push on it and it lights up. There's no batteries in it. I wasn't sure how long it would take to sell because marketplace on what not is new for me and it actually sold really quickly. These are cray pass crayons and they are partially used but some of them are really, I mean they've still got a lot left on them. So what I do on what not on my marketplace is I put lightweight items in there and a lot of times people will buy those during my show and I try to price them at a really competitive price, cheaper than what I would list something on eBay or any other platform I'm on. So that this is going to encourage people that are searching the marketplace on what not to follow me. So these two items sold. Now if they would have bought these during my live show on what not from my marketplace they would have got combined shipping because they bought it when I was not doing a live show they had to pay shipping on each one. So I'm hoping that what not is gonna figure out a way to do combined shipping on the marketplace items. The only way I think you could possibly do that would be to message the seller and ask them to create one listing for you and then you could get the combined shipping. So that's something if you're selling on what not that's a little tip. And yeah, so actually items from my buy it now section are selling when I'm not live. So that's really cool. I think I have sold five or six items that way so far and I really don't have a whole lot over there. So I'm super, super excited about that. What is in this bag? Oh my goodness. This is a bunch of beautiful stuff. I went to a garage sale this weekend. However, it was somebody who does flea markets and she's a dealer. So the prices were not as good as I had hoped but I did spend some money and I got some beautiful things. So these will be in a future what not show. That's where I'm bringing my jewelry. I don't know when it's gonna be, but stay tuned for that. And let's look at, what is it? Oh, here's some of the jewelry I got over the weekend at some garage sales. Some really, just you know, garage sales, it's hard to find jewelry. Sometimes I do, sometimes I don't. I can't even remember what is in here. What is this? Oh, they're cute little earrings and they are Sarah Cove. So I paid 75 cents for this and I'm hoping that I make a little money on that. Now, when you sell on what not, it really just varies.  So if I've got a dollar invested into these pins, we'll see, we'll see what happens. I don't have any idea. I may get a dollar, I may get $5. It depends on what I start my price at. I kind of have to, you know, figure it all out. Look at this, this is a really cool bracelet. Does anybody know what any of these markings mean? Just crazy. So I got some really, really beautiful stuff. Those I think, are those, those are Crown Traffari, I think. So yeah, just some, some cool items here. Some brooches, this is 925. This is from something else. But look at this, my husband, I don't even know what's in here, but this is coming tonight to what not. Oh my goodness. So this is mine, I'm keeping this. This my husband got for me. I just think it's really cool. He knows I like owls and I'm hanging on to that. So that's mine. But look at all of these incredible brooches. I have not seen if anything is signed yet. I know he said he looked at a few and then just bought them all. This one's missing a stone, but how amazing is that? Somebody can put something in there really easy. I mean, incredible brooches. So tonight, I am, woo, look how pretty. It looks like there's some clip-ons. Oh my goodness. Oh, that's Austria, you guys. Oh and ow, I might have to keep that when I love it so much. So I haven't looked through here. I wanna get all of these off of these thingies. Are these collars, short collar things? So I have my husband pretty much sourcing for me now because I can't do as much as I want to do. He is out doing his thing. He likes to go to flea markets and stuff like that. He buys things for himself, but I'm like, wow, you're looking for things for yourself. Can you like shop for me? That would be amazing. And oh my goodness, he is like a better shopper than me. So get ready for some amazing stuff on what not tonight. Holy cow, I'm so excited to bring this to you. So, fellow buddies, I have a question for you. Are you seeing more of this in your day-to-day selling on eBay? Let me know down in the comments. So somebody bought this right here and immediately requested to cancel. And I feel like there's been more and more cancellations. I feel like there's been a lot of unpaid. Are you experiencing this also? Also to include slower sales, but I put some of that blame on myself. I spent, I don't know how many minutes last night doing offers because I had over 200 offers that needed sent on eBay. That is how behind I was. So I did send out offers. I'm gonna show you guys what sold overnight. I'm gonna show you what I packed up last night. They're already in the boxes, but I'm gonna pop up screen shares for you guys. And let's get started with that. I think this is the right bag. I have two that are the shape and size. But anyway, the information is on the back. So I don't wanna show the address, but this is a vintage kennel cuddly dog watch. I picked this up at, I believe, a garage sale. And I just forgot what I sold it for. So let me go look. All right, I checked what I paid for it also and where I got it. I paid a dollar for it at an estate sale. It sold for $12.40 plus shipping. All right, this is a Calico Critters Koala Bear.  I sold it for $15.50 plus shipping. And I got this in a state sale and a lot of Calico Critters for 25 cents is about average of what I paid for it, maybe even less. This is a Muffy Vander Bear plush horse. I got this for a dollar at a garage sale and I sold this for $12.40 plus shipping. And this is the second item I've sold for that same price. So what has happened is I had my item up at a buy it now. I had a sale running and they bought it for my sale price and they must have had the same buy it now price. So two items going out at $12.40 plus shipping. This item going out is two pair of Lane Bryant pants. They are the same and they did quantity two which means they got $5 shipping. I do have discounted shipping on some of my items and this was included in that. They paid $24.80 plus shipping for the two pair of Lane Bryant pants. Pick these up at a discount store many, many, many years ago. I probably had 50 to 75 pair of these exact pants and they just keep selling over and over and over again. That is one thing that's great about retail arbitrage. When you can buy things in multi-quantity, create one listing and just let it sit and sell over and over and over again. Longenberger baskets, do I pick them up? Not typically unless they are something like Halloween or Christmas or something like that. Why? Because I don't like to ship the baskets and honestly, very few of them go for big money that's worth the time it's gonna take for me to protect the basket but I will pick up the pottery. This is a spice jar that I picked up for a dollar at a garage sale. I think it was last weekend. I just brought it in, listed it right away. It may have been, I think it was last weekend. I don't think it was this Friday. I mean, it sold super fast so maybe it was. I did price it, it was last weekend, I just remembered. I did price it competitively and I took a best offer of $10. So a dollar into 10, buyer paid shipping, not huge profits but sold in less than a week and I will take those margins all day long. So do I do bread and butter? Yes, do I sell things for big money? Yes, I'll sell anything. Well, almost anything, not everything. I won't sell anything. I take that back, I will not sell anything but I will sell most things. I do have some boundaries. Let me know, no, don't let me know. Don't let me know, nevermind, forget that question. I don't wanna know what you guys won't sell because those comments could get a little crazy. So just keep that to yourself and let's move on to what else I sold. Those of you thinking about selling on what not, I kinda wanted to come back to this, 17 orders. How long does that take to ship? It takes a long time. I will probably be shipping these items for two, three, maybe four hours depending on how much bubble wrap and how I have to, some of them are easier than others but when you get into these bigger orders, this was purchased by Buy Now and Enjoy and she actually has a what not channel also so go and follow her. But I will package all of these items so that it keeps everything safe during shipment. All right, so the next item I sold is, I'm gonna turn on the light, so get ready. Bam, are these rewritable CDs I think they are? And you know, MacPack reselling just asked me about these, she sold them in a what sold video. She's like, if you get any more of those, let me know. But these were already listed and I don't know if these are the ones she wanted or not. So if you're watching, I didn't even know I had these listed and I don't even know if these are what you want but if they are, I'm so, so sorry, let me show you what I sold. I sold these for $24.80 plus shipping, picked it up at the Goodwill Benz and let's find it in this tote. My Goodwill Benz, anything that is media to include books, DVDs, stuff like this, I believe it's 59 cents a pound or 69 cents a pound. It's supposed to be here in tote Z. Let's see if we can find it. I don't wanna mess up any of this awesome stationery. Where is it? Where are you? Where are you? It says it's in tote Z. But I wanna be careful that I, oh, there they are, here it is. Now, if it is blank media, you cannot ship this media mail. So this will go out priority mail because you cannot ship anything blank media mail. So keep that in mind, you guys, if you're shipping media that is blank VHS, blank tapes, blank CDs, DVDs, all of that. Media mail has to ship not media mail. You can do parcel post, you can do priority mail. If it's lightweight, you can do first class, but you cannot do media mail. Right, so I just released a Goodwill Bins video last night. If you haven't seen it, go check it out. I dig through the bins, I pop up how I listed everything and I'm pretty sure this next item might have been in that video. So it may have been a viewer sale. They did not say anything, not 100% sure. Maybe it was somebody that watched the video. I'm not even 100% sure if it was in this video, but somebody had mentioned in the comments, picking up tie plush that are like movies and cartoons and different stuff like that. And this is actually a SpongeBob tie plush that I ended up selling for, I think $17 and I don't know, I'll pop it up right here. So many cents plus shipping. And I got this at the Goodwill Bins. So let's go dig it out of a tote. Let's see how long it's gonna take us to find it in this tote. Okay, it is in plush tote three. Hey, fellow buddies, it is in plush. Tote three, I can't even talk. Where is it? It's buried right under that tote. So now I gotta move this tote and this tote is like overflowing with plush. So I'm gonna pop this on top of it with one hand so I can record. And we're gonna see if we can find this SpongeBob square pants plush. He should stand out because he's yellow. And hopefully I didn't miss Mark, which tote he's in. It's a zombie. I got this from a zombie bargain hunter and it is a, it eats the brain. It eats the brain. Oh my goodness. I think I have a video on my reseller testing Bolo products if you wanna see how that works. But if you need a brain eating plush, it is available in my eBay store. I know everybody needs a brain eating plush. Where are you SpongeBob? Oh my goodness. Did I put it in the wrong tote? Oh jeepers. I think I might have. I don't see it. I am not seeing it. Oh, it's SpongeBob by Ty. So Beanie Babies, do they sell? Some of them do. This one actually sold for more than I expected. When I looked up comps, I was pleasantly surprised. So nice little bread and butter Bolo right there for ya. And back to this zombie thing. I got this from zombie bargain hunters, what not show. So he was selling animated plush. And I love selling animated plush because I test them on my reseller testing Bolo products channel. So not only can I resell it, but it gives me content for my channel. I'm helping a friend and a YouTuber and somebody else, another reseller, which I love to do. If I buy anything, I try to buy it on eBay, Poshmark, McCurry, what not first. I try to support other resellers. And then if I can't find it, of course I have to sometimes go to the store. But I try to do what I can, like my hair mousse. Putting my hair, I buy that off of eBay. Every time I buy it, I always buy it on eBay. So try to shop with other resellers if you can. I know it's not always like super convenient, but it does help. I mean, if you're watching this, you're probably a reseller. And how excited do you guys get when you get a cha-ching? I know like every cha-ching, I'm like, yes, cha-ching. So support other resellers, not necessarily saying support me. I'm just saying support other resellers.  Just think. Think how excited you get when you get a cha-ching. So when you buy something from eBay or Poshmark or McCurry or what not, those people are getting excited when they get the cha-ching. Whether it's a cha-ching or there's no sound at all, some of them, they just need that cha-ching. Etsy, I mean, all the platforms. Depop, what are the other ones? There's so many, so many platforms that you guys can shop on to support others. So a lot of times what I will do if I have an item that I'm not sure if I have a box that will fit it or if it needs extra packaging, I will package it when I list it. This is a Barbie and it's Bell. So this is already ready to go. And what's wonderful about that is that I just have to slap a label on it. So I kind of like that. I got this at a garage sale for $5 and I sold it for a best offer of $25 plus shipping. So I recently did a video on Folk Monus, no, no, no. I recently did a video on puppets, but I talked about Folk Monus. Most Folk Monus are bread and butter, but there are some that go for really big money. Check out that video if you missed it. I talk about tons of puppets, not tons, but a lot of puppets that go for big money and some of them are probably pretty unexpected that you might not know about. But Folk Monus, I do touch on that one. I pick up every single Folk Monus I find that is a good price that I know I can sell. This one is a bread and butter, but I still picked it up and I'm gonna show it to ya. Going over here to tote six. And this I did pay up a little bit for because I wasn't sure what comps were gonna be. And I think this is an older one. The condition is, you know, it's older. I wanted to get it out of the bag and on my arm. Check it out. It still has the original tag, but it's definitely an older one. I paid and it's got like some dirt right there. I paid $2 for this at a thrift store. Like I said, I did pay up a little bit for it given the condition, but it's got the original tag. And I think it has red, does that have red eyes? What is happening here? I sold this for $12 and I can't remember how many cents I'll pop it up. Orange eyes, how cool is that? And the buyer paid shipping for this, equal, how cool? I love it, I love it, I love it. And let me show you the inner tag. This is definitely a vintage one. And this one says furry folk puppets by Folk Monus. So that is not what the tag normally looks like. This is definitely an older one there. So pretty cool little bread and butter bolo. Did take a little while to sell, but yeah, check out my puppet video. Amazing what some puppets sell for. Okay, so the next item I have an offer on and I wanna make sure I had multi-quantity. So I wanna make sure that I still have it before I accept the offer. I have had it a long, long time. And I had, like I said, quite a few of these. It is an abacus jacket. That's what it looks like. I sold quite a few of these early on, but this one for some reason has taken a long time to sell and somebody has offered me $11 plus shipping. I'm gonna go ahead and take that. It's kind of like a little windbreaker. And I am gonna take that $11 plus shipping and I probably paid $3 or less for this. Pool noodles are great for breakables. So whenever I see these at garage sales and stuff like that, I think I picked those up at a garage sale a couple of years ago, actually. And they've just been sitting there because I don't sell tons of breakables, but they are fantastic for shipping. So keep that in mind. A lot of people I know pick them up at the dollar store. At the next item I have an offer on Poshmark for $15. I have it listed I think for 25 or 26. Do I wanna take a $15 offer? I would rather get more for it, but it is something that I've had for a long time. It was another thing. It was retail arbitrage. I bought it on the Lane Bryant website and I bought a whole bunch of them. When they were on clearance, probably two, three, maybe even four years ago, but I bought a ton and I bought a bunch of colors. I'm getting down to the very end of them. And this is a brand new with tags item, $15 plus shipping is what I'm gonna get for it. But first I wanna go make sure I have it because again, it was a multi-quantity item. And sometimes those numbers, you know, you can mix them up if you have like a bunch of colors and different sizes. So I just wanna make sure that I actually have the item before I accept the offer. All right, so we're in here and it is in my swim tote right down here. So let's get tote in out of the way. So I just do the little slide. I just slide things. And I know some of you think that's crazy, but that's how I do it and I love it. So I'm looking for a plus size. I'm pretty sure it's size 26, yes. And you know, when you put these in here, sometimes the little panty things fall off and get stuck to each other, which this one came off of this when I got stuck to the tag. So I'm gonna have to put that back on, but it's right here. It just stuck to the tag because when I ruffle through here, I'm moving things around. So I'm gonna take this item that originally retails for $49.95. I can't remember what my cost of goods was. I did not. I bought so much in bulk. I'm gonna say average $3 to $5 for this retail arbitrage. Typically you're not gonna have huge margins. It's not like going to a garage sale and getting this for a quarter, but you can see this is brand new. The tag is not marked through. When I get these at discount stores, the tag will have a line through it. So is it possible to do retail arbitrage online? Absolutely. It's time consuming. You're gonna have to go on there. You're gonna have to look through the sales.  So I picked these up probably at the end of summer. That's why they were on clearance. And then I had to wait it out. But this tote was full to the top. I mean, stuffed. And I also did this with brawls and shoes from Catherine's. There's different places that I used to go to source retail arbitrage online. I don't do it anymore because I don't really focus on clothing, but I am so happy that my clothing is still selling and I'm still making money on these items that I bought multi-quantity. So keep that in mind. It is a great way to sell things.  I did clothing from 2005 up until probably five or six years ago. And then I switched to hard goods. Do I still sell some clothing? Yes, but let me show you something. This is a walking closet and it was all organized with totes. But what I did was I pulled some of these items out and I was gonna list them. I'm like, I'm gonna make myself do it. And I hung it on a clothing rack and then I needed space for my totes. So I took off the clothing rack and brought it back in here. That's what some of these dresses are. And I now have a pile of clothes on top of totes. These are all with the original tags right here. I've got some of these listed already. I could go in and just do multi-quantity so easy. I just have not had time. So those are all men's express shirts which are great sellers, especially around Easter time. Those purple and pink and those pastel-y colors do fantastic. That says other women's. There's three totes there, one there. There's three here, there's two here. And I think these are too high, two of them, two totes. And then just this miscellaneous stuff on top. I've got Lane Bryant jeans. I've got this fancy dress here that retails for $189. I've got this fancy dress that retails for, I don't know, some crazy $300 or something. Some of this stuff I have picked up at garage sales and was gonna list it and just haven't got to it. So I've got something UGG right here. I think my mom gave me that. So I'm probably more than likely going to end up having a clothing show on whatnot because quite honestly, I'm not excited about clothes anymore. I don't really want to list clothes. So I can bring it to whatnot and I can show it and I don't have to list it. And I'm just a hard goods girl now. So look for this in the future on whatnot. Again, my referral link is down below. You can get $15 to shop. But yeah, and I'm live. So you guys can come hang out.  Even if you don't buy, you can just come watch. This item sold on Poshmark. I do list currently to eBay, Poshmark and Mercari. Start my items on eBay, CrossPost to Poshmark and Mercari. I use this perfectly.  But for those of you that are new and you're looking for a cross posting service, I absolutely love it. Been using it since 2019. There's a video down below that shows you how it works. Getting your items on more platforms, you're gonna sell more stuff. Now, I only have one Poshmark sale going out. Nothing on Mercari, and you saw my eBay sales. But you know, that's how it goes. Some days I sell more on Poshmark, some days I sell more on Mercari. It really just depends. But more eyes on your items. If you wanna try this perfectly, you can use coupon referral code, BOLO buddies, all one word to get 30% off your first month. But go down and check out that tutorial. Make sure that it's something that is good for you and that you can manage it and take the time to actually do it. And you're gonna see more sales coming in. So let me know if you have any questions and that's pretty much a wrap. We're gonna wrap it up here. Thank you so much for being here. Thank you for watching. I hope to see you guys at my what not show tonight at 10, 15 p.m. Eastern Standard Time. Tonight is gonna be those beautiful broaches that my husband found. And then Tuesday night's gonna be ephemera and I'm working on getting a toy show together for you guys. So stay tuned for that. These are my BOLO buddies' owls behind me. So again, thanks for watching. Check out another video and I will see you soon.


lage I disagree with that warehouse so I will not be voting for this because of that warehouse well I'm saying should that warehouse come out no okay it's okay not to have a unanimous vote yeah motion and it was seconded for any further discussion hearing none all those in favor signify by saying aye aye opposed okay so motion passes four to one okay I would at some point we don't need to do it now Irene but I'd like to hear your reasons why at some maybe when we talk about you know have somebody open up the discussion I'd like to hear you explain why okay okay so the next piece is discuss charter language unified manager and Pat do you want to you have your name next to this do you feel comfortable talking about it do you want well certainly no you take it away go ahead this topic was brought before the boards in September and the idea was the same then as it is now and that is in reference to putting forth a clear picture of the future for a new manager perhaps institutionalizing the unification of the manager could be done by a one fell swoop one charter change then as well as now the intention is not to do that by simply saying we will do it tomorrow and adopt this but to agree as a joint body or two separate bodies and at some point in the future not necessarily even this year or next year but at some point in the future when charter changes are discussed that this will be considered by the board as something to do seriously it would it would be counterproductive and counterintuitive to just talk about charter changes in general now that would simply that's simply not my case this is kind of a follow up to what Don had said with the agreement that you just voted on it's another layer of security for a manager who may be moving here from out of state for example so it's in reference to the recruitment in the selection process that if you agree even in concept and if you agree even as a sense of two boards that when the question is asked of you if it is asked of you by the candidates or if Don is looking for some clarification points for marketing the community with prospective candidates that this is something that you could say in the marketing it would be no promise just that it is the intention so I thought I'd bring it up again in similar fashion with the agreement so this is something one of the charter changes we want to discuss when we discuss charter changes whenever you discuss charter changes because we've already it's already been decided we're not going to do one at a time we're going to do all at a time or none but so this is not changing that decision that you all have made this is just saying when they all are discussed this is one of them that's all are you okay with that? making that a discussion point when the time comes for charter changes ready? we'll cross that bridge when I get to it thank you can I speak to speak? we all feel about this that we're just agreeing to consider talking about it in the future well I'm going to get a little more specific than that I would note that Elaine or to be back at our trustee meeting you talked about most likely we're going to be looking at a consolidated public works department that's what you're going to be recommending that's what the committee will recommend right now we have a joint we have one finance director we have the village in the town we have one we have the village clerk and the town clerk embodied in one person so and we have generally been moving in the direction of consolidation so it seems to me that it makes sense that we may want to at some point talk about how do we lock all this down and it seems to me that the key piece locking it in place would be the village position so I will add that to get a little bit more specific in terms of why I think it's important to discuss this in the future yeah okay um I'm fine with that I would expect that conversation to happen but I've also been asking for conversation that is not happening that I think has to be a part of this and that is board governance these two boards and the governance and I think it's going to be really difficult to have a discussion about a charter change if we haven't had that discussion too so I would just add that is also how did you say a topic potentially for a discussion in the future that would be added to sooner rather than later that makes sense okay so let's pick a date for that discussion okay it should be Saturday Friday night okay so we maybe yep oh suit go ahead you can tell me that the ship has sailed and I can't ask this but can I ask a clarifying question on the contract agreement that we cause on the memorandum there was a reference to the 45 days to 90 days and we didn't discuss that at all and I was just the world that I live in it's important to clarify whether we're talking calendar days or business days and I just thought that that should be clear business days would be one of the calendar days what was that Patrick I would say this is also things that are discussed to let the bargaining thing business days are usually better than calendar days for things like this most people work on the five day business day cycle however so that's it something we could put a clarification we could just put that in if all 10 of you are okay with it we'll just add that to the to the edit what's the clarification that you just put business days in and then go from 20 business days is approximately a calendar month so if we're talking 90 business days what 20, 40, 60 84 and a half months so the intent of this was not three months it's almost double that I wasn't thinking calendar I was thinking calendar because the way I've seen it in contracts before is just 45 days or 30 days it's like calendar days so are we extending out this termination clause to be four and a half months we have to give four and a half months notice if we want to let this person go seems a little excessive when you consider what Don had said it takes 30 to 90 days for recruitment and selection process so you tell me today that hey you're gone I say okay fine I can look at if I'm good enough to get an interview pretty quick 30 to 90 days to get an interview and try to get another job so I think it's fair for everybody to just say calendar days business days you're saying to say business days that's just a suggestion I'm making now and it's a little bit biased because of my perspective I'm from the perspective of the person that's going to be looking for a job you're just saying hey we're done we're done well there might be a thought about who's going to take that person's spot that might have crossed our mind too yeah it's not just hi here's the door see you later so it's three months if it's calendar days right sounds reasonable everybody okay with calendar days I think I'm better with three months okay I'm fine with that and if that if we're all in agreement with that then it should probably be made explicit do we need to make another motion to go back and amend the it's the kind of a change that's not going to have any impact on the agreement it's almost like an editorial change spelling change clarifying change did you get it? calendar days doesn't change my vote anything else we need to do tonight okay everyone good any other questions 5-H was removed we have a consent agenda item now about storm water grants oh yeah thank you very much I do is that for the board or the trustee for the system we're talking about that we're going to sign our resolution that is it tax abatement agreement is a memo for both of you but George it's for you too it's for us too at the beginning of our meeting didn't we add this in we didn't add it so that's not that's not been on our agenda because it's not on my agenda so this is the one on the storm water grants it's just a consent agenda okay it's not okay I mean oh the trustees are free and clear from this okay was it addressed to the trustees too yes why don't you put it in our next consent agenda that would be good should we hand it back to you now so you can put it in our bag so we don't lose it any time we we added it we did okay so that I would move approval of the consent agenda it's like board member comments second any comments on this great news we're getting more free money we're on a roll everybody happy with that it's like good news okay so we have a motion and a second any further discussion on consent agenda and all those in favor say aye aye motion to adjourn second all those in favor aye motion to adjourn no I don't think we're doing it we're done so who wants to make a motion to adjourn second all those in favor of adjourning say aye aye motion to adjourn second we're adjourning I'll confuse with Dan on here I know yeah more of them I have this


As a developer, I love automation, especially when it comes to continuous integration and continuous deployment processes. Why? Well, one of the primary reasons is because it automates and orchestrates repeatable processes in a very reliable and predictable way. I also love Azure Function Apps. In this video, I'm going to marry the two topics. I'm going to show you how I implement continuous integration and continuous deployment in my Azure Function Apps to deploy new and updated functions to Azure, provided I have a green bill with passing tests, as well as automate the entire process of creating or updating the necessary Azure resources using infrastructure as code with Bicep and the Azure Resource Manager. Hey, I'm Andrew Collins. This episode is also available as a blog post on voitanus.io and as a podcast on voitanus.show. Check out the description below the video for links to these other resources. If you're new here, subscribe to get notified of my future videos for professional developers on Microsoft 365 and Azure topics. Hi, I'm Andrew, and I love automation and orchestration aspects of CINCD in the development projects. Why? Well, I love it for a bunch of different reasons. First, I love how I can create a gate that only deploys the project when all my tests pass. Second, I don't like writing documentation in the pros style. I think it takes a lot longer to read a pros style documentation than it does to look at really descriptive code. Automated tests explain precisely what is and is not expected from a component that I'm testing. In workflows used for deployment, document the process of how and in what order things should be deployed. The other thing that I like about the CINCD process is that when you leverage infrastructure as code or IAC, the environment that you deploy isn't just spelled out in code that documents precisely how the resources are configured, but it also makes the creation of those resources repeatable and thus reliable because it's predictable. Not only that, but the files involved in infrastructure as code, they can be versioned and kept along with my project. In this video, I'm going to show you how to leverage all of this with an Azure Function app project by utilizing GitHub Actions and a bunch of other stuff. Now, before we get started, let me set the stage for what we're doing so you have a good picture on where we are in this entire process. First, when I push to the master or main branch, I want a workflow to run all of my tests to verify that I've got a green build. That's the continuous integration part of my workflow. The second thing I want is that provided it's a green build, I want to verify, create, or update all the resources in Azure that my project depends on. This is the infrastructure as code part. Let me show you what this looks like in my project. Here I've got a folder called Infra. If I look at that and I click on the main bicep.file or the main.bicep file, what this is is this is an Azure bicep file that is going to be used to provision my resources. Bicep is just a domain-specific language or a DSL that essentially sits on top of the Azure Resource Manager or ARM. When I compile this bicep file, it's going to generate an ARM template for me that I can use for my deployment of my resources inside of Azure. There's a lot of benefits to Azure, and I'm not going to detail everything about why I love bicep. Instead, I actually talk about it in this video up here, where I walk through creating the exact same bicep file that we're going to use in this project. I'll also include a link to that video in the notes below the video. There is one change that I've made to this, and I'm adding in an additional resource that you see right here. What this resource is going to do is it's going to create an Azure resource called the App Configuration Resource, and that's just a place for me to store name value pairs of settings for my project. It also integrates nicely with Azure Key Vault if I want to store any secrets there. But the thing that I like about it is that I can label different values of a setting, so I could have like a connection string and have that be for a production connection string or a staging connection string to give these different labels. What you see here is I'm creating a new Azure configuration resource, sorry, an Azure App Configuration Resource. I've given it the name, whatever the prefix I'm using for all of my resources I provision as dash app config. I'm setting it to the same location as where the resource group is, and then I'm setting my two keys. So the first key is called the app version key, and I'm setting a default value of that equal to just 0.0.0, and then I'm also going to set one for the commit hash, which is just a whole bunch of zeros. When I do my workflow, when my GitHub workflows run and I deploy to staging or production, those values are going to be dynamically set. Another thing that I had to do with this is that if I scroll down to the very bottom, is that I'm leveraging something called managed identities inside of Azure to where I want my Azure Function app. I want that to be treated as an identity and give it access to that app configuration resource. And I'm doing that through another bicep module that I wrote here. So this is my grant app service to app config. And what I'm doing is I'm passing in three parameters. I'm passing in the ID of the app configuration resource that I've defined. I'm passing in the ID of the function app and I'm passing in the principal ID of the identity of the Azure Function. And if we look at that bicep file, what that does is I'm first going and obtaining and a reference to the out of the box role that Microsoft has created for the app configuration resource. It's a role called the app configuration data reader and it's got a very specific idea associated with it. So I'm getting a reference to that resource and I'm doing that using the existing keyword in bicep. And then what I'm gonna do is I'm gonna create a new role assignment to where I can marry up the Azure Function app to the app configuration. And I'm doing that by creating the role assignment. And so here I'm saying that this role assignment is scoped to the resource group that I'm giving it a unique name. I'm giving it a GUID and I'm using how to create the GUID based on a couple of different parameters I'm passing in. And I'm saying I want to do that with, I wanna create this resource using this role definition that we just obtained above. And I wanna set it to a service principal is the principal type and the principal ID is the identity of the function app. What does this do? Well, now I don't have to use credentials. I can just have my, as long as my function app, the code that it's running is gonna have reader access to the app configuration. It just allows me to avoid having to use connection strings and secrets or passwords and stuff to be able to log in. So it just makes it a lot, my application a lot more secure. Essentially, the function app can query the app configuration resource. So that's my main bicep file. And as a reminder, this bicep file also calls another bicep module that's gonna set all of the app settings on the staging and the production deployment slots. Again, if you wanna know more about bicep and how I use it to provision all these Azure Function resources, check this video that I'm gonna link to in the video or I'll also include a link to it in the description for this video as well. Now, the last thing I want to have happen is that once all the Azure resources are created, I then wanna deploy my functions app code base to the Azure Function apps staging slot and I can do that for just testing and such. But why stop right here? Let's keep going and let's automate the rollout to production. So to do that, I've got one or two things I'm gonna do. The way it's gonna work is that when I tag my repository and push that tag to the GitHub repo, I'm gonna have a workflow that's gonna run and create a new release in GitHub, but it's gonna leave that release in draft state. And this is gonna allow me to modify the draft name, the description and explain what's in this release. And then the next thing I'm gonna do is that when I publish the release, another workflow is gonna fire and it's gonna handle the swapping of the production and the staging slots of my Azure Function. So enough talking, architecture explanation, let's get to it. All right, let's first look at my project that I've got on my laptop. And this sample project has two Azure Functions inside of it. It's got one called heartbeat and it's got one called simple math. Both of these guys are very basic. The heartbeat function just writes out the contents of a setting in an Azure app configuration instance. So you can see that here where I'm gonna log in, getting the default Azure credential. I'm then gonna go connect to the, or get a client for the app configuration using the app configuration that I've defined. And then I'm gonna grab the app version and the commit hash, those two settings from the app configuration. And I'm simply gonna write those values out to the response. So it's gonna give me the app version and the commit hash. That way we can see like, are we on a production slot or a staging slot, et cetera. Now the simple math function is interesting as it's got some tests and it leverages Azure app insights to track this entire request. So I'm gonna explain how I do this in another video which I'll link to in the description below and I'll link to it up there as well once it's available. So if you don't see anything up there just yet, make sure you subscribe to the channel to get notified when I publish it on this channel. But the point I wanna make here about it in this video is how the settings are used to configure app insights. So the simple mass index file, it initializes app insights and it does that through a call using something I've written called the app insights utils init default config. And if we take a look at that method real quick, you can see how I'm using the telemetry initializer to include in the deployed project version in every bit of telemetry that's sent to app insights. And I'm doing that by first again, I'm logging into, I'm getting an instance of a client that's connected to the app configuration. I'm gonna fetch the app version for whatever version of the app that we're currently looking at. Are we looking at the production version or the staging version of our app depending on the slot that we're in. And then I'm gonna set a context tag equal to whatever the application version is to the version that's in that setting. So what's cool about that is that every single time that I have a bit of telemetry that's sent to app insights, it's gonna include the version of the app where that telemetry was sent from. So was it from staging or was it an old version? So if there's a bug that I've already squashed, I wanna make sure I can filter that out when I look at app insights. Let's start by making sure that everything works by first running all of the tests for my project. So the first thing I need to do is I'm gonna need to prep my builds or my project. And so what I do is I've got the, I'm using Jest for all my testing. And so I needed to compile or transpile my Jest config.ts file down to JavaScript. And I'm gonna do that using this little prep script that I've written. Now after transpiling my Jest.config.ts file to JavaScript using my prep script, I ran the test and I can see that all of them are passing. The code coverage isn't great because we only have tests in one of the functions. Let's just chalk that up to do as I say, don't do as I do. So our project is good to go. So let's push it to an empty repository. I've set up for my GitHub account. I'm gonna start by adding the GitHub repo as a remote on the local project. And I'm gonna push all my code up to it. Okay, now we got our project inside of our Git repo. So we're ready to go ahead and get started. Now before I create and test a workflow, I need to do a couple of things in Azure first. So first I need to create a resource group where I want my Azure function app to go. And I can do that using the Azure CLI pretty easily. So to do that, I'm gonna run AZ group create and then pass in a name and then I'm gonna set the location equal to East US. And then I'm gonna add a couple other tags to it as well. And here if I jump over to Azure and I refresh the resource groups page for my subscription, I can see my resource group that I created called Sunshine Peacock. Now the other thing I need to do is I need to create an Azure AD app that the workflow is gonna use to create the deployment and interact with the Azure function app that the deployment is gonna create. So I'm gonna head over to Azure AD to my Azure AD tenant on the Azure portal and on the app registrations page, let's create a new app. Now next on the certificates and secrets page, we're gonna configure this app with a federated credential. And this is a really slick capability that exists between Azure AD and GitHub. What this is gonna allow me to do is basically configure this app to automatically trust GitHub credential with specific attributes that are defined when it requests it. So from my workflow, GitHub is gonna use the OpenID Connect protocol to authenticate with Azure.  So what I'm gonna do is I'm gonna set the federated credential scenario to the GitHub actions and set the organizations to my GitHub organization. I'm gonna set the repository to the name of my GitHub repository and the entity type is gonna be set to branch. Now, based on selection, I'm gonna set that to master. And what all of this is gonna do is effectively gonna say that if GitHub tries to authenticate from the master branch in this repository for this organization, we're gonna allow it and we're gonna let them get the token that they're requesting. So I'm effectively saying this app is tied to the master branch on the repo that we're working with. So what this does is this tells Azure AD that we trust GitHub requests for an access token via an action that was triggered on the master branch in a specific repository. So when it does it, go ahead and trust it. So now when my workflow authenticates, it's gonna authenticate as this app. The best part of this is there's no secret or certificate to keep track of and thus expire. So because all GitHub needs are the IDs of the Azure subscription, the tenant, and the ID of the app to know who to authenticate as. So that's even more secure than keeping track of a secret. It's basically treating my master branch in a very specific repository as a managed identity. That's really cool. So to give the workflow the ability to create these resources using this Azure AD app, I need to go to the resource group that we created and grant this app the owner role. And that's gonna be able to allow it to create deployments. This is leveraging the whole RBAC support that we have inside of Azure. So I'm gonna do this from the resources access control IM screen. I'm then gonna select add a role assignment. I'm gonna select the owner role and then I'm gonna add the Azure AD service principle to it. And now when I look at the role assignments, I can see that my Sunshine Peacock bot has owner role over this resource. Now the last step is to add some secrets to our GitHub repository so that the workflow can authenticate as the Azure AD app and define the resource group where they're gonna be created. Now I can do this in the GitHub UI or I can use the GitHub CLI to do this, which is what I wanna do. So I'm gonna include a link to the GitHub CLI in the description below the video in case you haven't seen that yet. So I've already installed it and I'm already logged in. So I'm gonna plug in the values of the subscription ID, the tenant ID and the app ID for the app we just created. All these values I can get from the homepage of our app itself, the app overview page. So there's the application ID, the directory or the tenant ID, and then I have to go fetch the subscription ID. Next I'm gonna set the secret for the resource group that we created and I'm gonna do that using the same setup. So I'm gonna go fetch the name of that resource group that we created called Sunshine Peacock and just make sure we get the exact name and I'll go ahead and add that as a secret as well. And finally, I wanna set the prefix name that I wanna use for all the Azure resources that are gonna be created in my deployment process. And just to confirm that these are all set, we'll come back over here to GitHub and I'll go to my settings for the repository, I'll go to secrets and go to action secrets and we can see all those secrets that we just created in the last minute. All right, now that everything is set up, so I can create the GitHub workflow. Now GitHub workflows go in a folder called .github slash workflow in my project. So I'm gonna go ahead and create that and then I'm gonna create the workflow file. I'm gonna name it the test deploy to staging .yaml file. And with the file created, I'm gonna give the workflow a name and then I'm gonna configure it when it's gonna run. So I'm gonna set this to only run on when there's a push to the master or the development branch. Next, set the environment variables for the workflow. And I like to include the secrets that I'm depending on existing in the GitHub repo as well just for reference, I just leave them commented out. Now one variable I like to create is one here called the deployment name. And that's just a string that contains the ID of the run in GitHub. Later I can use this to see which workflow run triggered which deployment in Azure. I'll show you that later when we get to the part of testing everything. The last block of the variables that you see down here, those are the ones that'll be dynamically created and set from within the workflow. And that's gonna be from the result of running the deployment job.  And I wanna be able to grab those things. Now finally, the last thing that I need to do before I create the jobs is to tell GitHub what permissions the workflow is gonna need. And this is what's triggering GitHub to issue a request using their open ID connect support to Azure AD using our Azure AD app that we created previously and gave it permissions to our resource group. Now the first job to create is the test job. So let me copy and paste this in and explain what it does. What this does is it's gonna get the name of run all tests and you can see its ID is named test here. I like to use this little condition so that I can check to see in the commit that's triggering the workflow to run to see if there's a specific string there. And if there is, then that allows me to bypass this job. So if it's just a simple commit and I don't need a whole CI and CD process, I can say don't do it. And in my case here, I just have with square brackets surrounding the string skip-ci. So if that's in a commit message that's triggering the workflow, it'll stop running the test job. And you'll see that all the other jobs in this workflow are dependent upon tests succeeding. So if it doesn't run, nothing else is gonna run. I'm first gonna go check out the full code base. And I'm making sure to do it nice and quickly. So I do it just using, saying I only want to do the fetch depth of one. So don't get all the commits, just get the most recent one. And then I'm gonna set up my node environment. I had an environment variable that I set for which version of node that I wanna use. In this case, I'm using node 14. So I'm just saying go ahead and go grab that. I'm then gonna go use the caching support that we have with GitHub to either restore all the dependencies from my node modules folder or I'm gonna go install all the dependencies. And what this does is this is just simplifying and speeding up the process of refreshing the npm install command. So in this case here, what I'm doing is I'm creating a key that I can use to see has anything changed. And the way I do that is by making a combination, concatenating a bunch of strings together. So I'm using the things like the operating system that I'm running on. In my case, I'm using Linux dash then version of node and then the node modules folder name. And then I add in a hash of the file package dash lock.json. So the next time I install something an npm package into my project, it's gonna change the package.lock file which will change that hash which will invalidate the cache and it'll go do a new download, a new install. This guy had this actions cache GitHub action has an output variable that will say if it hit the cache or not. So if it hits the cache, then we don't wanna do an npm install. So what I can do here on the next step when I'm installing the dependencies, I can say go look at that step. So the idea of that step was node module cache. So I'm saying look at the steps, look at the node module cache, his outputs and see if the output property named cache hit. If it does not equal true, then we had a cache miss. So we didn't find what we were looking for either it's the first time it's being run or my key for the cache change like I installed an npm package from the last time I ran it and that's gonna go ahead evaluate to false and so it'll run my npm install command. I then build the project, I'm pretty straightforward just doing a build task and then I'm gonna go run all of my tests. So here I'm just running my test using an npm script and then at the very end I'm going to save all of the code coverage results as just an artifact with this job. So I can go back and download those if I wanna look at that. One of the things too that you'll notice here is that I heavily use emojis in my descriptions for my different tasks. So for example, when I'm setting up node, I use a wrench, when I'm restoring everything I use like the recycle icon when I'm downloading stuff, use the down arrow when I'm building it, well obviously we're developers we pray to hopefully everything works. Testing it uses a test tube and then saving is just using a document. I like doing this because you'll see when we look at in GitHub it's really easy to see what's going on and what stage we're in. Now the next job is to deploy all of my infrastructure. So I'm gonna set the dependency of this job to on the test job so that it only runs when the test job is going to succeed. What this does first is it's going to check out the code base and the logs into Azure using the Azure login GitHub action. And this action is using the OpenID Connect support that GitHub includes and the credentials that we pass in from our secrets that we saved to obtain the access token. We save those secrets in our GitHub repository if you remember from our previous step. Now the last step is where we're gonna create the Azure resources using our bicep file that I showed you how to create in that other video. Notice that the two deployment name environment variables I'm passing in one of them is the name of the deployment that we set in our environment variables at the top of the file. And this is gonna have the name that includes the workflow run ID but it also includes a prefix to indicate that a GitHub workflow is what's triggered it. The other one that we have, the deployment name ID, that's the run ID. And that's included in my bicep file as a parameter because any bicep modules that my main bicep file is gonna call is gonna get this in their name. And this is gonna make it so I can easily look at all the deployments when we go over to Azure and I can see that all of them that were associated with a very specific run that we had from our workflow. And the last job, that's to deploy the app. Now this job has a dependency on both the test and the deploy infra job. So both of those must succeed before this one runs. And the bulk of this one is pretty straightforward, checking out the code base, setting up node, restoring the node modules cache or running npm install if the cache wasn't found and then building the project. Now let's get to the fun stuff. It's then gonna sign into Azure with the CLI using the same Azure login action using the same federated credential that we used earlier. And the next step, now the next step gets the outputs from the deployment job and it saves the values as variables within my workflow. Now it does this by storing the output of a query using the az deployment group show command. And I know what the deployment name is because we ran it in the previous job. So I can query for a specific value in from the deployment section of Azure that I executed previously using that bicep file. I'm looking for a function app name property, the name of the staging slot of the function app that I created in the bicep file and the name of the Azure app configuration resource that I created. So I'm grabbing all three of those values and I'm stuffing them into three different variables. Those are variables that I defined above as well if you recall in my environment section that I just said we're gonna set these dynamically. So I'm fetching those from the results of running the deployment job. And then to deploy my function, I also need to get the publishing profile for the function apps staging slot. So again, I'm gonna use the Azure CLI to retrieve this XML from the function app and I'm gonna store it as an environment variable in our function. So I'm kind of doing the same thing I just did a second ago. I'm running a script using the AZ CLI and I'm taking the results of that and stuffing it into a environment variable for this workflow that I can use. And this isn't terribly ideal because the publishing profile can aid some credentials and because I'm storing it in an environment variable and it's no longer, it's not a secret then it's being stored in the log that's clear text. So I just wanna mention that that is a potential vulnerability but it's one that I'm not too concerned about because the only people who could see it are those who have access to the logs for this workflow. And I also have a practice where I clean up the artifacts from a job so I can't see the logs after like a week or two. So they're only around just to check if there's an issue. Now to do this, I'm using the same output values that we just retrieved in the previous step from the deployment process. So I've got things like the slot name and the function name. And once I have the publishing profile I can use the Azure-functions action GitHub action to deploy my app. Now these last two steps this is like some special sauce that I like to add. This is my Azure app configuration resource contains two values or two settings for the version of the app and the commit hash from the repository that's currently deployed. And I'm using the Azure CLI to set the value of the staging label for these two different settings. All right, so let's see it work. I'm gonna save my workflow. I'm gonna push it to the repository up in GitHub. And actually I noticed that we had a little bug here and I forgot to actually set the branches on here. So while I have on the start part of my workflow I said on push I needed to have one more thing here for branches. And so what branches do I wanna support running to? Just forgot that one keyword. So I go ahead and save that and push those changes up. And here we can see that now our workflow has started. So we can see our three jobs. We have our running all tests, deploying infrastructure and deploy to Azure Functions app. So we'll go ahead and take a look at this first one and we'll watch this guy run. So we can see here that all of our tests pass and the build work, the NPM install work and all of our tests pass as well. So now we're onto the stage of deploying our infrastructure. So let's go over and take a look at that step because that's gonna start running now. Here we can see that our infrastructure job has also completed. So we logged into Azure successfully. We ran our deploy infrastructure job and we completed the job as well. And we can see that our Azure Function app is now starting to be deployed. But while that's going on, let's go jump over to our deployment and let's check it out real quick.  And if I look at our list of deployments, we can see that we had three deployments. Now, if you recall, my bicep file, the main bicep file that we called from our GitHub action, it was, that main one was actually calling two other bicep modules. And every time it calls a separate one, those are independent deployments. So you can see we gave our workflow or our deployment job, we gave it a name. I called it my gh underscore CICV underscore and then the ID of the workflow run. And we can get that ID from the URL of the run. So over here, if I go to our summary of this, we can see that the run up here ends in 224. And if I jump over here to back to my resource group, we can see that it ends in 224. So not only that, I also passed in that ID as a parameter to this deployment. So I then included it as part of the name for the two other modules that my bicep file was calling so that I can tell that all three of these went together. So if I look at this first one, we can see that our inputs that we passed in, the prefix was Zara, the deployment name ID was that same GitHub workflow run ID. Everything's deployed to East US. We have a bunch of outputs like the app insights instrumentation key. There's the name of our Azure application configuration resource, there's the name of our Azure function app and then there's the name of the staging slot. And if I come back over here to the resource group and I look at all the different items that we have, here we are, we've got all of our different resources that have all been set up. I can go look at the Azure function. I can see that we've got a pair of deployment slots right here. We have our primary one and our secondary one for staging. I go look at staging. I can look at the configuration for the configuration. We can see that I have all my app settings that are listed here as well as like unique value for one that's set up with a staging slot. So that's gonna be different from our production slot. We can also go over here to our resource group. And if I go look at the app config resource that we created and if I look at his configuration explorer, what we'll see here is we also have our two default keys that have been set up. So we have our app version and our commit hash with the default values of just zeros and all zeros for the commit hash. And notice there's no label set here. So once our staging deployment runs, it should update these two values or set new values using the label staging so that we have a separate value that we can look for with this. Let's go back over to our GitHub workflow. Let's see where we are on the Azure Function deployment. And we can see here that our deployment is still in process. This is also a good way to see how all of these different emojis that we're using here, it makes life a little bit easier to be able to quickly see what's going on. So I can easily see where the login is happening with Azure using that key that when I'm pulling out the output variables from the deployment job, I'm using a magnet here to kind of pull those things out. We can see where we did the build, right, everything works, et cetera. So we're still going through and we're still in the middle of the deployment. This can take a little bit of time when we do a deployment. This is probably the longest process, which is interesting that it is the longest process considering the creation of all those resources only took about, I think it was only about two minutes. Let's take a look here. Yeah, it only took two minutes to do the entire infrastructure deployment to log in and then create all those different resources here. So it looks like our function got deployed, but we ran into an error when we were setting our application configuration settings. So let's go take a look at that. Let's open up and see what it says. And it says that our argument, the name expected one argument, we can see we're passing in the name here. Now, oh, but look at that, but it's blank. That's interesting. So let's go take a look at our function, our GitHub workflow and let's see what happened. So if I scroll down to the part where that is, we're gonna do about a live debugging here. And here's our configuration value and it's a secret. We haven't set this secret, but we shouldn't need this secret because I'm pretty sure that we, yep, we were pulling it out as an environment variable. So we don't need this as a secret here. Instead, what we needed is this really should be an environment variable on these two values. Because remember, we're pulling this out on the fly when we do the extraction from the results of our job where we were also getting our function name and you see we were using those as for our settings there. So this really should have been an environment setting. So let's save that change. I'll come over here and say, we'll update the name for AZ app config and the workflow and I'll go ahead and push those changes. Now that our deployment has been fixed, we're gonna come over here and look at our Azure Function app that was created. And I'm gonna come over to the staging slot and we'll look at the configuration of our staging slot. And what you'll see when I show the values here, what you'll see is that the configuration label has been set to the staging label. Now I can also go over here and look at my functions and I can see my two Azure functions that have been deployed. All right, so those are all up and running. We're in good shape there. If I now come back over here to our resource group and I look at the app configuration that we created and I look at his configuration explorer, we can see that we've got a couple of different values here. We see we have a staging label set up. And so if I show all the views for it, we can see that when we query for the staging label for the key app version and same thing with the commit hash, the staging label, we're gonna get values that we want to see just in staging. Now after this initial deployment, we need to add one more secret to the GitHub repo, the name of the Azure app configuration resource. And the reason we have to do this is because that we're gonna be updating the values of the production settings when we do a deployment. And right now these workflows run separately than the one that we just created. So we don't have the context of the name of the deployment to query the different outputs that came from our deployment. So the way I'm gonna do this is I could use the GitHub browser interface or the CLI to create the secret. So I'm gonna use the CLI to do this and this is the name of our configuration. So I'm gonna go ahead and grab this and I'm just gonna run this in my, run this in the command prompt and I can look at the secrets that we've defined for our project and we can see that we have the app config name has now just been set. Now, well, this is all cool. Let's go further and let's see how to automate the swapping of the staging and the production slots. Let's drop two new workflows in the repository and I'm gonna push them up to GitHub. Now the first one, draft release YAML workflow is gonna fire when a new tag is pushed the repository and it creates a new release in draft mode on the repository. And what this does is it's gonna give me a chance to set the release name and the description of what's included in the release. So now that I've pushed a tag, let's go take a look and see that in our project. So I come over here to the code view and if I look at the releases, I can see that we have one release here of the 1.0.1 release that's in draft mode and that was kicked off here by our release workflow. So we can see here that we drafted a new release and creating a new draft release just simply got the tag from the push and then it went through and it created the new draft release. So again, I'm over here and I can see the releases here. Now let's look at the deploy release workflow. Now unfortunately I've got one secret that I need to create and that's the trusted credential support that Azure AD has with GitHub. It doesn't support the trigger that's gonna cause this workflow to run because what this workflow is going to do is that when I look at the deploy release, this is going to run whenever I publish a release. Well, because we just did that with a tag, when I publish this release, it's gonna run for a specific tag, that's its context. And I can't use a specific tag because that would be like I have to go back to the Azure Active Directory trusted credential for this Azure AD app and I'd have to add in the tag name every single time. That's not very doable. So unfortunately I can't use that style of authentication in this case. So instead I'm gonna need to go create a client secret for the Azure AD app and I'm gonna store it as a secret in the GitHub repository. So I'll come over here to my Azure AD app that we had created for all of our uses here. I'm gonna go over to the certificates and secrets and I'm gonna create a brand new secret. I don't care about the description right now and this is our value. So I'm gonna go ahead and copy this value. I'm gonna come back over and add this as a secret. So it's gonna be called my Azure client secret. So go ahead and paste this value in, copy that and drop it in. All right, that value's now been set. If I now come back over to my repository and just verify that the secret was actually set and sure enough there it is. It was updated just now, so we're in good shape. So now with the secret set, let's take a look at this workflow. The first job is gonna first log in to Azure using the client ID and secret as a service principle. It's not like the standard login we were using in the previous workflow. It's then gonna use the Azure CLI to swap the production and the staging slots by calling the AZ function app deployment slot swap command. Now once the slots have been swapped, the next job is then gonna update the production labels of the settings in the Azure app configuration resource to reflect the production version and commit of the app that's running in the production slot. So let's see this work. I'm gonna go to the releases in the repository and edit the draft and then I'm gonna hit publish. And this is gonna kick off our workflow. Here we can see that we are logged into Microsoft Azure and then we are running the swap command using the Azure CLI. And this just takes a minute to finish. Now that the workflow is finished let's check out our deployment. So I can do that by running over to our resource group again. I'm gonna go to the app configuration resource. I'm gonna look at the configuration explorer. And this time we're gonna go ahead and expand everything and show all the values. And here we can see we've got our default value of all zeros for that version. If we're in staging we get the staging label or the staging value. And if it's a production environment or production label we're looking for then we're gonna get the 1.0.1 label. And we can see we've got a couple of different commits that are actually being used here. And it's because of when we swapped slots of which ones were being used at that time. It's pretty cool, isn't it? So you've now seen a structured deployment of an Azure Functions app complete with continuous integration, continuous deployment processes that also leverages infrastructure's code to provision the Azure resources. And going forward our entire deployment process either to staging or production is entirely handled by pushing commits to the GitHub repos master branch and controlling the rollout to production using GitHub releases. So I don't have to go set any more secrets or anything like that. Everything has all been defined, we're all good to go and it'll all be automated. So what do you think? Let me know by dropping a comment below and let me know if you wanna see more videos about Azure Functions or Bicep or automating CINCD processes with GitHub Actions. If you like this video, please give me a thumbs up and subscribe by smashing that big red subscribe button below the video. That way you'll be able to see when I publish more videos for professional developers related to Microsoft 365 and Microsoft Azure, including topics on Bicep, Azure CD, CI and GitHub Actions. And don't forget to check out my other videos where I show you how to create a Bicep file that I used in the CINCD process as well as my other videos in my channel about Azure Functions and GitHub Actions.


be helpful if I could go to the right page. Well hello everybody and a welcome back to my channel. Today we are working on Monday April 10th through Sunday April 16th as always. Let's take a look back at last week. However I haven't filled in anything since we last met. All these things happened I just haven't filled them in. So anyway today's actually Sunday. Yesterday I didn't really do much but that's okay. It is very very gloomy and rainy outside so my lighting's a little askew. Also if you end up hearing any thunder and things like that, don't mind it. It's just the weather. So that being said, let's start working on this week. I'm actually going to be working in my Chrissy and Designs the Celebrations Collection binder. I actually ordered, these were two additional sheets you could order was the Easter and Christmas. I'm actually going to use a bunch of the stuff from the Easter one because why not? I know a lot of you that watch my financial videos are probably wondering why I got an Easter one. I will tell you. Actually before I get started on that because it's a whole other tangent. I just got some new washes I figured I'd show you guys. I got these both from Target. I might actually use this. These are just these cute little honeycombs that are like a coppery color and then on the underside are kind of like a teally color. This one I just thought was cute but I'm not going to use it in this video because it doesn't kind of go along with that. And then I also have this washi sample that I thought would be really cute with all of the pastel stuff. So let's get into it. Got my little washi cutter here and oh okay. So good question. Why do I have an Easter sheet? Well the majority of my family celebrates Easter. So this upcoming Sunday is Easter and I will be attending a lunch thing with my grandmother that lives in town. I won't be going to church but I will be going to a lunch with her and some of my other extended family members. So I don't know. Figured I'd put it in there. And it's also fun to be a little bit festive when I'm not actually like festive in my religious beliefs. You know what I'm saying? But it's kind of fun. Like I don't celebrate Hanukkah but I always put in Hanukkah on my planner and I don't know. It's just kind of nice to know for all of my friends that do celebrate certain holidays to know when they are and I don't know. It's just kind of fun. And you got to make your planner work for you. You know if you don't want to put in holidays and that works for you, like you do you. You know what I'm saying? Judgment free zone on my channel. Well I can't help you in the comments but I can sure delete some stuff if I need to. All right so I am really liking this like new way that I've started putting in the washi for my times at work to just kind of like factor those in. Makes my life a little bit easier especially if I have a particular appointment to get to or something like that during work which does happen. So yeah but um oh my gosh we just got our taxes done at work. I'm so excited. They happened on late Thursday night so my boss is the only one that went but I had a ton of prep I had to do like a week and a half worth of prep or almost two weeks worth of prep.  I thought my own personal taxes are paying in the butt. Oh my gosh. No fun you guys. No fun but anyway we got through it and now next year hopefully will be a whole lot more organized.  Let's put in some of my Chrissy and design stuff. I will put in my little cute little happy Easter thing right down here. I'll put it kind of into Saturday because I do like to show the numbers you know the the times I guess if you will. All right let's go into weekend right here. Actually I think I'm just gonna push this up all the way to the top. I don't really care that it doesn't show the actual day because whatever. Oh it is raining hard out right now. Hopefully that's not super distracting on the video. All right so let's see y'all. I don't really have like much going on this week. I'm gonna put in my videos. All right I literally don't know what I'm doing for my Wednesday video you guys yet so. All right I'll put this down at the bottom. Obviously we'll do the plan with me because we're watching that and um if you guys remember a couple of weeks back I actually went to the Ramsey event for money and marriage and I did take a little vlog so I did clip that all together. I actually already have it edited and ready to go but I haven't actually done anything with it yet so I am going to use that for my Financial Friday this week and my Wednesday video. I don't know what I'm doing yet you guys. I just I don't know what I'm doing yet and then on Saturday I have lunch to go to with my grandmother so I am going to I think use this little Easter guy and the green guy. I kinda want to have like a little long thing on here too but let's see. Let's see what I got in here. All right I think I'm gonna use this Aaron Condren sticker book.  So lunch is at like 1 30 ish but I'm imagining that we're gonna be staying a little bit later and when I mean we I mean like my uncles will be there and stuff too so um oh I shouldn't have done that yet so let me put this back down and then I'll write on it. So put this in all right just put that little Easter thing up there which is cute and then I actually have these these are just like these little emoji stickers that I got from I think like the dollar store a long time ago.  All right and then in the morning I think I'm gonna film my plan with me then so um I'm gonna write in filming as well again I'm gonna come back to this guy and use some things let's see let's see if there's any other little extra strips in here I don't know if there is I think there's some in my other book that I have this one I've used a lot in um okay so I'm gonna use this little blue guy here just really anything in the pastel range I'm just I'm just gonna go for it you guys I'm just gonna go for it and then before this I'm gonna do um some filming but I'm gonna cut this down just a little bit and I won't be keeping this little tail I will keep some tails I won't keep them all though okay don't worry all right so let's see I'll use one of these little guys oh and just to follow up from last week unfortunately I did not go and see any houses um there's some stuff going on that I don't really want to stay on the camera and I'll probably follow up next week as to what the resolution is but um I didn't go and see anything however there's been some really um great things that have just hit the market so I'm very hopeful that that is going to be um happening soon um but I don't know um I know a lot of you have been asking in the comments you know well why are you looking at existing homes when you want to build well here's the deal the city has not released certain lots for sale yet because they're like building the roads if that makes sense so those are gonna be going up for sale I hear that they're going up for sale like in the fall so in the meantime I still want to look for existing homes because you can usually get a better deal for an existing home you know what I'm saying but I don't know so I'm keeping that option open to actually building a house but I'm not completely closing the door on something that's already existing so that being said I just want to keep looking because you never know what kind of deal you're gonna get and some you know if it feels right that's what I want it to be I want it to feel right I want the neighborhood to be good I just I want to get a good vibe off the place like I just don't want to settle and I mean I'm kind of picky but I'm also like not that picky I don't know I mean I'm coming to terms with not everything is going to have like the exact right aesthetic for like paint colors and flooring choice and whatever but sometimes you can get a deal on that and you can end up changing it you know what I'm saying so I'm coming to terms with the cabinetry color and those big things not being perfect because there are ways to change those you know like keep the existing cabinets but then like either restaining them or like doing other things to like jouge up your space so I'm keeping a very open mind and I know that I haven't vlogged in a long time for homes but honestly I haven't looked in anything so which is kind of sad and I really want to start looking for stuff but I just there's been some other issues so I'm just not gonna go into that on my youtube channel just yet maybe I'll go into it once it's resolved but whatever alright and I want to put in my laundry sticker my week is so boring you guys like I kind of apologize but then I kind of don't really apologize because y'all know I'm boring okay okay we'll go to the pastel laundry stickers and let's see what looks good for the laundry stickers let's use a light blue this is like all off-camera but I'll do um actually hold on hold the phone y'all we'll do another one of those little like long things because I'm just trying to use up what I have if you guys have noticed the last couple of plan with me is I've been kind of like a little uninspired and it's not I mean I'm just not like into the themes as much like I feel like I should be like really into themes or something that I'm just I'm just not and I'm trying to use up and not buy more stickers which is kind of an oxymoron because I just bought these but this is washi tape totally separate thing totally separate thing but I don't want to buy any more stickers than I already have I want to use up what I have because it's getting ridiculous and I do need to do like a big purge of things because I'm like looking off camera over here and it's getting it's getting intense you guys so I might be holding a like d-stache giveaway thing on my Instagram part of the d-stache just to let you guys know is um if I do d-stache anything I do not sell anything I'm not I don't I don't like to do that that's just not my deal but I do like to just give stuff away just you can take it you can have it but the only deal is you can't tag me or the other shop owners when you use it the reason why is because I do get sent a bunch of PR packages and if for some reason I used some of their stickers but you know I used only a partial kit or maybe it just wasn't my style I never want to like offend anybody if that makes sense so um it's more like you can just have it and use it and feel free to shop tag the shop owner um but just don't let them know you got it from me because I can't keep track of what's been sent to me and what I've purchased because it's all kind of like combined um and not to mean that I'm ungrateful I'm very grateful don't get me wrong but um some people don't even contact me and ask me what I like out of their shop they just send me stuff which I really really appreciate however if it's not my style I like to just pass it along to somebody that it would be their style because why not also um I will have a giveaway coming up probably sometime this week I've had these like two packages from Aaron Condren that I have just been putting off giving away and I don't know why I don't know if that's going to happen on Instagram or Facebook um feel free to check the links um down below I will be posting on one of them sometime this week I don't know when maybe I don't know whatever I just have two packages that I'm like I need to just give those away they've been sitting here for too long um I don't want to look at them anymore and nothing's wrong with them they're great they're brand new it's a whole big package of stuff from Aaron Condren so I just have to take some photographs and make a post and post it so um feel free to tag or not tag me feel free to follow me on Instagram or Facebook and it'll happen on one of those social media platforms so anyway I think this is going to be it for this week um I know it's really boring so I do apologize um this is a little bit more interesting but not really but anyways um so yeah the plan with me is obviously right now you're watching it I don't know what's going to happen on Wednesday but I'll figure something out and then Friday is going to be that vlog for my marriage and money event um which was really fun so I kind of like recapped my experience of being a volunteer which was amazing so anyway I'm gonna let you guys go thank you so much for hanging out with me for a little part of your day if you like these videos make sure to give it a thumbs up whoops I always forget you gotta like thumbs it up like this I feel like I'm breaking my wrists when I'm doing this but it looks totally normal to you guys and also if it's your first time here and you like my content or want to know what I'm up to um throughout the week feel free to hit the red subscribe button I post every Monday Wednesday and Friday and sometimes I do sneaky little giveaways like I just talked about and then other times I do sneaky little videos too you never know when stuff's gonna come up so anyway I'm gonna let you guys go thanks so much for hanging out with me and I will talk to you all in my next video bye guys