1 00:00:00,000 --> 00:00:02,940 Okay. Hello and welcome. We're going to unpack some interesting source 2 00:00:02,940 --> 00:00:07,280 material today. That's right. We've been looking at the GitHub page and the 3 00:00:07,280 --> 00:00:13,060 official website for a Woodpecker CICD. Exactly. And our mission here is really 4 00:00:13,060 --> 00:00:18,300 to dig into this, go beyond just the surface level specs. Yeah. Pull out the 5 00:00:18,300 --> 00:00:23,480 key insights, understand what Woodpecker actually is, how it works. And why it 6 00:00:23,480 --> 00:00:28,440 might matter to you, especially maybe if you're newer to these CICD ideas, we 7 00:00:28,440 --> 00:00:32,820 want to make it accessible. Definitely. And before we dive in, this deep dive is 8 00:00:32,820 --> 00:00:36,540 brought to you with support from Safe Server. They're a fantastic resource if 9 00:00:36,540 --> 00:00:40,740 you're looking at hosting software like the kind we're discussing and they can 10 00:00:40,740 --> 00:00:44,300 really help with that whole digital transformation piece. Good to know. You can 11 00:00:44,300 --> 00:00:51,140 find out more over at www.safeserver.de. Again, that's www.safeserver.de. Great. So 12 00:00:51,140 --> 00:00:54,180 yeah, whether you're just curious about automating your code, maybe looking for a 13 00:00:54,180 --> 00:00:58,380 tool, or just want to understand what makes a CI-CD engine tick, let's jump 14 00:00:58,380 --> 00:01:01,340 right in. Alright, so looking at the sources, the first thing that kind of 15 00:01:01,340 --> 00:01:05,540 jumps out is Woodpecker's own description. They call it a simple yet 16 00:01:05,540 --> 00:01:13,160 powerful CI-CD engine with great extensibility. Simple and powerful. That's 17 00:01:13,160 --> 00:01:17,700 often the tricky balance, isn't it? It really is. And maybe we should quickly 18 00:01:17,700 --> 00:01:22,500 define CI-CD for anyone listening who's new to it. A good idea. So CI-CD stands 19 00:01:22,500 --> 00:01:27,560 for continuous integration and continuous deployment. Basically, it's 20 00:01:27,560 --> 00:01:31,260 about automating all those steps. Right. You know, taking code from a developer, 21 00:01:31,260 --> 00:01:35,020 testing it automatically, making sure it works. And then getting it out there 22 00:01:35,020 --> 00:01:39,620 reliably, whether that's onto a server or into users hands, automating that 23 00:01:39,620 --> 00:01:42,660 pipeline. Exactly. So Woodpecker is the engine that runs those automated 24 00:01:42,660 --> 00:01:47,100 workflows. And digging into the sources, a really core part of how it tries to be 25 00:01:47,100 --> 00:01:52,700 both simple and powerful is its use of Docker containers. Ah, Docker. Okay, that 26 00:01:52,700 --> 00:01:56,100 makes sense in modern development. So how does it use them? Well, basically every 27 00:01:56,100 --> 00:01:59,540 single step in your pipeline, like compiling your code, running your tests, 28 00:01:59,540 --> 00:02:03,660 building the thing you want to deploy, it all runs inside its own separate Docker 29 00:02:03,660 --> 00:02:09,100 container. Okay, so isolation. Exactly. The big insight there is consistency. Your 30 00:02:09,100 --> 00:02:13,100 build environment is neatly packaged, so it should, you know, run the same way 31 00:02:13,100 --> 00:02:16,460 every single time. Right. Regardless of the machine, it's actually running on 32 00:02:16,460 --> 00:02:20,300 underneath. Yeah. And portability, too, I guess. Absolutely. If it runs in Docker, 33 00:02:20,300 --> 00:02:23,620 you can pretty much run it wherever Docker runs. And that container approach, 34 00:02:23,620 --> 00:02:27,340 that must link to the great extensibility part they mentioned. It does, 35 00:02:27,340 --> 00:02:31,340 yeah. The sources really highlight this. If a standard Docker image doesn't quite 36 00:02:31,340 --> 00:02:35,540 cut it for a specific task you need. Like something really specific. Yeah, you can 37 00:02:35,540 --> 00:02:40,340 build custom plugins. These are essentially just purpose-built Docker 38 00:02:40,340 --> 00:02:45,380 containers designed to do that one specific job within your pipeline. So the 39 00:02:45,380 --> 00:02:49,220 plugin system is the key way you extend it. And you said the sources point to a 40 00:02:49,220 --> 00:02:53,420 website for those. Yep. There's a dedicated plugin overview site. It lists 41 00:02:53,420 --> 00:02:57,620 plugins from the core team and from the community, which suggests, you know, 42 00:02:57,620 --> 00:03:01,380 there's an active ecosystem around it. That's good to see. An active community 43 00:03:01,380 --> 00:03:05,060 makes a big difference with open source tools. Definitely. And that flexibility 44 00:03:05,060 --> 00:03:08,580 also shows up in how it handles workflows. The sources mentioned you can 45 00:03:08,580 --> 00:03:13,020 have multiple workflows for just one project. Okay. And importantly, these 46 00:03:13,020 --> 00:03:16,140 workflows can even depend on each other. You can chain them. Oh, right. So you 47 00:03:16,140 --> 00:03:20,860 could have, like, test run first and only if they pass, then the build workflow 48 00:03:20,860 --> 00:03:25,660 kicks off. Exactly that kind of thing. Allows for pretty complex setups even 49 00:03:25,660 --> 00:03:30,300 with that focus on simplicity. Speaking of simple, let's talk footprint. Yeah. 50 00:03:30,300 --> 00:03:35,260 Because the numbers in the sources, they seemed, well, pretty low. They really do. 51 00:03:35,260 --> 00:03:40,980 It's described as remarkably lightweight. We saw figures like around a hundred 52 00:03:40,980 --> 00:03:45,780 megabytes of RAM for the main server part. A hundred megs, that's tiny. And just 30 53 00:03:45,780 --> 00:03:49,060 megabytes for the agent component when it's sitting idle. Wow, okay, the insight 54 00:03:49,060 --> 00:03:52,420 there is clearly accessibility, right? Totally. It lowers the barrier massively 55 00:03:52,420 --> 00:03:57,180 for self-hosting. You don't need some huge beefy server. It could run on pretty 56 00:03:57,180 --> 00:04:01,660 modest hardware, good for smaller teams, individuals. Hobby projects, you name it. 57 00:04:01,660 --> 00:04:04,860 And that ties in with the default database too. Which is Squidlight, 58 00:04:04,860 --> 00:04:09,260 according to the sources. Right. Which, again, reinforces that ease of setup. 59 00:04:09,260 --> 00:04:13,340 It's usually just a single file, minimal fuss. Yeah, it all points towards being 60 00:04:13,340 --> 00:04:17,540 easy to get started with, and the docs are available. Oh yeah, the sources point 61 00:04:17,540 --> 00:04:23,180 to woodpecker-ci.org.doc-centro for documentation. Good. And another nice 62 00:04:23,180 --> 00:04:27,340 touch, they mention translation efforts. There's a self-hosted weblate instance 63 00:04:27,340 --> 00:04:31,500 for translating the interface and docs. Making it accessible globally, that's 64 00:04:31,500 --> 00:04:35,060 always good to see. Now, abstract concepts are one thing, but seeing it 65 00:04:35,060 --> 00:04:41,020 used, that always helps. Did the sources mention any real-world use cases? They 66 00:04:41,020 --> 00:04:45,300 did give one specific example, Codeberg. Right, the Git hosting platform. 67 00:04:45,300 --> 00:04:49,700 Yeah, described in the sources as an alternative Git host, focused on privacy 68 00:04:49,700 --> 00:04:54,020 and free software, and woodpecker is their main CI-CD engine. Okay, that's 69 00:04:54,020 --> 00:04:56,580 actually a really interesting point. The insight there is maybe the tools 70 00:04:56,580 --> 00:05:00,860 philosophy aligns with Codeberg's. Seems likely. You know, open source, lightweight, 71 00:05:00,860 --> 00:05:05,260 self-hostable, focused on simple controllable automation. It fits that 72 00:05:05,260 --> 00:05:09,340 free software privacy conscious ethos quite well. Yeah, that makes sense. It's a 73 00:05:09,340 --> 00:05:13,660 good endorsement. What about the project itself? Licensing, community size, that 74 00:05:13,660 --> 00:05:17,980 sort of thing. Okay, so the source code itself is under the Apache 2.0 license. 75 00:05:17,980 --> 00:05:21,660 Pretty standard permissive open source license then. Exactly, it means you can 76 00:05:21,660 --> 00:05:25,980 use it, modify it, even in commercial stuff, quite freely. Just need to keep the 77 00:05:25,980 --> 00:05:30,460 license info. And the documentation had a different one. Correct. The docs are 78 00:05:30,460 --> 00:05:30,700 under 79 00:05:30,700 --> 00:05:36,860 Creative Commons attribution share alike 4.0. Ah, the standard for content sharing. 80 00:05:36,860 --> 00:05:41,940 Share, adapt, but give credit and share back alike. Precisely, encourages 81 00:05:41,940 --> 00:05:46,300 community improvement of the docs. Makes sense. And those github stats you found, 82 00:05:46,300 --> 00:05:51,660 they look pretty healthy. Yeah, the numbers were 5.1 thousand stars, 421 83 00:05:51,660 --> 00:05:57,740 forks, and 485 contributors. 485 contributors. That definitely points to 84 00:05:57,740 --> 00:06:01,820 an active community. It does. And if you listening find it useful and want to 85 00:06:01,820 --> 00:06:05,420 support it, the sources mention Open Collective and github sponsors as ways 86 00:06:05,420 --> 00:06:09,740 to become a backer. Good to know there are ways to contribute back. And just as 87 00:06:09,740 --> 00:06:14,060 a tech detail, do they list the main languages used? They did, yeah. It's 88 00:06:14,060 --> 00:06:19,380 mainly go for the backend, it seems, then view, typescript, CSS, makefile, and 89 00:06:19,380 --> 00:06:24,540 JavaScript listed. So a fairly modern stack. Go for performance view and 90 00:06:24,540 --> 00:06:28,620 typescript for the front end. Interesting mix. Yeah, it gives you a peek under the 91 00:06:28,620 --> 00:06:31,220 hood. Okay, so let's step back a bit. We've dug through the sources on 92 00:06:31,220 --> 00:06:34,740 Woodpecker. Why does understanding a tool like this matter for you, the listener? 93 00:06:34,740 --> 00:06:39,420 Well, I think it provides a really concrete, understandable example of how 94 00:06:39,420 --> 00:06:43,900 automation actually works in software. Right, it takes these sometimes abstract 95 00:06:43,900 --> 00:06:48,700 ideas like CI, CD, containers. It shows them in action in a tool that's designed 96 00:06:48,700 --> 00:06:55,260 to be simple and resource efficient. It demonstrates you don't always need huge 97 00:06:55,260 --> 00:07:00,060 complex beasts to do powerful automation. Yeah, it demystifies it a bit. You see, 98 00:07:00,060 --> 00:07:03,980 the principles open source, containerization for that consistency we 99 00:07:03,980 --> 00:07:07,460 talked about, extensibility through plug-in. It makes it feel more tangible, 100 00:07:07,460 --> 00:07:11,660 less like, you know, abstract magic. Okay, so let's quickly recap the main 101 00:07:11,660 --> 00:07:12,100 takeaways 102 00:07:12,100 --> 00:07:15,260 from our deep dive into the Woodpecker sources. That's good. We've seen it's 103 00:07:15,260 --> 00:07:20,260 pitched as simple yet powerful. It's open source CI CD, built fundamentally on 104 00:07:20,260 --> 00:07:24,860 Docker containers, which gives it consistency and portability. Look at that 105 00:07:24,860 --> 00:07:29,340 really lightweight footprint using Squallet by default, making it super 106 00:07:29,340 --> 00:07:33,180 accessible for self-hosting. Right, and it's extensible through a plug-in system 107 00:07:33,180 --> 00:07:37,140 with an active community contributing. Plus, it's used in the real world by 108 00:07:37,140 --> 00:07:41,400 projects like CodeBird, which kind of reflects its core values. We basically 109 00:07:41,400 --> 00:07:44,620 tried to connect the dots from the sources to give you the overall picture. 110 00:07:44,620 --> 00:07:49,020 Exactly. And a final thank you again to Safe Server for supporting this deep 111 00:07:49,020 --> 00:07:53,220 dive. Remember, they can help with hosting software and supporting your 112 00:07:53,220 --> 00:07:59,300 digital transformation. Find out more at www.safeserver.de. Definitely check them 113 00:07:59,300 --> 00:08:03,860 out. And maybe a final thought to leave you with. Go on. Consider how often really 114 00:08:03,860 --> 00:08:07,660 powerful systems like effective automation aren't just one giant complex 115 00:08:07,660 --> 00:08:12,180 thing, but they're built by combining simpler, focused, well-designed pieces 116 00:08:12,180 --> 00:08:18,060 like Woodpecker aims to be. How could thinking that way maybe change how you 117 00:08:18,060 --> 00:08:23,100 approach building things yourself? Or even just understanding the tech behind 118 00:08:23,100 --> 00:08:27,740 the services you use every day. Something built from simple blocks can create 119 00:08:27,740 --> 00:08:33,100 something complex and powerful. Exactly. Something to think about.