<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Github Actions on Maceage's Blog</title><link>https://blog.maceage.com/tags/github-actions/</link><description>Recent content in Github Actions on Maceage's Blog</description><generator>Hugo</generator><language>en-au</language><copyright>© Graham Mace</copyright><lastBuildDate>Sun, 06 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.maceage.com/tags/github-actions/index.xml" rel="self" type="application/rss+xml"/><item><title>Automated Unreal Engine Build Server on AWS Part 3: Build</title><link>https://blog.maceage.com/posts/2026/automated-unreal-engine-build-server-on-aws-3/</link><pubDate>Sun, 06 Sep 2026 00:00:00 +0000</pubDate><guid>https://blog.maceage.com/posts/2026/automated-unreal-engine-build-server-on-aws-3/</guid><description>&lt;p&gt;This is the final part of the series, continuing from creating a &lt;a href="https://blog.maceage.com/posts/2026/automated-unreal-engine-build-server-on-aws-1/"&gt;GitHub self-hosted runner base AMI&lt;/a&gt; and &lt;a href="https://blog.maceage.com/posts/2026/automated-unreal-engine-build-server-on-aws-2/"&gt;creating an AMI with a specific version of Unreal Engine&lt;/a&gt;. Everything now comes together: a published GitHub Release triggers a Spot Instance, which registers itself as a self-hosted runner, builds the project, uploads artefacts to S3, and tears itself down.&lt;/p&gt;&#10;&lt;p&gt;As always, the full code lives at: &lt;a href="https://github.com/sawnoff-studios/unreal-build-server-image" target="_blank"&gt;sawnoff-studios/unreal-build-server-image&lt;/a&gt;&lt;/p&gt;&#10;&lt;h1 id="contents"&gt;Contents&lt;/h1&gt;&#10;&lt;p&gt;This post covers how to use an EC2 Spot Instance GitHub Actions self-hosted runner:&lt;/p&gt;</description></item><item><title>Automated Unreal Engine Build Server on AWS Part 2: Unreal AMI</title><link>https://blog.maceage.com/posts/2026/automated-unreal-engine-build-server-on-aws-2/</link><pubDate>Fri, 04 Sep 2026 00:00:00 +0000</pubDate><guid>https://blog.maceage.com/posts/2026/automated-unreal-engine-build-server-on-aws-2/</guid><description>&lt;p&gt;This post continues from &lt;a href="https://blog.maceage.com/posts/2026/automated-unreal-engine-build-server-on-aws-1/"&gt;Part 1&lt;/a&gt;, where I created a base AMI with build tools installed. Now I&amp;rsquo;ll cover two critical pieces:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;A Lambda function&lt;/strong&gt; that automatically retrieves GitHub runner tokens (solving the token expiry problem)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;An AMI with a specific Unreal Engine version&lt;/strong&gt; installed, ready for GitHub Actions builds&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;The complete code repository is available at: &lt;a href="https://github.com/sawnoff-studios/unreal-build-server-image" target="_blank"&gt;sawnoff-studios/unreal-build-server-image&lt;/a&gt;&lt;/p&gt;&#10;&lt;h1 id="contents"&gt;Contents&lt;/h1&gt;&#10;&lt;p&gt;This post covers the Lambda used for retrieving self-hosted runner tokens from GitHub, as well as using the base AMI to install a specific version of Unreal Engine for building projects&lt;/p&gt;</description></item><item><title>Automated Unreal Engine Build Server on AWS Part 1: Base AMI</title><link>https://blog.maceage.com/posts/2026/automated-unreal-engine-build-server-on-aws-1/</link><pubDate>Wed, 02 Sep 2026 00:00:00 +0000</pubDate><guid>https://blog.maceage.com/posts/2026/automated-unreal-engine-build-server-on-aws-1/</guid><description>&lt;p&gt;After completing my &lt;a href="https://blog.maceage.com/posts/2025/completing-my-unreal-engine-course/"&gt;CG Spectrum Unreal Engine course&lt;/a&gt;, I wanted to automate the build and release process for my &lt;a href="https://blog.maceage.com/posts/2026/graveyard-gunner/"&gt;game prototype&lt;/a&gt;. While building locally, zipping artefacts, and uploading somewhere would have worked, I aimed for something more robust: trigger a GitHub release that automatically provisions a Spot Instance, builds the project, and uploads results to S3.&lt;/p&gt;&#10;&lt;h3 id="the-problem"&gt;The Problem&lt;/h3&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/sawnoff-studios/unreal-build-server" target="_blank"&gt;My initial approach&lt;/a&gt; involved manually configuring an EC2 instance, installing dependencies by hand, and registering a GitHub self-hosted runner. I created an AMI from that instance and configured GitHub Actions to use it.&lt;/p&gt;</description></item><item><title>Static Website Monitoring</title><link>https://blog.maceage.com/posts/2026/static-website-monitoring/</link><pubDate>Fri, 09 Jan 2026 00:00:00 +0000</pubDate><guid>https://blog.maceage.com/posts/2026/static-website-monitoring/</guid><description>&lt;p&gt;In the &lt;a href="https://blog.maceage.com/posts/2026/static-website-architecture/"&gt;previous post&lt;/a&gt; I covered the AWS resources behind my static website - including the S3 buckets collecting access logs for both the website itself and the CloudFront distribution in front of it.&lt;/p&gt;&#10;&lt;p&gt;Once those logs started accumulating, I wanted a way to interrogate them: which pages are people actually requesting? Where do requests come from? How much is the traffic costing me in data transfer? Copying &lt;code&gt;.log&lt;/code&gt; files down and grepping them wasn&amp;rsquo;t going to scale.&lt;/p&gt;</description></item><item><title>Static Website Architecture</title><link>https://blog.maceage.com/posts/2026/static-website-architecture/</link><pubDate>Wed, 07 Jan 2026 00:00:00 +0000</pubDate><guid>https://blog.maceage.com/posts/2026/static-website-architecture/</guid><description>&lt;p&gt;As mentioned in my &lt;a href="https://blog.maceage.com/posts/2024/welcome/"&gt;welcome post&lt;/a&gt;, I&amp;rsquo;ve built plenty of websites over the years, most of them with a web server backed by a database. While looking for full-time work, I wanted a personal website – a single page with my details, credentials, and contact information. A web server with a database felt like overkill for that.&lt;/p&gt;&#10;&lt;p&gt;Then I found out that an &lt;a href="https://sawnoffstudios.com/" target="_blank"&gt;indie game studio&lt;/a&gt; registered with an ABN also needs a web presence to &lt;a href="https://www.abr.gov.au/business-super-funds-charities/applying-abn/abn-entitlement" target="_blank"&gt;justify the entitlement&lt;/a&gt;. And these days, &lt;a href="https://blog.maceage.com/" target="_blank"&gt;a blog&lt;/a&gt; is trivially achievable with a static site generator such as the excellent &lt;a href="https://gohugo.io/" target="_blank"&gt;Hugo&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>