About this video
What You'll Learn
- Install act-runner locally or in Docker, then register it against Gitea Cloud.
- Use Gitea Actions workflow files to run checkout, setup-go, and build steps.
- Configure push, pull request, cron, and tag triggers with branch protection checks.
Matti Ranta joins David to walk through Gitea Actions end-to-end: installing act-runner, registering it against Gitea Cloud, and writing a workflow for a Go project. Also covers GitHub Actions compatibility, packages, and triggers.
Jump to a chapter
- 1:17 Introduction & Guest Welcome
- 2:23 What's New in Gitea: Actions Fully Released
- 3:01 Gitea Cloud and Project Foundation (Commico)
- 4:55 Host's Impressions & Community Engagement
- 6:50 Other New Features: Gitea Packages
- 8:53 Transition to Hands-on Demo
- 9:10 Gitea's Approach: Compatibility and Innovation
- 11:11 Demo Setup: Screen Share Issues
- 12:55 Starting the Demo Environment
- 13:20 Exploring the Gitea Actions Documentation
- 14:16 Demo Plan: Building a Pipeline for a New Project
- 15:10 Running Gitea Actions Locally with `act`
- 17:30 Creating a Simple Go Project
- 18:50 Setting up a Gitea Actions Runner
- 19:02 Installing the `act-runner` Binary
- 23:02 Registering the Runner with Gitea Cloud
- 23:37 Creating a Repository on Gitea Cloud
- 25:04 Pushing Project Code to Gitea
- 25:21 Runner Registration Success & Starting Daemon
- 28:21 Writing the Actions Workflow File (.gitea/workflows)
- 30:00 Understanding `runs-on` Labels and Default Images
- 31:00 Adding Workflow Steps (Checkout, Setup Go, Run)
- 31:26 Pushing Workflow & Triggering First Run
- 31:53 Monitoring Workflow Run in UI
- 32:26 Debugging the Failed Workflow
- 34:35 Testing Workflows Locally with `act_runner exec`
- 35:34 Workflow Triggers (UI Dispatch, Cron)
- 36:01 Supported Triggers (Push, Pull Request, Cron, Tags)
- 36:59 Integration with Branch Protection & Status Checks
- 38:55 Reflections on Gitea Actions Familiarity
- 40:00 Runner Configuration (Images, Host Mode, Security)
- 41:59 Future Roadmap for Gitea Actions
- 46:34 Future Roadmap for the Gitea Project (LTS)
- 48:02 Discussion on Repository Mirroring for Redundancy
- 49:39 Conclusion and Thank You
Full transcript
Generated from the English captions. Timestamps jump the player to that moment.
Read the full transcript
1:17 Introduction & Guest Welcome
1:17 Hello, everyone, and welcome back to the Rawkode Academy. Happy New Year. I hope you all enjoyed your vacation time off, family time, or whatever you got up to over the last few weeks. My name is David Flanagan. I'm the host here, and this is an episode of Rawkode live. Rawkode live is a show where we take a look at the latest and greatest open source tools within the cloud native and adjacent spaces. And today, we are doing a bit of a follow-up where we previously took a look at Gitea, an open source alternative to using GitHub, GitLab,
1:47 etcetera. And today, we're gonna see what's new and take a look at Gitea actions. Same as last time, we're gonna be joined by Matthew from the Gitea team. Hey, man. How's it going? Hey. It's going well. Thanks. So just a brief, rundown on me. Not much has changed last time. I'm still a project lead of Gitea. We just celebrated our, eighth year birthday, just in no sorry. We're going into our eighth year starting in November, so I think it's seventh birthday, how that works. 2016 was when we started. Yeah. So lots of exciting new developments with Gitea
2:23 What's New in Gitea: Actions Fully Released
2:26 since last time we chatted. In 2022, we launched the alpha of Giteactions, the built in CICD solution. And with this latest major release this past fall, we it's now fully released, and everyone can use it. It's compatible with GitHub actions, and I'm excited to be here to talk with you about it and walk through getting it set up and using it. Awesome. Well, it's been about a year, and you've covered most of the things that have changed, which is cool. But, like, I'm curious about you know, new features are amazing. Like, we love open source and new features that get
3:01 Gitea Cloud and Project Foundation (Commico)
3:11 involved and contributing. Right? But you're now starting I've seen Gitea Cloud is emerging. There's now the company coming up behind it to support that open source contribution. Maybe you wanna share a little bit a bit more of that and how that's all gone as well. Yeah. Definitely. So Commico was founded by some of the members of the oversight committee and as a way of being able to support the project itself. And so we've been able to in 2023 or sorry. In 2022, we were doing about a hundred pull requests merged, reviewed, etcetera, a month. And after the founding
3:51 of the company, we went up to 400 a month. Woah. And so lots of refactoring to ensure it's stable, lots of new features, lots of bug fixes, lots of a lot more new maintainers, community contributors. We just hit 40,000 stars on GitHub. And so it's been very exciting, and Gitea Cloud is a way of letting people most familiar with Gitea being able to run your instance for you and being able to support the project back through that. So even, like, through building it out, there's features that we needed, bug fixes that we've been able to
4:45 from dog booting your project, being able to put it back in. And so, yeah, it's yeah. All very exciting. Yeah. I was actually exploring a new home from, like, the Rawkode Academy source, and, you know, I think Gitea is pretty much where I'm gonna end up. And one of the things that swayed me, and it's so superficial and I feel ashamed of myself. Right? But it wasn't like any of the amazing features. It was like the design of the exclusive labels. Just like it's such a nice touch. Because I like to do semantic labeling on
4:55 Host's Impressions & Community Engagement
5:19 GitHub and GitLab and everywhere else. And it always looks really janky because I have, like, colons or slashes. And and the way that it works on Gitea, I said, oh, yeah. What that? And that was the the secret feature. So Oh, this Gitea, that was contributed from the Blender Foundation, the three d open modeling software. And because we supported them through their migration from fabricator to Gitea. Nice. And so so they contributed stuff, and we did stuff for the project for them as well. And so, yeah, that was Brecht specifically from the Blender Foundation who contributed that as well
6:01 as many other things as well. So we're very thankful for them, the community, and yeah. Yeah. It's just those those subtle touches and attention to detail that just make it more pleasant. And I I like the responsiveness of all the issues and people contributing as well. It gives me confidence when I'm adopting something. But, yeah. I mean, I'm not here just to sit and sing the praises of the project. No. I just I'll I'll just say I was very, very happy and very impressed when I was looking at it just literally two months ago. So, anyway, let's get back
6:31 on track. Oh, no. Definitely. Alright. Let's just do a quick I know you didn't say it to hear some of your stuff, but is there anything in the like it's been fifteen, sixteen months, I think, since we we did our stream together. So what's happened in that time? And if you wanna talk about besides actions, we will get to Oh, definitely. Yeah. Actually, I think one of the things that launched just after our last livestream was we introduced Gitea packages where it's we're now supporting, like, 20 different types of packages, docker images, helm charts, Ruby gems, Rust cargo,
6:50 Other New Features: Gitea Packages
7:13 Python, PyPI, Alpine, Debian devs, RPMs, and, like, a whole bunch more. So being able to store your artifacts inside the application, and link it to your, source control and releases if need be. So that's very exciting, and, that's, definitely ties in with, actions because you can use actions to build your Docker container and push it just into your, instance as well and keep it all self contained, have that, data ownership, data sovereignty over your own stuff so, you can sure it doesn't go away. Awesome. Yeah. I actually which again, it's it's I feel like I'm just saying these things because you're
8:04 on the stream, but, honestly, I was exploding and playing with this just, like, two months ago. And the package stuff is what I was looking at because I have a a mono repository with, you know, dozens of services, and it's going to be hundreds of services eventually. They all have their own container image, and the registry was a big part of, like, what was interesting there as well. But I did notice, and I have opened an issue for this. I'm not gonna just run at you as someone who's on my screen. Right? But Giteapp and GitLab also have this problem where
8:30 when you have a mono repository, the releases always assume it's like a single artifact. And although they can have names, it's very difficult to browse and navigate and segment that page. I I'd love to try and, you know, raise the priority of that issue and fix it live right now. We're not looking at actions. Let's yeah. So that's just my own little wish list, but awesome. The package stuff is very, very cool. Right. Anything else besides that you wanna cover? No. Let's see. Yeah. Packages, actions. We did project boards last time we were here, I think. That was already in.
8:53 Transition to Hands-on Demo
9:04 Yeah. It's great. Let's just dive right in. Well, I'm I'm gonna ask you a slightly Oh, sure. Controversial question, not to put you against the water f on that. Right? But the the trend so far from what I see with what we have discussed on the stream and what I see on the project is Gitea's adopting and implementing a lot of things that provide a backwards compatibility. And therefore, may be coming from GitHub. And as as we're gonna see with actions, right, you you talked about how it's compatible with that. How do you use a a
9:10 Gitea's Approach: Compatibility and Innovation
9:34 TOC decide when it's better to just support people coming in versus innovation? Like, or can you do both? Like, I wonder how those conversations work. Yeah. No. That's definitely something. And in fact, with actions, we did deviate just ever so slightly from the GitHub standards not to make a breaking change, but just to add upon it. With GitHub actions, it's very tied into the GitHub ecosystem. It's user slash repo at, git tag, and that's your actions. But because we wanted to be able to have actions hosted elsewhere, we actually introduced a a new URL, schema for being able to define your actions
10:22 elsewhere. So instead of GitHub username, GitHub repo, Git tag, you can actually pass in a full URL of a Git repo elsewhere. So if you wanna use an actions hosted on Gitea.com, Gitea Com / user / repo. And but we keep it backwards compatible with GitHub. So if you do have that username slash repo format, it will fetch it from GitHub directly. Awesome. Alright. I look forward to seeing that as we explore actions as we move into the hands on component. What I'll say for the people watching, if you do have any questions, please drop them
11:02 into the comment section. Matti and I would be happy to chat about them and hopefully get you some answers at the same time too. Alright, Matti. Are you ready to get a terminal and start playing with some stuff? Yeah. Fingers crossed. I'm I'm sure you're confident it's gonna work. Right? Come on. Alright. Where's my screen share? Disappeared. Oh, I'm not sharing my screen. That's the problem. Alright. I swear I've done this before. Alright. And then pop back here for a second. I made the terrible mistake of trying to have Microsoft Edge, and now I need to
11:11 Demo Setup: Screen Share Issues
11:47 give it the permission to share my screen. Yeah. And sometimes you need to restart the browser. Yeah. Usually, I'm quite good at tracking it. I don't wanna count my check-in as I am. But normally, I can just say, sure. Later. And then do the thing anyway, and it lets me away with it. Let's see. No. What happens if I leave the stream? Shall we find out? Yeah. I think because it's a YouTube, they'll keep it open so you can rejoin. People may need to refresh at the worst case. Right. Fingers crossed. I will see you in
12:35 ten seconds or quicker. Alright. If you're in chat, just, make sure to say something to, show that we're still going. Alright. Alright. We're good. Yeah. Yeah. Yeah. That that was that was painless. I just said, this show is already alive. Do you wanna join? And I was like, yes, please. I don't wanna leave him hanging for too long. I don't know. I'm sure you were telling some awesome jokes. It's all good. Alright. So if we pop over here, I have a terminal. Let me reopen that tab that I had too. And we have the Gitea website.
13:20 Exploring the Gitea Actions Documentation
13:23 So as always on Rawkode live, we're gonna do our best to use the documentation. That means that anything that we do, you can follow along at home in your own time. And if we run any problems, then fear not. We have someone on the call who's gonna fix everything live for us. No pressure, Matthew. But let's go. I take it we're just going straight to documentation. Yep. Alright. No. I haven't looked at the action stuff in advance, but I'll use the nice search bar and here we go. So I'm assuming this is gonna be relatively straightforward
13:58 because of, you know, I'm assuming that I definitely have experience with GitHub actions. I'm assuming that people watching this probably have some exposure or experience there too and it should be plain sailing. I know that's a brave word to throw out there at the start of the stream. Right? But what I'm curious about now is we could take a project that doesn't have any sort of pipelines and start to build stuff together. But based on what you've told me, I'm assuming I could take any project that has a working pipeline just now and it should
14:16 Demo Plan: Building a Pipeline for a New Project
14:30 work out the box. Right? Mostly. There, it's, that's why I say mostly GitHub actions compatible. There are, some type of, actions, the composite actions in GitHub, that aren't supported yet. Whereas bundling of a bunch of different type of actions into one. But we could start off with a blank project and then move on to being able to do an existing one. Okay. So I'll ask one question, and then I'll I'll we'll we'll just do the, like, a cargo new or something and get a simple Rust project on the go. But can I run Gitea actions locally? I know
15:10 Running Gitea Actions Locally with `act`
15:13 that's one of the main frustrations, right, when people are like, I mean, I've done this myself. You push 14 times to the main branch, Trist, like, I, fix I, fix I. And it's all because we don't have that ability just to run the damn thing locally. Is that something that Gitea actions has cloned, or have you fixed that? So so, actually so Gitea actions is based our engine is a fork of a project called Nekto slash Act, where it was exactly that problem that trying to solve of, like, debugging, updating your actions without having to push all the time. And
15:52 one of our maintainers is actually a maintainer over there, and there's lots of contributions between the two projects. And I was actually talking with one of the folks over at Dager recently, and one of the employees over at Dagger actually have a similar project that I'm completely blanking on the name, but it's a similar thing. And I believe they're also using it in Dagger to be able to support, some of their, CI stuff. So your pain point has been solved for GitHub as well, but you can do you can use the CI, this, act runner binary to run it, your
16:41 workflows locally as well as, it's the same binary to run your workflows locally as on a server. Alright. Cool. Yeah. You're right. The the tech team do have a code name for a project that runs those pipelines, but I can't remember what the name of that is either. Yeah. I'm gonna clarify this again, and I think we've done this on the first stream. I keep saying Gitea, and I think you're saying Gitea. Am I wrong? Is it Gitea? Or just I say Gitea. Other members of the team say it differently. Pretty much everyone I talk to says it
17:17 differently. It's I'm pretty sure you could run a livestream where all you do is pick up random projects and talk about the naming because everybody seems to get this stuff wildly different. Anyway, not that important. Alright. So you you we're gonna create a new project. We're gonna build a Gitea pipeline, Mhmm. I'm just gonna do cargo new. Unless, do you have a preferred runtime or language that you wanna use for this demo? Generally, like, we do everything in Go, so that's what I'd be most familiar with. But for extra challenges, we could do Rust. I just I'm not familiar with the GitHub
17:30 Creating a Simple Go Project
17:54 actions for Rust, which is what we'd likely use. No problem. I can do Go. Well, I can write enough Go or remember enough Go that I can do hello world at least anyway. So I'll go in. Main dot whole. I was trying to work it while I was against syntax highlighting. I was like, have I forgotten go? Alright. Oh, I have forgotten. And your package definition as well. Oh, your package page. Thank you. Yeah. That's why I couldn't import. Okay. Thank you. So let's just check. If we do go run main, we should get hello world. Nice
18:47 and simple. Alright. So I'm a go developer. I've ran a million dollar program. I wanna put together some sort of pipeline to start shipping. Let's just say a container image. What's what's my first step then with Giteactions? So, first step is, we assume you have a Gitea instance, set up already, and I saw that you signed up for Gitea.com, within the past week. So we can push, the repos there, and you can hook up your runner, to your user over there as well. Okay. So I believe this is just an overview, and we can pop over to quick start. Fingers
19:02 Installing the `act-runner` Binary
19:29 crossed. That's where our documentation is. So it's already enabled on the instance. Here we go. Okay. So the first thing I need to do is just make sure I have access to to act then. Yeah. So there's you can download the binary from the release page. There's also the docker image, which does make it you do need to do, some stuff, to expose, the Docker socket if you're running the runner inside of Docker for Docker and Docker. So the binary might be easiest because it's just download that executable and run it. Alright. Well, I am gonna try something slightly
20:27 different. Just because I've been playing have you heard of Package X? I haven't. No. Have you done a livestream on that yet? No. I I I should reach out. So it's well, you may have heard of it as t, but they renamed it because I think people were getting a bit confused with the blockchain or tea protocol stuff. And I guess I'm sorry. It's essentially a successor to Homebrew by the original author of Homebrew. Oh, exciting. And yeah. I can remember what the first line of this fail is. You just need a list of packages.
21:00 But I can just do this and it will give me act. And I think it's just dependencies. And from here, if we run dev, it resolves the graft. And now, we have act. Yeah. That's pretty neat. Yeah. So that's act, but we'll need the act runner. So You have to throw that in the works. I didn't know we needed something else. That's alright. It's it's just a different URL, but it's pretty much the same. Yeah. The package x has something called a pantry, and if it doesn't exist or not, it doesn't exist. So I guess we're gonna have
21:48 to go the other route then. So Mm-mm. That was a nice idea while it ran. I'm just gonna go to the download page. Let's keep it simple. Alright. Let's look like the latest. And we want Arm 64. Mhmm. And what I'll do is just move it from downloads to ActRunner, two month plus x, And schedule move. What is it on that m one Mac? Opt. Okay. We have act and act runner. Any other prerequisites? I can jump back over to the docs if there's a list. Just docker and the binary. Okay. Then I think So we're good to
23:02 Registering the Runner with Gitea Cloud
23:02 go. Sweet. So now we can run that command. Okay. So we need an instance and a token. Right? Yeah. Okay. So just use git2.com? Yep. And you can pop over to your user settings. And there are scopes on the runners, you can either scope your runner to a repo to an organization, or if you control the instance entirely, you can scope it to the entire instance. Yeah. I haven't imported any of my things yet. So let's just create a new repository. We'll call this go hello world and then go. There we go. Okay. Edit. Get remote.
23:37 Creating a Repository on Gitea Cloud
23:57 Add origin. Oh, wait. It does that. Okay. Branch. Main. Add git at and commit. Horrible commit message. Punch it to me. Push origin. I'm not adding my key. Oh, you added, your origin as, the HTTP endpoints. So you'll have to swap your origin to the SSH one. Git. Oh, okay. Git config. Alright. We're in business. So now if we come to the repository, We have our million dollar application. Perfect. So now is where we want to register a runner, which is just going to be a local runner on my machine. Right? Yep. So this instance,
25:21 Runner Registration Success & Starting Daemon
25:31 is this just gitea.com? Yeah. Htpsgitea.com. Alright. And the token, I'm assuming I'm gonna have to create some sort of access token. Yeah. Okay. And so it's, this is gonna be, exposed to the world. It's fine, because, they rotate, once they're used. And, yeah, you can't see the entire of it entirety of it right now. And once you use it, it can't be used again. So Oh. There we go. Oh, so every time you use a registration token, it gets rotated? Yes. Yeah. Nice. Very cool. So these are all, one time use. There is a capability to,
26:18 reuse them, in if you change some settings, but by default, one time use only. Awesome. Alright. Well, looks like we we potentially have a runner. So let's jump back to our quick start So we did this. In fact, can I now oh, not visualize it, but you know what? See it as a registered runner? Refresh this page. You'll see it there. Okay. Nice. So it's been registered. And the next step is to start the daemon, and that should be in the documentation as well. Okay. Before we do that, I'll ask you a quick question. This is for me to run and host
26:58 my own runners. Is there a plan for the Gitea project to provide any sort of shared runners, or do you just want people to to go run their own? Yeah. So, with, Gitea Cloud, you can, purchase, minutes. But due to, like, crypto mining and such, we can't, just offer much for free. Man, those crypto miners are in everything. They jack up the prices of GPUs. Now AI's doing that too, and now we don't even get free build. Alright. So let's go back pop down. So we're gonna run this. Damn it. There you go. I'm not familiar with the
27:45 act project based on only I only know what base that you've told me at the start of the session. I'm assuming this is just gonna manage and run a whole bunch of containers on my machine for each of the pipeline steps within the the workflow file. Is that close enough? That's exactly it. Yeah. And, so this will, run-in the foreground. Based on configuration, you can change it, but for now, run it in foreground. There's some documentation on running it with system d and other such ways. But Okay. Well, just talking. Split that in half, and we're good to go.
28:21 Writing the Actions Workflow File (.gitea/workflows)
28:21 So I'm assuming now we just write our workflow file. That's exactly it. Alright. Do you support dot GitHub just to make the the migration for people easier, or do you expect them to redeem the directory? I I believe we support dot GitHub, but I'm I can't remember off the top of my head. Alright. See, one of my biggest complaints about GitHub actions again, it's just such a mono repo thing, and I always feel like a niche person when I talk about it. But there has to be more people doing mono repos. Right? But they expect all of these build definitions
29:05 to live at the root of my repository, and I actually want my build definition to live next to each service. Mhmm. You know, if you wanna make it so that I can have a dot Gitea workflows everywhere in my repository, I'd be a very happy person. But not for today. I'm just gonna copy this one just now and we can tweak as required. Okay. So we we give it a name, some sort of run name. I I don't know. I haven't seen I haven't seen that before. We got have actions. I don't know what that does. We tell it to run
29:38 on push and then it has a job. The job has a name. We're just seeing run on Ubuntu and then do all the things. I'm gonna add one more job then, which is called go build. And this runs on this could be any container image. Right? So So what it does is the runs on is, like, a label for the runner itself. Oh, okay. And as in chat that just popped up, it's actually not Ubuntu. We're by default, the act project defines the default image to be the node 18 Docker image, which is based on Debian.
30:00 Understanding `runs-on` Labels and Default Images
30:28 So using Ubuntu is a bit of a misnomer. And in GitHub actions, I believe it's the runs on wouldn't be where you put the image. It's in the container key, I believe. Right. Okay. Yeah. So this would be a runs on where we then add steps. So this is where we'd have go blah blah blah. Yeah. Setup action slash setup go. And we need to check out, actually. So let's just copy that from here. Go. And then we'd have a container with everything we need, and we could just say go run main dot go. That seem okay? Yep.
31:00 Adding Workflow Steps (Checkout, Setup Go, Run)
31:20 Alright. So I'm assuming I'm just pushing this because we have a runner running, which is registered with gitea.com. So provided we do a commit feature new CI system. Awesome. We can do a push. Let's pop back over here. And if we go to Rawkode, We have one action. Hey. Hey. It's running. Nice. Well, if they pop to my machine yeah. We're starting to alright. There we go. There's all the log outputs from our new CI. And go build. Oh, we got a fail on the go build. Oh, I'm gonna see what happened. Input string was not in the correct format.
32:26 Debugging the Failed Workflow
32:47 Action setup go. Did I need a version? Oh, yeah. Possibly. I think it's v four might be the latest because GitHub actions recently bumped everything to use node 20 as their base. And so that's the difference between v three and v four. Well, nobody's build passes the first time. I'll give that just a moment. That was pretty fast, that first one there. Mean, I know it's only doing echoes, but five seconds was was bad. And I guess so why pulled the images there. Right? It's cached locally. Yeah. So we'll cache, the actions locally. Yeah. I guess you need to define
33:45 a specific version. Five. Oh, no. Before. Oh, okay. It might require that. Yeah. Okay. Is that what you were just saying that I wasn't listening? That might be yeah. That might require it. With go one twenty one. Okay. So, I mean, we are already doing that thing that I said I hate. Right? Like, fix the eye. Yeah. Yeah. Can I test this locally first? Yeah. Yeah. So so because you have the act runner binary locally, you can run act underscore runner space exec, and it will and you just enter, and then it's running it right now.
34:35 Testing Workflows Locally with `act_runner exec`
34:57 So it's fetching the go binary in the setup go step right now. It fetched it. And if you scroll up at sec Okay. There should be the hello world. Yep. Alright. So let's break it because I had it broken, so I'm gonna say broken. Alright. Perfect. K. Nice. And we'll fix that back up. And random question, but it's something I I I use a lot is the be able to click the button to execute it on the UI. I can't remember what it's called, but it's push or it's like something else. Can I can I do that?
35:34 Workflow Triggers (UI Dispatch, Cron)
35:42 Yeah. On workflow, I believe, that's not supported yet. There's a Yeah. On dispatch or something. Yeah. Okay. Yeah. There's a a pull request in progress for that right now. Awesome. But we recently launched so in addition to going fully stable with this latest major release, we also, support scheduled actions, so Cron as well. So that was, one of the compatibility things with GitHub actions that we, added as well. Alright. Very cool. So I could just set up a a cron run to run every night at 3AM or whatever and push out images. And with same with GitHub actions you can
36:01 Supported Triggers (Push, Pull Request, Cron, Tags)
36:34 do on pull request. So it will only run on a pull request or push to a specific branch on tags. So if you take something, you'd have a Go release or go build your project and actually upload the artifacts wherever you wish. Alright. Nice. I mean, it's it seems to be the, you know, the quick demo we've done pretty much on a par with what we would expect from GitHub actions. And how far into the Gitea subsystem does this go? And by that, I mean, like, you know, if I do have external contributors and pull requests
36:59 Integration with Branch Protection & Status Checks
37:14 and I wanna have, like, blocking merge until passing, is this something in motion? Is this something that already exists? Like, where are we with with that kind of migration? Yeah. So Gitea already has, like, branch protection for pull requests, so ensure that, like, certain statuses pass. And that's for external integrations, external CI, or, like, if you're if you have, like, Jira or something you need to hook up, like, some sign up in Jira and send over webhook somewhere, you can do that. But then in the branch protection as well, GitHub actions come in as statuses
38:03 as well. So you can say it requires these specific statuses to pass before you can even click the merge button. And that would be under, branch protection. Yeah. And you can white list who, is able to merge, based on, like, a team or a user group, or a specific user, the number of, approvals. So not just, status checks, but also, like, number of approvals from a specific team. So Oh, yeah. Yeah. Very nice. Yeah. Yeah. Alright. So I'm liking what I'm seeing. It's very familiar. The Ubuntu is not Ubuntu. That's me that's gonna be the one takeaway thing that I
38:55 Reflections on Gitea Actions Familiarity
39:02 remember for the next twelve months. Like, when you get back to me and say, I remember that stream of it. I remember Ubuntu is not Ubuntu. Yeah. So you can actually change it to the Ubuntu image if you wish. We skipped a few steps when registering, your runner. If you go if you scroll back in your terminal, you'll see that it says, it registered with a certain labels of Ubuntu latest, Ubuntu 20, Ubuntu 18, I believe. Where are we? And here we go. Yeah. So I'm running with the certain labels a couple lines down from where your cursor
39:49 is right now under act run daemon at the top there, the longest line. There we go. Yep. Up. Yeah. So running You'll see the several labels defined above, and then those actually do alias to that specific Docker image. But you can also you don't need to run inside of a Docker. You'd not necessarily use this for if you're accepting, like, open contributions because then, people can run, code as the runner on whichever machine you use. Right now, that's the only way to run, like, if you're building an iOS application or whatnot. If you wanna run,
40:00 Runner Configuration (Images, Host Mode, Security)
40:38 like, Xcode, compile, and stuff, you would have to have, the host mode, so it wouldn't be isolated inside of a container, so people could potentially browse your file system. But again, that's not for, untrusted environments. Yeah. And you can change, the labels you want. You can change the default images. So yeah. And in fact, for the Gitea project, we actually use, one of the act contributors, has built an image, a docker image that's quite hefty, but it's very comparable to the virtual machine that GitHub runners have access to. So all of the tools that are installed there,
41:31 would be available to you because this docker image doesn't have things like j q. It's it's literally just the node docker image. So and that's one of the ways that existing actions might fail is they might assume that a tool is available, that isn't necessarily available in the image that you're running with. Alright. Nice. Is there anything else from the action stuff that we haven't covered yet that you want me to to go peek into? No. I think that was a great example of, I think, showing pulling an image, like, I use as action slash setup go. That's pulling from github.com.
41:59 Future Roadmap for Gitea Actions
42:19 And yeah. What's the the syntax if we were gonna use the new thing. Right? Yeah. So it'd be instead of just actions slash checkout, it'd be htpscolon//yeety.com/actions, /checkout, and then add v three. Yeah. And, this works because, we have the code mirrored, from Giteap.com. So if you're pulling from, giteap.com for this specific action, it's what you'd expect. Does this work for any arbitrary, like, Gitea instance? Yeah. So if you wanna Like, code.Rawkode.academy, like, something like that, that Yeah. That would just work out the box. Right? It works out of the box with a little asterisk
43:14 of you potentially may need to set up authentication if it's, a private repository or whatnot. GitHub actions oh, sorry. Gitea actions handles a lot of that out of the box. When you're cloning, it creates a temporary access, key to be able to pull the repository. But for, like, actions, you also need to define saying, hey. This is a protected repository. You'll need to, like, be aware of that. Alright. Cool. Yeah. That's a cool little feature, especially as we try and encourage people, right, to have their Git hosting a little bit more decentralized than that than it is at the moment.
43:57 I like that approach. Alright. Let me pop this back over. We can go always go back to the demo if we think of something else that we wanna show there, but I wanna kinda chat about what was covered already. Yeah. Definitely. And so I think the the familiarity aspect of it, the fact that people don't really need to change anything when they're coming from GitHub is just that that's the way it probably should be. Right? You wanna make it the path of least resistance, otherwise, developers are lazy. We're not gonna do that. And I like that. But
44:25 you're also not unwilling to make changes, like with the URL construct, which is also very cool. I hope that more stuff kind of comes along there. I like that the an act maintainer is also working on this. That means that that support is only gonna get better, especially when it comes to debugging actions and stuff like that. I think that's gonna provide paramount better developer experience than what we have today. And this is all very, very exciting. But you are on the TOC. You're close to oh. Oh. Damn it. Computer hits me. Alright. I'm just gonna talk for a second,
45:00 and then I'll fix this. That's quite alright. You're on the you're on the the TOC, and you're close to the project. So why don't you tell me what's coming on next? What you just wanna change? What's what are people asking for? What is the future of Giteactions? Yeah. Definitely. Well, the short term road map is increase that compatibility with GitHub actions that the on workflow dispatch step that you brought up, the composite action support. So they're not widely used, but they're used enough that it should be supported as well as creating different types of runners.
45:44 So right now, there's the two modes. There's the running in Docker container or running in host mode. But as we've seen from, like, other projects of, CRCI, they have their Tarte dot dev project where you can actually run, like, macOS virtual machines, as, like, Docker containers kind of somewhat, being able to just support, various different back ends. So, like, ephemeral Windows images as well for your Windows developers, building those, dot net projects, iOS devs, and and just bringing the project forward that way. And yeah. Alright. And what about the Gitea project beyond actions? Like, do you have
46:34 Future Roadmap for the Gitea Project (LTS)
46:37 a a road map of other new things that are gonna be coming to this table and Yeah. So this upcoming release, we're working on, like, stability and so it's not a big feature release sales. It's just a lot of, refactoring. There's there's plenty of, features coming in. We're at a few hundred, pull requests, already for it, so it's not in insignificant. But that's always with every big thing you need to go back, ensure stability of the project, as well as we're working forward towards a long term support version. So understanding that not everyone is able to,
47:27 upgrade to the latest and greatest, but still, need to have those bug fixes, security fixes as well and just create that, reliable and understandable, upgrade cadence. So they stay on an LTS for a year. They're able to keep those small updates. And then if then in their upgrade cycle, if they're able to, like, evaluate, like, potential breaking changes, then they can do that with going to, like, the next version and whatnot. Alright. Kind of tangential then or adjacent to what we're talking about, not really directly, but, you know, I'm curious if you see people, matter in like, you said you matter all
48:02 Discussion on Repository Mirroring for Redundancy
48:13 of the Giteaub action stuff, right, to the gitea.com? We sorry. A lot of it, not A lot of it. Yeah. Yeah. I should be careful with my wording there for sure. Do you see people doing that for a redundancy thing as well? Like, just pulling in their vendor dependencies from Yeah. GitHub. I mean, let's face it. GitHub and GitLab. There's been a lot of downtime. Entirely. So, actually, on my NASA home, I have my own instance, and it's mirroring a few thousand repositories because, like, just like if my Internet goes down, if GitHub goes down, GitLab goes down, what have
48:47 you, it's all there. Or repository is deleted, you'll you'll have the famous left pad instance or incident. Yep. And so even though, like, with, like, Go modules, Google has their package mirror. It's available. So if things do go away, it's still kind of available, but, that cash is purged, on whatever, basis. So it's just, having a copy of your code is integral, especially if you're in an enterprise building, like, whatever project and, like, just having a copy for insurance sake is, incredibly important. Awesome. Alright. Is there anything else you wanna cover before we wrap this thing up?
49:39 Conclusion and Thank You
49:39 No. I think yeah. No. It's no big showstoppers with Gitea action setting up, which is always exciting, same as our last livestream, living up to that painless tagline. And yeah. No. Thanks again for having me on. It was great to see you again. And yeah. Awesome. Thanks. Alright. Well, couple of things, and then we'll say goodbye. One, your green screen setup is awesome. Like, Thanks. Very little artifacts around your your face and shoulders. I'm really impressed. Mhmm. I'm gonna ask you about that later. And the second one is just, like, Gitea is such a cruel project. You know, there's
50:21 a lot of things we take for granted as developers and operators, you know, access to GitHub.com and and GitLab and stuff like that. But there needs to be a better decentralized model moving forward. I think it's gonna be so important. And the fact, you know, Gitea, it's it's not shiny and exciting. It's essential. It's plumbing. It's what it's foundational, right, to what we need for our developer teams and and organizations. So, you know, thank you to you and everyone else working on the Gitea project, all the contributors. It's always exciting to see the updates, and
50:50 thank you for taking time to join me today. No. Of course. Thank you for having me. Alright. Thank you all for watching. Have a wonderful day. We'll be back again on Friday with another episode of Rawkode Live. Matthew, thank you again. I'll speak to you soon. And everyone, have a great day. Thanks. Bye.
Technologies featured
Meet the Cast
Stay ahead in cloud native
Tutorials, deep dives, and curated events. No fluff.
Comments