<?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 DVLUP</title><link>/en/tags/github-actions/</link><description>Recent content in GitHub Actions on DVLUP</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Sun, 22 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="/en/tags/github-actions/index.xml" rel="self" type="application/rss+xml"/><item><title>Password Purgatory, a C# Scammer Trap</title><link>/en/blog/2026.03.22-csharp-scammer-trap/</link><pubDate>Sun, 22 Mar 2026 00:00:00 +0000</pubDate><guid>/en/blog/2026.03.22-csharp-scammer-trap/</guid><description>&lt;p&gt;This is a reimagined version of Troy Hunt&amp;rsquo;s &lt;a href="https://www.troyhunt.com/building-password-purgatory-with-cloudflare-pages-and-workers/" target="_blank" rel="noopener"&gt;Password Purgatory&lt;/a&gt;&#10;; written as a dotnet app and automatically published to Azure. It is not a 1:1 recreation of Troy&amp;rsquo;s, but maintains its spirit, see all the source code on GitHub at &lt;a href="https://github.com/LanceMcCarthy/dotnet-password-purgatory" target="_blank" rel="noopener"&gt;dotnet-password-purgatory&lt;/a&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;Just imagine, thousands of dollars is only a button click away, but your password keeps failing because of with the following rules:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;img src="../../../en/blog/2026.03.22-csharp-scammer-trap/184453467-4962c6c2-d955-4270-93d8-8ecb02c26fa8.png" alt="image"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;First entry form seems normal, some standard client-side validation to make sure I complete both fields.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="../../../en/blog/2026.03.22-csharp-scammer-trap/184453247-50578c2f-6fbb-4326-aff2-fb0bebbb2412.png" alt="image"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Okay, so I didn&amp;rsquo;t have a number in my password&amp;hellip;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="../../../en/blog/2026.03.22-csharp-scammer-trap/184453267-eab6d8e0-945b-4cfb-b0b3-7c343711c0dc.png" alt="image"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Whoops, maybe I shouldn&amp;rsquo;t have just jammed a &amp;ldquo;1&amp;rdquo; on the end of the password&amp;hellip;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="../../../en/blog/2026.03.22-csharp-scammer-trap/184453272-774a05a3-21ac-4aba-8754-6c4e8e66e3e3.png" alt="image"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Ugh, okay, an upper-case character (starting to feel annoyed).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="../../../en/blog/2026.03.22-csharp-scammer-trap/184453276-464481ef-e3a7-4347-847f-8d45edfb1921.png" alt="image"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;This seems my own fault, nothing lets you use short password anymore.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="../../../en/blog/2026.03.22-csharp-scammer-trap/184453281-36502559-19f7-464d-8e8f-a4e57a87ed28.png" alt="image"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Wait, what? This is starting to seem like I&amp;rsquo;m being given the run-around&amp;hellip; but adding &amp;lsquo;dog&amp;rsquo; to the end is easy enough&amp;hellip;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="../../../en/blog/2026.03.22-csharp-scammer-trap/184453293-b1e46b2f-7f54-4868-b7c6-13ed8def1ac7.png" alt="image"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Really, cat? Okay, three letters, lets add it and keep going because I want to see where this is going.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="../../../en/blog/2026.03.22-csharp-scammer-trap/184453301-b28f9136-a510-4c65-a186-7e4aac0f0ec4.png" alt="image"&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;If they keep going&amp;hellip;&lt;/p&gt;</description></item><item><title>Automating Dependabot Pull Requests</title><link>/en/blog/2026.01.15-automatic-dependabot-prs/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><guid>/en/blog/2026.01.15-automatic-dependabot-prs/</guid><description>&lt;p&gt;Most of us are familiar with Dependabot and how it can open an Issue in your GitHub repo when there&amp;rsquo;s a pending dependency update or a security issue. However, did you know that you can also have it automatically open a Pull Request, do all the builds, make sure checks pass, and &lt;strong&gt;merge&lt;/strong&gt; it, too?&lt;/p&gt;&#10;&lt;p&gt;I find this capability very helpful and time saving when the dependencies are not core SDK components. Particualrly with node.js projects, there are can be a lot of updates that are not related directly to the code, but instead of part of the toolchain or IDE. These updates take time to manually do and can be annoying to maintain.&lt;/p&gt;</description></item><item><title>Trusted Signing</title><link>/en/blog/2025.03.15-trustred-signing/</link><pubDate>Sat, 15 Mar 2025 00:00:00 +0000</pubDate><guid>/en/blog/2025.03.15-trustred-signing/</guid><description>&lt;p&gt;Say goodbye to managing PFX files and problems code signing your apps. Over the past year or so, I&amp;rsquo;ve been working with Microsoft to test a service that lets you sign your code using an HSM-backed private key. This means your identity is verified by Microsoft, and you can sign all your stuff with a simple API call!&lt;/p&gt;&#10;&lt;h2 id="azure-trusted-signing"&gt;Azure Trusted Signing&lt;/h2&gt;&#10;&lt;p&gt;I have a real-world app where I code sign the app and appinstaller automatically. I walk you through how that is done so you can copy it, but first I should step back and explain what the service is.&lt;/p&gt;</description></item><item><title>Free Yourself With DevOps</title><link>/en/blog/2022.03.04-free-yourself-with-devops/</link><pubDate>Fri, 04 Mar 2022 00:00:00 +0000</pubDate><guid>/en/blog/2022.03.04-free-yourself-with-devops/</guid><description>&lt;p&gt;As you evolve as a developer, you start to venture into the world of CI-CD. This is because you want to spend more time coding and less time with the repetitive and tiresome nature of compiling for different targets, packaging and publishing.&lt;/p&gt;&#10;&lt;p&gt;I frequently write content about CI-CD; whether it is Azure DevOps, GitHub Actions or just a PowerShell command that does a ton of work for you. In today&amp;rsquo;s post, I&amp;rsquo;m going to take you on a journey that shows you how to use Azure DevOps to automatically build, package and publish your app to the Microsoft Store.&lt;/p&gt;</description></item><item><title>Building .NET MAUI with GitHub Actions</title><link>/en/blog/2021.11.24-building-net-maui-with-github-actions/</link><pubDate>Wed, 24 Nov 2021 00:00:00 +0000</pubDate><guid>/en/blog/2021.11.24-building-net-maui-with-github-actions/</guid><description>&lt;p&gt;If you&amp;rsquo;re a fan of using GitHub Actions or Azure DevOps, you might have had some trouble configuring builds for .NET MAUI. This is likely due to needing specific workloads installed and understanding what parameters to use for a single project to compile for multiple target platforms.&lt;/p&gt;&#10;&lt;p&gt;In today&amp;rsquo;s post, I&amp;rsquo;ll show you how to setup your build that will work for any MAUI target platform. If you would like to review the final result as you read through this, here&amp;rsquo;s the workflow file =&amp;gt; &lt;a href="https://github.com/LanceMcCarthy/DevOpsExamples/blob/main/.github/workflows/main_build-maui.yml" target="_blank" rel="noopener"&gt;DevOpsExamples/main_build-maui.yml&lt;/a&gt;&#10;.&lt;/p&gt;</description></item><item><title>Pull Requests in GitKraken</title><link>/en/blog/2021.06.24-pull-requests-in-gitkraken/</link><pubDate>Thu, 24 Jun 2021 00:00:00 +0000</pubDate><guid>/en/blog/2021.06.24-pull-requests-in-gitkraken/</guid><description>&lt;p&gt;One of the hallmarks of a professional workspace is an efficient workflow with powerful tools. It is a win for everyone when you can consolidate multiple tasks into a single workspace and workflow. This is why I love the new support for GitHub Pull Requests in &lt;strong&gt;GitKraken&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;In today&amp;rsquo;s post, I&amp;rsquo;m going to show the high level set of features inside of GitKraken that let you achieve the basic set of operations that are needed when you&amp;rsquo;re reviewing and approve a Pull Request. For more in-depth information, please visit &lt;a href="https://support.gitkraken.com/working-with-repositories/pull-requests/#github-pull-request-view" target="_blank" rel="noopener"&gt;this official documentation&lt;/a&gt;&#10;. If you don&amp;rsquo;t have GitKraken yet, you can get it &lt;a href="https://www.gitkraken.com/invite/5G9KUffp" target="_blank" rel="noopener"&gt;using my personal invite link&lt;/a&gt;&#10;.&lt;/p&gt;</description></item><item><title>DevReach 2020</title><link>/en/blog/2020.11.04-devreach-2020/</link><pubDate>Wed, 04 Nov 2020 00:00:00 +0000</pubDate><guid>/en/blog/2020.11.04-devreach-2020/</guid><description>&lt;p&gt;In case you missed it, I spoke this year at DevReach 2020. DevReach is Europe&amp;rsquo;s Premier Developer Conference that takes place every year in Sofia, Bulgaria. This year&amp;rsquo;s conference was online only, but was still a lot of fun.&lt;/p&gt;&#10;&lt;p&gt;In my session, I show you how to write GitHub Actions workflows for a full CI/CD experience that automatically builds and releases your Xamarin.Forms, Xamarin.Android, Xamarin.iOS and UWP apps.&lt;/p&gt;&#10;&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/OJhg8rB5D90&amp;amp;t=3222?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;My session starts at &lt;code&gt;53:22&lt;/code&gt; and I go until &lt;code&gt;1:36:12&lt;/code&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item></channel></rss>