<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xx="categories" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>GitHub - Ken Muse</title><atom:link href="https://www.kenmuse.com/categories/github/rss/" rel="self" type="application/rss+xml"/><link>https://www.kenmuse.com/categories/github/</link><description>Discover Azure, DevOps, and development insights with Ken Muse, a DevOps Architect at GitHub and 4x Microsoft Azure MVP</description><language>en-us</language><sy:updatePeriod>weekly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><image><title>GitHub - Ken Muse</title><link>https://www.kenmuse.com/categories/github/</link><width>32</width><url>https://www.kenmuse.com/categories/github/favicon/favicon-32x32.png</url><height>32</height></image><atom:link href="https://www.kenmuse.com/categories/github/rss/index.xml" rel="self" type="application/rss+xml"/><item><title>GitHub Agentic Workflows Bring AI Agents to Actions</title><link>https://www.kenmuse.com/blog/github-agentic-workflows-bring-ai-agents-to-actions/</link><pubDate>Fri, 13 Feb 2026 00:00:00 -0500</pubDate><guid isPermaLink="false">github-agentic-workflows-bring-ai-agents-to-actions</guid><category>AI</category><category>DevOps</category><category>GitHub</category><description>Explore GitHub's new Agentic Workflows -- AI coding agents in GitHub Actions with defense-in-depth security and natural language automation.</description><enclosure type="image/ebp" url="https://www.kenmuse.com/blog/github-agentic-workflows-bring-ai-agents-to-actions/images/banner.webp"/></item><item><title>What Is MCP and Why Do Developers Care?</title><link>https://www.kenmuse.com/blog/what-is-mcp-and-why-do-developers-care/</link><pubDate>Sat, 31 Jan 2026 00:00:00 -0500</pubDate><guid isPermaLink="false">what-is-mcp-and-why-do-developers-care</guid><category>AI</category><category>DevOps</category><category>GitHub</category><description>Discover Model Context Protocol (MCP), the open standard that lets AI models connect directly to your databases, APIs, and tools for deterministic results.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/what-is-mcp-and-why-do-developers-care/images/mcp.png"/></item><item><title>Configuring GitHub Runners With a Dotfiles Action</title><link>https://www.kenmuse.com/blog/configuring-github-runners-with-a-dotfiles-action/</link><pubDate>Fri, 23 Jan 2026 00:00:00 -0500</pubDate><guid isPermaLink="false">configuring-github-runners-with-a-dotfiles-action</guid><category>DevOps</category><category>GitHub</category><category>Security</category><description>Transform your dotfiles repo into a GitHub Action that secures runners without tokens or manual cloning.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/configuring-github-runners-with-a-dotfiles-action/images/banner.png"/></item><item><title>Why Your Perforce Branch History Is Missing in Git</title><link>https://www.kenmuse.com/blog/why-perforce-branch-history-is-missing-in-git/</link><pubDate>Thu, 08 Jan 2026 00:00:00 -0500</pubDate><guid isPermaLink="false">why-perforce-branch-history-is-missing-in-git</guid><category>DevOps</category><category>GitHub</category><description>Your Perforce branch history vanishes in Git because Git has no place to store it -- here's why and how to help your team adapt.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/why-perforce-branch-history-is-missing-in-git/images/banner.jpg"/></item><item><title>Understanding How Git Merges Work</title><link>https://www.kenmuse.com/blog/understanding-how-git-merges-work/</link><pubDate>Fri, 02 Jan 2026 00:00:00 -0500</pubDate><guid isPermaLink="false">understanding-how-git-merges-work</guid><category>DevOps</category><category>GitHub</category><description>Demystifying Git merges -- from merge commits and fast-forwards to rebases and cherry-picks. Learn what's really happening under the hood.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/understanding-how-git-merges-work/images/merging.png"/></item><item><title>Understanding How Git Stores Data</title><link>https://www.kenmuse.com/blog/understanding-how-git-stores-data/</link><pubDate>Mon, 29 Dec 2025 00:00:00 -0500</pubDate><guid isPermaLink="false">understanding-how-git-stores-data</guid><category>DevOps</category><category>GitHub</category><description>A deep dive into Git's internal storage model -- how blobs, trees, and commits work together to track your code's history without a traditional database.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/understanding-how-git-stores-data/images/banner.jpg"/></item><item><title>Deploying Services on GitHub Runner Custom Images</title><link>https://www.kenmuse.com/blog/deploying-services-on-github-runner-custom-images/</link><pubDate>Fri, 26 Dec 2025 00:00:00 -0500</pubDate><guid isPermaLink="false">deploying-services-on-github-runner-custom-images</guid><category>DevOps</category><category>GitHub</category><description>Deploy persistent services on custom GitHub runner images to speed up builds, reduce egress costs, and cut external dependencies.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/deploying-services-on-github-runner-custom-images/images/fairies.png"/></item><item><title>Caching Repositories on GitHub Runner Custom Images</title><link>https://www.kenmuse.com/blog/caching-repositories-on-github-runner-custom-images/</link><pubDate>Wed, 24 Dec 2025 00:00:00 -0500</pubDate><guid isPermaLink="false">caching-repositories-on-github-runner-custom-images</guid><category>DevOps</category><category>GitHub</category><description>Cache large repositories on custom GitHub runner images to speed up clones from minutes to seconds using Git reference clones.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/caching-repositories-on-github-runner-custom-images/images/elves.png"/></item><item><title>Masking Sensitive Information on GitHub Runner Custom Images</title><link>https://www.kenmuse.com/blog/masking-secrets-github-runner-custom-images/</link><pubDate>Mon, 22 Dec 2025 00:00:00 -0500</pubDate><guid isPermaLink="false">masking-secrets-github-runner-custom-images</guid><category>DevOps</category><category>GitHub</category><category>Security</category><description>Learn the best way to protect sensitive information from leaking into the logs on GitHub runner custom images during both build-time and run-time.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/masking-secrets-github-runner-custom-images/images/banner.png"/></item><item><title>Using GitHub Custom Images with OIDC</title><link>https://www.kenmuse.com/blog/using-github-custom-images-with-oidc/</link><pubDate>Fri, 19 Dec 2025 00:00:00 -0500</pubDate><guid isPermaLink="false">using-github-custom-images-with-oidc</guid><category>DevOps</category><category>GitHub</category><category>Security</category><description>Learn how to use OIDC tokens in GitHub Actions custom images to authenticate with private container registries without storing credentials.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/using-github-custom-images-with-oidc/images/santa-oidc.png"/></item><item><title>Pre-Caching Docker Images on GitHub Runner Custom Images</title><link>https://www.kenmuse.com/blog/pre-caching-docker-images-on-github-runner-custom-images/</link><pubDate>Wed, 17 Dec 2025 00:00:00 -0500</pubDate><guid isPermaLink="false">pre-caching-docker-images-on-github-runner-custom-images</guid><category>Containers</category><category>DevOps</category><category>GitHub</category><description>Discover how to improve GitHub Actions performance and drastically cut the time and bandwidth required to use Docker images in your workflows.</description><enclosure type="image/ebp" url="https://www.kenmuse.com/blog/pre-caching-docker-images-on-github-runner-custom-images/images/cached-docker.webp"/></item><item><title>Using GitHub Custom Images for Workflow Validation</title><link>https://www.kenmuse.com/blog/github-custom-images-workflow-validation/</link><pubDate>Mon, 15 Dec 2025 00:00:00 -0500</pubDate><guid isPermaLink="false">github-custom-images-workflow-validation</guid><category>DevOps</category><category>GitHub</category><description>Use pre-job scripts in custom runner images to enforce workflow validation and ensure only approved workflows run on your GitHub Actions runners.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/github-custom-images-workflow-validation/images/santa.png"/></item><item><title>Custom GitHub Runner Images With Pre- and Post-Job Scripts</title><link>https://www.kenmuse.com/blog/custom-github-runner-images-with-pre-and-post-job-scripts/</link><pubDate>Fri, 05 Dec 2025 00:00:00 -0500</pubDate><guid isPermaLink="false">custom-github-runner-images-with-pre-and-post-job-scripts</guid><category>DevOps</category><category>GitHub</category><category>Security</category><description>Learn how to capture custom GitHub-hosted runner images, add pre- and post-job hooks, and make them part of your daily workflows.</description><enclosure type="image/ebp" url="https://www.kenmuse.com/blog/custom-github-runner-images-with-pre-and-post-job-scripts/images/custom-image-versions.webp"/></item><item><title>Using Azure Flexible Federation With GitHub Actions</title><link>https://www.kenmuse.com/blog/using-azure-flexible-federation-with-github-actions/</link><pubDate>Tue, 02 Dec 2025 00:00:00 -0500</pubDate><guid isPermaLink="false">using-azure-flexible-federation-with-github-actions</guid><category>Azure</category><category>DevOps</category><category>GitHub</category><category>Security</category><description>Use Azure flexible federated identity credentials with GitHub Actions to secure your workflows with custom OIDC claims approval expressions.</description><enclosure type="image/ebp" url="https://www.kenmuse.com/blog/using-azure-flexible-federation-with-github-actions/images/banner.webp"/></item><item><title>How I Avoided Shai-Hulud's Second Coming (Part 2)</title><link>https://www.kenmuse.com/blog/how-i-avoided-shai-hulud-second-coming-part-2/</link><pubDate>Fri, 28 Nov 2025 00:00:00 -0500</pubDate><guid isPermaLink="false">how-i-avoided-shai-hulud-second-coming-part-2</guid><category>DevOps</category><category>GitHub</category><category>Security</category><description>How signed commits and repository protections completed my defense against the Shai-Hulud supply chain attack.</description><enclosure type="image/ebp" url="https://www.kenmuse.com/blog/how-i-avoided-shai-hulud-second-coming-part-2/images/activity-log.webp"/></item><item><title>How I Avoided Shai-Hulud's Second Coming (Part 1)</title><link>https://www.kenmuse.com/blog/how-i-avoided-shai-hulud-second-coming-part-1/</link><pubDate>Wed, 26 Nov 2025 00:00:00 -0500</pubDate><guid isPermaLink="false">how-i-avoided-shai-hulud-second-coming-part-1</guid><category>Containers</category><category>DevOps</category><category>GitHub</category><category>Security</category><description>Simple security practices that protected my dev environment from the Shai-Hulud supply chain attack -- and how you can use them too.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/how-i-avoided-shai-hulud-second-coming-part-1/images/desert-worm.png"/></item><item><title>The Hidden Danger in Git Ref Names</title><link>https://www.kenmuse.com/blog/the-hidden-danger-in-git-ref-names/</link><pubDate>Fri, 31 Oct 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">the-hidden-danger-in-git-ref-names</guid><category>DevOps</category><category>GitHub</category><category>Security</category><description>A Halloween lesson: how a weaponized Git branch name let attackers inject code via a GitHub expression and the simple steps you can take to block it.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/the-hidden-danger-in-git-ref-names/images/halloween-banner.png"/></item><item><title>The Key to a Secure CI/CD Process</title><link>https://www.kenmuse.com/blog/key-to-a-secure-ci-cd-process/</link><pubDate>Mon, 20 Oct 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">key-to-a-secure-ci-cd-process</guid><category>DevOps</category><category>GitHub</category><category>Security</category><description>Learn how to create a secure CI/CD pipeline by starting with securing your most important asset: your people.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/key-to-a-secure-ci-cd-process/images/banner.png"/></item><item><title>Restricting IP Access on GitHub-Hosted Runners</title><link>https://www.kenmuse.com/blog/restricting-ip-access-on-github-hosted-runners/</link><pubDate>Thu, 16 Oct 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">restricting-ip-access-on-github-hosted-runners</guid><category>DevOps</category><category>GitHub</category><category>Security</category><description>Restrict outbound DNS and IP access on GitHub-hosted runners using iptables, ip6tables, and DNS-over-HTTPS blocking to harden your CI/CD.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/restricting-ip-access-on-github-hosted-runners/images/banner.png"/></item><item><title>Restricting DNS Access on GitHub-Hosted Runners</title><link>https://www.kenmuse.com/blog/restricting-dns-access-on-github-hosted-runners/</link><pubDate>Mon, 13 Oct 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">restricting-dns-access-on-github-hosted-runners</guid><category>DevOps</category><category>GitHub</category><category>Security</category><description>Learn how to restrict DNS resolution and improve CI/CD security on GitHub-hosted runners by using a local Unbound allow list.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/restricting-dns-access-on-github-hosted-runners/images/banner.png"/></item><item><title>Speed Up Git Clones With Local References</title><link>https://www.kenmuse.com/blog/speed-up-git-clones-with-local-references/</link><pubDate>Fri, 03 Oct 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">speed-up-git-clones-with-local-references</guid><category>DevOps</category><category>GitHub</category><description>Discover how to optimize Git clones by using references to share repository data and Git LFS objects across multiple systems.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/speed-up-git-clones-with-local-references/images/banner.png"/></item><item><title>Publishing npm Packages to GitHub Packages With Yarn</title><link>https://www.kenmuse.com/blog/publishing-npm-packages-to-github-with-yarn/</link><pubDate>Sat, 27 Sep 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">publishing-npm-packages-to-github-with-yarn</guid><category>DevOps</category><category>GitHub</category><category>Programming</category><description>Trying to publish npm packages to GitHub Packages with Yarn? Learn how to authenticate and publish your GitHub Packages with Yarn v4.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/publishing-npm-packages-to-github-with-yarn/images/banner.png"/></item><item><title>Using Git Worktrees for Concurrent Development</title><link>https://www.kenmuse.com/blog/using-git-worktrees-for-concurrent-development/</link><pubDate>Fri, 08 Aug 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">using-git-worktrees-for-concurrent-development</guid><category>DevOps</category><category>GitHub</category><description>Discover Git worktrees and learn how you can work with multiple branches simultaneously without stashing or committing incomplete code.</description><enclosure type="image/ebp" url="https://www.kenmuse.com/blog/using-git-worktrees-for-concurrent-development/images/header-dark.webp"/></item><item><title>Creating a CodeQL Image for ARC With Python 2</title><link>https://www.kenmuse.com/blog/creating-a-codeql-image-for-arc-with-python-2/</link><pubDate>Thu, 24 Jul 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">creating-a-codeql-image-for-arc-with-python-2</guid><category>Containers</category><category>DevOps</category><category>GitHub</category><description>Add Python 2 support to your CodeQL Docker image using multistage builds (and some Docker tricks) to support security scanning in ARC.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/creating-a-codeql-image-for-arc-with-python-2/images/banner.png"/></item><item><title>Creating a CodeQL Image for ARC</title><link>https://www.kenmuse.com/blog/creating-a-codeql-image-for-arc/</link><pubDate>Sat, 19 Jul 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">creating-a-codeql-image-for-arc</guid><category>Containers</category><category>DevOps</category><category>GitHub</category><description>Learn how to build a custom Docker image with CodeQL pre-installed for GitHub ARC runners, eliminating download times and ensuring consistent analysis.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/creating-a-codeql-image-for-arc/images/banner2.png"/></item><item><title>Calling Docker From Inside a GitHub Job Container</title><link>https://www.kenmuse.com/blog/calling-docker-from-inside-a-github-job-container/</link><pubDate>Sat, 24 May 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">calling-docker-from-inside-a-github-job-container</guid><category>Containers</category><category>DevOps</category><category>GitHub</category><description>Learn to run Docker commands inside a GitHub Actions job container and understand the magic behind how Actions creates and manages job and service containers.</description><enclosure type="image/ebp" url="https://www.kenmuse.com/blog/calling-docker-from-inside-a-github-job-container/images/banner.webp"/></item><item><title>Why Exporting Environment Variables Doesn't Work In Actions</title><link>https://www.kenmuse.com/blog/exporting-environment-variables-fails-in-github-actions/</link><pubDate>Sat, 10 May 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">exporting-environment-variables-fails-in-github-actions</guid><category>DevOps</category><category>GitHub</category><description>Ever wondered why you can't just export your environment variables in GitHub Actions? In this post, you'll learn why that happens and what you can do about it.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/exporting-environment-variables-fails-in-github-actions/images/excited-aliens.png"/></item><item><title>How to Dynamically Authenticate With Git</title><link>https://www.kenmuse.com/blog/how-to-dynamically-authenticate-with-git/</link><pubDate>Tue, 06 May 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">how-to-dynamically-authenticate-with-git</guid><category>DevOps</category><category>GitHub</category><category>Security</category><description>Discover practical techniques for dynamically authenticating with Git using environment variables or secret vaults to retrieve user credentials.</description><enclosure type="image/ebp" url="https://www.kenmuse.com/blog/how-to-dynamically-authenticate-with-git/images/banner.webp"/></item><item><title>How Does Git Authentication Work?</title><link>https://www.kenmuse.com/blog/how-does-git-authentication-work/</link><pubDate>Sat, 03 May 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">how-does-git-authentication-work</guid><category>DevOps</category><category>GitHub</category><category>Security</category><description>Discover the intricacies of Git authentication, how it works, and how to configure credential helpers to allow fine-grained control over authentication.</description><enclosure type="image/ebp" url="https://www.kenmuse.com/blog/how-does-git-authentication-work/images/banner.webp"/></item><item><title>What's New in GitHub Actions Runner Controller</title><link>https://www.kenmuse.com/blog/whats-new-in-github-arc/</link><pubDate>Mon, 31 Mar 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">whats-new-in-github-arc</guid><category>Containers</category><category>DevOps</category><category>GitHub</category><description>The new version of Actions Runner Controller has performance fixes, improved configurability, and a new approach to metrics. This post reviews those changes.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/whats-new-in-github-arc/images/banner.png"/></item><item><title>The Secret Life of Git Large File Storage</title><link>https://www.kenmuse.com/blog/secret-life-of-git-lfs/</link><pubDate>Sat, 25 Jan 2025 00:00:00 -0500</pubDate><guid isPermaLink="false">secret-life-of-git-lfs</guid><category>DevOps</category><category>GitHub</category><description>Uncover the hidden secrets and inner workings of Git LFS! Learn the tricks behind how it uses native Git extensibility features to manage your large files.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/secret-life-of-git-lfs/images/git-lfs-push-hooks.png"/></item><item><title>Migrating Git With An LFS Configuration File</title><link>https://www.kenmuse.com/blog/migrating-git-with-lfs-config-file/</link><pubDate>Sat, 18 Jan 2025 00:00:00 -0500</pubDate><guid isPermaLink="false">migrating-git-with-lfs-config-file</guid><category>DevOps</category><category>GitHub</category><description>Learn how to configure Git LFS endpoints and to safely migrate repositories that are using .lfsconfig to manage the storage location.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/migrating-git-with-lfs-config-file/images/banner.jpg"/></item><item><title>Using A Kubernetes Native Sidecar With GitHub ARC</title><link>https://www.kenmuse.com/blog/using-kubernetes-native-sidecars-with-github-arc/</link><pubDate>Fri, 20 Dec 2024 00:00:00 -0500</pubDate><guid isPermaLink="false">using-kubernetes-native-sidecars-with-github-arc</guid><category>Containers</category><category>DevOps</category><category>GitHub</category><description>Explore how to modernize the Docker-in-Docker support in GitHub Actions Runner Controller (ARC) using the latest Kubernetes feature: native sidecars.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/using-kubernetes-native-sidecars-with-github-arc/images/banner.png"/></item><item><title>Migrating Submodules That Use Large File Storage (LFS)</title><link>https://www.kenmuse.com/blog/migrating-submodules-with-large-files-storage-lfs/</link><pubDate>Sat, 09 Nov 2024 00:00:00 -0500</pubDate><guid isPermaLink="false">migrating-submodules-with-large-files-storage-lfs</guid><category>DevOps</category><category>GitHub</category><description>When repositories are migrated, it's easy to break the links to the submodules. In this post, learn why it happens, how to avoid it, and how to fix it.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/migrating-submodules-with-large-files-storage-lfs/images/banner.png"/></item><item><title>What Is a GitHub Tool (And Why to Use Them)</title><link>https://www.kenmuse.com/blog/what-is-a-github-tool-and-why-to-use-them/</link><pubDate>Sat, 02 Nov 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">what-is-a-github-tool-and-why-to-use-them</guid><category>GitHub</category><category>DevOps</category><description>GitHub tools make it easier to manage the dependencies of a project and ensure your environment remains consistent and stable. Learn how to use them (and why).</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/what-is-a-github-tool-and-why-to-use-them/images/tools.jpg"/></item><item><title>Defining The Process for Securing Your Supply Chain</title><link>https://www.kenmuse.com/blog/define-process-for-secure-supply-chain/</link><pubDate>Sat, 26 Oct 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">define-process-for-secure-supply-chain</guid><category>DevOps</category><category>GitHub</category><description>A company's development practices are only as secure as their supply chain. Learn how to define a process for properly reviewing your supply chain.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/define-process-for-secure-supply-chain/images/banner.png"/></item><item><title>How to Handle Step and Job Errors in GitHub Actions</title><link>https://www.kenmuse.com/blog/how-to-handle-step-and-job-errors-in-github-actions/</link><pubDate>Fri, 06 Sep 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">how-to-handle-step-and-job-errors-in-github-actions</guid><category>DevOps</category><category>GitHub</category><description>In most cases, we write a workflow where all of the steps succeed. In this post, we'll explore how to create workflows that can handle a failing step or job.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/how-to-handle-step-and-job-errors-in-github-actions/images/banner.png"/></item><item><title>Using Dynamic Environment Variables With GitHub</title><link>https://www.kenmuse.com/blog/using-dynamic-environment-variables-with-github/</link><pubDate>Sat, 31 Aug 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">using-dynamic-environment-variables-with-github</guid><category>DevOps</category><category>GitHub</category><description>Learn how to dynamically generate environment variables in GitHub Actions, and learn how this technique can be used to configure Actions themselves.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/using-dynamic-environment-variables-with-github/images/banner.png"/></item><item><title>Implementing Processes for GHAS using GitHub Probot</title><link>https://www.kenmuse.com/blog/implementing-security-processes-for-ghas-using-github-probot/</link><pubDate>Fri, 16 Aug 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">implementing-security-processes-for-ghas-using-github-probot</guid><category>DevOps</category><category>GitHub</category><category>Programming</category><description>GitHub Advanced Security helps teams to shift left and secure their development. When its processes don't quite fit the team's approach, it's time for Probot!</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/implementing-security-processes-for-ghas-using-github-probot/images/banner.png"/></item><item><title>The Ultimate Tips for Working With Large Git Monorepos</title><link>https://www.kenmuse.com/blog/tips-for-large-monorepos-on-github/</link><pubDate>Sat, 03 Aug 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">tips-for-large-monorepos-on-github</guid><category>DevOps</category><category>GitHub</category><description>Large codebases are difficult, but there are ways to improve the experience. Learn some of the key settings and best practices for handling large Git monorepos.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/tips-for-large-monorepos-on-github/images/banner.jpg"/></item><item><title>Planning Kubernetes Cloud Deployments</title><link>https://www.kenmuse.com/blog/planning-kubernetes-cloud-deployments/</link><pubDate>Sat, 27 Jul 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">planning-kubernetes-cloud-deployments</guid><category>GitHub</category><category>DevOps</category><description>Understanding resource allocation is a critical skill for successful Kubernetes cluster deployments. Learn how the cloud providers reserve Kubernetes resources.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/planning-kubernetes-cloud-deployments/images/banner.png"/></item><item><title>Understanding Kubernetes Resource Consumption</title><link>https://www.kenmuse.com/blog/understanding-kubernetes-resource-consumption/</link><pubDate>Fri, 19 Jul 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">understanding-kubernetes-resource-consumption</guid><category>GitHub</category><category>DevOps</category><description>Surprised that you can't fit as many pods on a node as you thought? It turns out that there's a lot more to the story of how Kubernetes allocates resources.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/understanding-kubernetes-resource-consumption/images/banner.png"/></item><item><title>Scaling ARC on a Schedule</title><link>https://www.kenmuse.com/blog/scaling-arc-on-a-schedule/</link><pubDate>Wed, 03 Jul 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">scaling-arc-on-a-schedule</guid><category>GitHub</category><category>DevOps</category><description>The Actions Runner Controller (ARC) can't configure the minimum runner count based on a schedule. Learn to use native `CronJob` resources for the task!</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/scaling-arc-on-a-schedule/images/banner.png"/></item><item><title>The Top 5 Things To Know About ARC</title><link>https://www.kenmuse.com/blog/top-five-things-to-know-about-arc/</link><pubDate>Fri, 21 Jun 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">top-five-things-to-know-about-arc</guid><category>GitHub</category><category>DevOps</category><description>Actions Runner Controller (ARC) is a powerful way to manage ephemeral, self-hosted GitHub runners. There are five keys that can make you successful using it.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/top-five-things-to-know-about-arc/images/banner.png"/></item><item><title>The Importance of Kubernetes Logs</title><link>https://www.kenmuse.com/blog/the-importance-of-kubernetes-logs/</link><pubDate>Thu, 13 Jun 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">the-importance-of-kubernetes-logs</guid><category>GitHub</category><category>DevOps</category><description>If you really want to master your Kubernetes environment, it begins with understanding the value of a logging and how to implement good logging practices.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/the-importance-of-kubernetes-logs/images/banner.png"/></item><item><title>Strategies for Upgrading ARC</title><link>https://www.kenmuse.com/blog/strategies-for-upgrading-arc/</link><pubDate>Thu, 30 May 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">strategies-for-upgrading-arc</guid><category>GitHub</category><category>DevOps</category><description>Understand the best practices for upgrading Actions Runner Controller and minimizing downtime, including when (and if) you can skip a release.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/strategies-for-upgrading-arc/images/banner.png"/></item><item><title>Building Base Images for ARC</title><link>https://www.kenmuse.com/blog/building-base-images-for-arc/</link><pubDate>Thu, 09 May 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">building-base-images-for-arc</guid><category>Containers</category><category>GitHub</category><category>DevOps</category><description>If you're using Actions Runner Controller, the provided base image may not be enough. Learn what's needed in your image to make your workflows run smoothly.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/building-base-images-for-arc/images/banner.png"/></item><item><title>Supply Chain Security in CI/CD Systems</title><link>https://www.kenmuse.com/blog/supply-chain-security/</link><pubDate>Thu, 02 May 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">supply-chain-security</guid><category>DevOps</category><category>GitHub</category><description>Your supply chain is frequently the most vulnerable part of your development process. In this post, we'll explore how you can protect your CI/CD systems.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/supply-chain-security/images/banner.png"/></item><item><title>Building GitHub Runner Images With an Action Archive Cache</title><link>https://www.kenmuse.com/blog/building-github-actions-runner-images-with-an-action-archive-cache/</link><pubDate>Fri, 29 Mar 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">building-github-actions-runner-images-with-an-action-archive-cache</guid><category>Containers</category><category>GitHub</category><category>DevOps</category><description>If you want to make images for GitHub Actions Runner Controller (ARC) that are fast and network-friendly, learn how to include an Action archive cache.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/building-github-actions-runner-images-with-an-action-archive-cache/images/banner.png"/></item><item><title>Building GitHub Actions Runner Images With A Tool Cache</title><link>https://www.kenmuse.com/blog/building-github-actions-runner-images-with-a-tool-cache/</link><pubDate>Thu, 28 Mar 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">building-github-actions-runner-images-with-a-tool-cache</guid><category>Containers</category><category>GitHub</category><category>DevOps</category><description>If you want to make an efficient image for GitHub Actions Runner Controller (ARC), you need to first understand how to prepopulate the runner's tool cache.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/building-github-actions-runner-images-with-a-tool-cache/images/banner.png"/></item><item><title>What Is ARC Doing &amp; How Does It Interact With Kubernetes?</title><link>https://www.kenmuse.com/blog/what-is-arc-doing/</link><pubDate>Sat, 16 Mar 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">what-is-arc-doing</guid><category>GitHub</category><category>DevOps</category><description>Understanding ARC begins with understanding what it does (and does not do) to create runners on Kubernetes. In this post, I explore the basics of the process.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/what-is-arc-doing/images/banner.png"/></item><item><title>The New DevContainer initializeCommand</title><link>https://www.kenmuse.com/blog/new-devcontainer-initializecommand/</link><pubDate>Fri, 08 Mar 2024 00:00:00 -0500</pubDate><guid isPermaLink="false">new-devcontainer-initializecommand</guid><category>DevOps</category><category>GitHub</category><description>The dev container specification was updated to better define the behavior of initializeCommand. Learn what changed and why your scripts should be idempotent.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/new-devcontainer-initializecommand/images/banner.png"/></item><item><title>Troubleshooting Git Authentication</title><link>https://www.kenmuse.com/blog/troubleshooting-git-authentication/</link><pubDate>Fri, 16 Feb 2024 00:00:00 -0500</pubDate><guid isPermaLink="false">troubleshooting-git-authentication</guid><category>DevOps</category><category>GitHub</category><category>Programming</category><description>Whether you're dealing with bad credentials or connectivity issues, there are a few tricks with Git that can make it easier to understand what's happening.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/troubleshooting-git-authentication/images/banner.png"/></item><item><title>Getting User Input When Starting a Dev Container</title><link>https://www.kenmuse.com/blog/getting-user-input-when-starting-a-dev-container/</link><pubDate>Fri, 09 Feb 2024 00:00:00 -0500</pubDate><guid isPermaLink="false">getting-user-input-when-starting-a-dev-container</guid><category>Azure</category><category>DevOps</category><category>GitHub</category><description>Sometimes you just need a little human interaction. Thankfully, there is a way to get user input that works with most of the dev container implementations.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/getting-user-input-when-starting-a-dev-container/images/banner.png"/></item><item><title>Automating Azure OIDC Application Federation</title><link>https://www.kenmuse.com/blog/automating-azure-oidc-application-federation/</link><pubDate>Mon, 22 Jan 2024 00:00:00 -0500</pubDate><guid isPermaLink="false">automating-azure-oidc-application-federation</guid><category>Azure</category><category>DevOps</category><category>GitHub</category><category>Security</category><description>&lt;p&gt;I was recently asked if I knew how to automate creating Azure Entra ID (formerly Active Directory) applications. More specifically, they wanted to know if they could use PowerShell to automate creating the OIDC federation between Azure AD and GitHub. To do this, we just need to use a few PowerShell modules that save us the trouble of crafting several REST calls. These modules work with PowerShell 5.x and 7.x.&lt;/p&gt;</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/automating-azure-oidc-application-federation/images/banner.jpg"/></item><item><title>More Best Practices for Deploying GitHub ARC</title><link>https://www.kenmuse.com/blog/more-best-practices-for-deploying-github-arc/</link><pubDate>Thu, 11 Jan 2024 00:00:00 -0500</pubDate><guid isPermaLink="false">more-best-practices-for-deploying-github-arc</guid><category>GitHub</category><category>DevOps</category><description>There are some common issues that lead to teams struggling to set up ARC, and nearly all can be avoided with these recommendations.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/more-best-practices-for-deploying-github-arc/images/banner.png"/></item><item><title>Best Practices for Deploying GitHub ARC</title><link>https://www.kenmuse.com/blog/best-practices-for-deploying-github-arc/</link><pubDate>Fri, 05 Jan 2024 00:00:00 -0500</pubDate><guid isPermaLink="false">best-practices-for-deploying-github-arc</guid><category>GitHub</category><category>DevOps</category><description>There are some common issues that lead to teams struggling to set up ARC. Nearly all of them can be avoided with these recommendations.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/best-practices-for-deploying-github-arc/images/banner.png"/></item><item><title>Why You Should Use Dedicated Clusters For GitHub ARC</title><link>https://www.kenmuse.com/blog/why-you-should-use-dedicated-clusters-for-github-arc/</link><pubDate>Sat, 30 Dec 2023 00:00:00 -0500</pubDate><guid isPermaLink="false">why-you-should-use-dedicated-clusters-for-github-arc</guid><category>GitHub</category><category>DevOps</category><description>I recommend using a dedicated Kubernetes cluster with GitHub Actions Runner Controller (ARC) to get the best performance and security. This post explains why.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/why-you-should-use-dedicated-clusters-for-github-arc/images/banner.jpg"/></item><item><title>GitHub Actions Injection Attacks</title><link>https://www.kenmuse.com/blog/github-actions-injection-attacks/</link><pubDate>Thu, 21 Dec 2023 00:00:00 -0500</pubDate><guid isPermaLink="false">gitHub-actions-injection-attacks</guid><category>DevOps</category><category>GitHub</category><category>Security</category><description>Security is important, even in your CI/CD processes. Learn the basics of injection exploits with GitHub Actions and how to avoid them.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/github-actions-injection-attacks/images/banner.jpg"/></item><item><title>The Two GitHub ARCs (and Why You Should Only Use One)</title><link>https://www.kenmuse.com/blog/the-two-github-arcs/</link><pubDate>Sat, 16 Dec 2023 00:00:00 -0500</pubDate><guid isPermaLink="false">the-two-github-arcs</guid><category>GitHub</category><category>DevOps</category><description>Many teams want to have GitHub self-hosted runners on Kubernetes using ARC, but aren’t aware there are two different versions. This post attempts to explain.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/the-two-github-arcs/images/banner.jpg"/></item><item><title>Enabling GitHub ARC Metrics</title><link>https://www.kenmuse.com/blog/enabling-github-arc-metrics/</link><pubDate>Sat, 09 Dec 2023 00:00:00 -0500</pubDate><guid isPermaLink="false">enabling-github-arc-metrics</guid><category>GitHub</category><category>DevOps</category><description>Learn to enable metrics in GitHub's Actions Runner Controller (ARC) and get visibility into the processing queue and the performance of jobs and runners.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/enabling-github-arc-metrics/images/grafana.png"/></item><item><title>Understanding OIDC and Identity Federation</title><link>https://www.kenmuse.com/blog/understanding-oidc-and-identity-federation/</link><pubDate>Fri, 24 Nov 2023 00:00:00 -0500</pubDate><guid isPermaLink="false">understanding-oidc-and-identity-federation</guid><category>Azure</category><category>DevOps</category><category>GitHub</category><category>Security</category><description>Adopting OIDC can be challenging for teams that don't understand how the process works. This post explores OIDC and explains what's happening under the covers.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/understanding-oidc-and-identity-federation/images/banner.png"/></item><item><title>Comparing Azure DevOps and GitHub</title><link>https://www.kenmuse.com/blog/comparing-azure-devops-and-github/</link><pubDate>Thu, 16 Nov 2023 00:00:00 -0500</pubDate><guid isPermaLink="false">comparing-azure-devops-and-github</guid><category>Azure DevOps</category><category>GitHub</category><description>It can be challenging too understand the differences between Azure DevOps and GitHub Actions. This article provides a mapping of the features and terminology.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/comparing-azure-devops-and-github/images/banner.png"/></item><item><title>Understanding the SLA of ARC</title><link>https://www.kenmuse.com/blog/understanding-the-sla-of-arc/</link><pubDate>Sat, 04 Nov 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">understanding-the-sla-of-arc</guid><category>Azure</category><category>DevOps</category><category>GitHub</category><description>If you're trying to increase availability by using GitHub Actions Runner Controller. In this post, I'll explain why you can't exceed the 99.9% SLA of GitHub.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/understanding-the-sla-of-arc/images/banner.png"/></item><item><title>Windows Runners on Actions Runner Controller</title><link>https://www.kenmuse.com/blog/windows-runners-on-actions-runner-controller/</link><pubDate>Thu, 26 Oct 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">windows-runners-on-actions-runner-controller</guid><category>Azure</category><category>GitHub</category><category>Containers</category><category>DevOps</category><description>GitHub's Actions Runner Controller (ARC) does not officially support Windows containers for runners. With a little bit of work, we can make it possible.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/windows-runners-on-actions-runner-controller/images/banner.jpg"/></item><item><title>Organizing Build Processes</title><link>https://www.kenmuse.com/blog/organizing-build-processes/</link><pubDate>Thu, 05 Oct 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">organizing-build-processes</guid><category>DevOps</category><category>GitHub</category><description>Most automated processes aren't maintainable. There are practices you can use to create CI/CD workflows that are maintainable, testable, and reusable.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/organizing-build-processes/images/banner.png"/></item><item><title>Shared Commits and GitHub Checks</title><link>https://www.kenmuse.com/blog/shared-commits-and-github-checks/</link><pubDate>Thu, 21 Sep 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">shared-commits-and-github-checks</guid><category>DevOps</category><category>GitHub</category><description>Using a pull request to merge the same commit to multiple branches causes GitHub Checks and validations to fail. Learn the technique needed to fix this issue.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/shared-commits-and-github-checks/images/work-branch.png"/></item><item><title>Universal Packages on GitHub With ORAS</title><link>https://www.kenmuse.com/blog/universal-packages-on-github-with-oras/</link><pubDate>Fri, 14 Jul 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">universal-packages-on-github-with-oras</guid><category>DevOps</category><category>GitHub</category><description>Most package management systems support "universal artifacts" storage. Although not explicitly documented, GitHub also supports universal packages via ORAS.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/universal-packages-on-github-with-oras/images/banner.jpg"/></item><item><title>Creating GitHub Checks (and Understanding the Checks API)</title><link>https://www.kenmuse.com/blog/creating-github-checks/</link><pubDate>Thu, 06 Jul 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">creating-github-checks</guid><category>DevOps</category><category>GitHub</category><description>If you need to integrate an external system or execute parts of the CI process asynchronously, the GitHub Checks API can provide a way to make that happen.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/creating-github-checks/images/banner.png"/></item><item><title>The Many SHAs of a GitHub Pull Request</title><link>https://www.kenmuse.com/blog/the-many-shas-of-a-github-pull-request/</link><pubDate>Fri, 30 Jun 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">the-many-shas-of-a-github-pull-request</guid><category>DevOps</category><category>GitHub</category><description>Executing a GitHub Action for a pull request creates a surprising number of SHA commits. Learn the purpose of the different SHAs and when to use each one.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/the-many-shas-of-a-github-pull-request/images/banner.png"/></item><item><title>Why You Should (Not) Prefer Monorepos For Git</title><link>https://www.kenmuse.com/blog/why-you-should-not-prefer-monorepos-for-git/</link><pubDate>Fri, 23 Jun 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">why-you-should-not-prefer-monorepos-for-git</guid><category>DevOps</category><category>GitHub</category><category>Programming</category><description>Monorepos are often seen as the simple solution to complex collaboration and code management problems. Like with most quick fixes, the devil's in the details.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/why-you-should-not-prefer-monorepos-for-git/images/banner.jpg"/></item><item><title>That Template Repository Trick</title><link>https://www.kenmuse.com/blog/that-template-repository-trick/</link><pubDate>Thu, 15 Jun 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">that-template-repository-trick</guid><category>DevOps</category><category>GitHub</category><description>&lt;p&gt;Many people are familiar with the idea of the &lt;em&gt;template repository&lt;/em&gt;. It provides a great way to centralize configurations for common projects for teams. I can declare a repository, configure it with files and folders, and set up one or more branches. After
&lt;a class="external-link" href="https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-template-repository" arial-label="The marking it as a template link opens in a new tab" target="_blank"&gt;marking it as a template&lt;span class="fa-solid fa-up-right-from-square" &gt;&lt;/span&gt;&lt;/a&gt; in the Settings, it becomes available to other team members when they create a repository.&lt;/p&gt;</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/that-template-repository-trick/images/banner.jpg"/></item><item><title>GitHub Actions Workflow Permissions</title><link>https://www.kenmuse.com/blog/github-actions-workflow-permissions/</link><pubDate>Thu, 08 Jun 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">github-actions-workflow-permissions</guid><category>DevOps</category><category>GitHub</category><description>GitHub Actions provide powerful workflow support but rely on trusting third-party code. Learn how to secure your GitHub Actions workflows using permissions.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/github-actions-workflow-permissions/images/banner.jpg"/></item><item><title>GitHub, Maven, and Packages</title><link>https://www.kenmuse.com/blog/github-maven-and-packages/</link><pubDate>Thu, 27 Apr 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">github-maven-and-packages</guid><category>Programming</category><category>GitHub</category><category>DevOps</category><description>It's important to understand how to securely access package repositories when doing a Java build. Understand how GitHub Actions supports this process.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/github-maven-and-packages/images/banner.jpg"/></item><item><title>The Life of a Commit After Git Squash</title><link>https://www.kenmuse.com/blog/life-after-git-squash/</link><pubDate>Fri, 31 Mar 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">life-after-git-squash</guid><category>DevOps</category><category>GitHub</category><description>Explore what happens to files in Git after squashing a set of commits that have a tag applied to them. What happens to the commits and the tag may surprise you!</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/life-after-git-squash/images/banner.png"/></item><item><title>Understanding Push Triggers and Branches in GitHub</title><link>https://www.kenmuse.com/blog/understanding-push-triggers-and-branches-in-github/</link><pubDate>Thu, 23 Mar 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">understanding-push-triggers-and-branches-in-github</guid><category>GitHub</category><category>DevOps</category><description>Understand how branches work with the process of triggering Actions workflows in GitHub.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/understanding-push-triggers-and-branches-in-github/images/banner.png"/></item><item><title>Using New GitHub APIs With Probot</title><link>https://www.kenmuse.com/blog/using-new-github-apis-with-probot/</link><pubDate>Thu, 16 Feb 2023 00:00:00 -0500</pubDate><guid isPermaLink="false">using-new-github-apis-with-probot</guid><category>GitHub</category><category>Programming</category><description>&lt;p&gt;Trying to integrate your custom processes with GitHub doesn&amp;rsquo;t have to be challenging. One of the easiest ways to implement custom functionality is to create a
&lt;a class="external-link" href="https://docs.github.com/en/enterprise-cloud@latest/developers/apps/building-github-apps/creating-a-github-app" arial-label="The GitHub App link opens in a new tab" target="_blank"&gt;GitHub App&lt;span class="fa-solid fa-up-right-from-square" &gt;&lt;/span&gt;&lt;/a&gt; using Probot. The challenge comes if you need to implement a listener for a new webhook event or invoke a new API that Probot hasn&amp;rsquo;t exposed. The good news &amp;ndash; it&amp;rsquo;s not too difficult. As an example, we&amp;rsquo;ll explore implementing both the event handling and REST method calls for some of the new Dependabot endpoints.&lt;/p&gt;</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/using-new-github-apis-with-probot/images/banner.png"/></item><item><title>Implementing Docker Layer Caching in GitHub Actions</title><link>https://www.kenmuse.com/blog/implementing-docker-layer-caching-in-github-actions/</link><pubDate>Thu, 09 Feb 2023 00:00:00 -0500</pubDate><guid isPermaLink="false">implementing-docker-layer-caching-in-github-actions</guid><category>DevOps</category><category>Containers</category><category>GitHub</category><description>Learn how to use the Docker BuildKit gha, inline, and registry layer caching with GHCR, and GitHub Actions to improve build performance.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/implementing-docker-layer-caching-in-github-actions/images/banner.jpg"/></item><item><title>What Are GitHub Verified Domains?</title><link>https://www.kenmuse.com/blog/what-are-github-verified-domains/</link><pubDate>Thu, 12 Jan 2023 00:00:00 -0500</pubDate><guid isPermaLink="false">what-are-github-verified-domains</guid><category>GitHub</category><description>GitHub has a lot of options for verified domains. Have you ever wondered what they all do, when to use them, and how they help keep your brand secure?</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/what-are-github-verified-domains/images/banner.png"/></item><item><title>Using Git SSH From Docker With a Local Proxy</title><link>https://www.kenmuse.com/blog/using-git-ssh-from-docker-with-a-local-proxy/</link><pubDate>Thu, 22 Dec 2022 00:00:00 -0500</pubDate><guid isPermaLink="false">using-git-ssh-from-docker-with-a-local-proxy</guid><category>DevOps</category><category>GitHub</category><description>Learn the dev container trick for accessing a host port to create a proxy SSH connection to a Git server.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/using-git-ssh-from-docker-with-a-local-proxy/images/banner.png"/></item><item><title>SSH and Multiple Git Credentials</title><link>https://www.kenmuse.com/blog/ssh-and-multiple-git-credentials/</link><pubDate>Thu, 15 Dec 2022 00:00:00 -0500</pubDate><guid isPermaLink="false">ssh-and-multiple-git-credentials</guid><category>DevOps</category><category>GitHub</category><description>Learn a trick for using SSH to connect to multiple GitHub environments and Git hosts with minimal effort.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/ssh-and-multiple-git-credentials/images/banner.png"/></item><item><title>Comparing GitHub Commit Signing Options</title><link>https://www.kenmuse.com/blog/comparing-github-commit-signing-options/</link><pubDate>Fri, 07 Oct 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">comparing-github-commit-signing-options</guid><category>GitHub</category><description>&lt;p&gt;I recently had an interesting discussion where we tried to explore some of the ways you can sign commits in Git and GitHub. If you&amp;rsquo;re not familiar with the functionality, Git provides mechanisms for signing commits and tags to ensure authorship. By default, Git trusts that the user name and email that you provide to &lt;code&gt;git config&lt;/code&gt; is legitimate. For many organizations, that may be perfectly acceptable. If only limited people have access to the repository, this is often enough.&lt;/p&gt;</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/comparing-github-commit-signing-options/images/banner.jpg"/></item><item><title>Variable Groups in GitHub</title><link>https://www.kenmuse.com/blog/variable-groups-in-github/</link><pubDate>Thu, 16 Jun 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">variable-groups-in-github</guid><category>DevOps</category><category>GitHub</category><description>Missing your Azure DevOps variable groups? Learn techniques you can use to implement variable groups in GitHub Actions.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/variable-groups-in-github/images/banner.jpg"/></item><item><title>Publishing Images With GitHub Actions</title><link>https://www.kenmuse.com/blog/publishing-images-with-github-actions/</link><pubDate>Thu, 09 Jun 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">publishing-images-with-github-actions</guid><category>DevOps</category><category>Containers</category><category>GitHub</category><description>Learn how to publish OCI and Docker images to Azure and GHCR using GitHub Actions and OIDC.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/publishing-images-with-github-actions/images/banner.jpg"/></item><item><title>Deploying to Azure from Private Container Registries</title><link>https://www.kenmuse.com/blog/deploying-to-azure-from-private-container-registries/</link><pubDate>Thu, 17 Mar 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">deploying-to-azure-from-private-container-registries</guid><category>Azure</category><category>Containers</category><category>GitHub</category><category>DevOps</category><description>How to use private registries and GitHub Container Registry with services like Azure Container Instances, Azure App Services, and Azure Container Apps.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/deploying-to-azure-from-private-container-registries/images/banner.jpg"/></item><item><title>Dev Containers, Codespaces, and Bicep, Oh My!</title><link>https://www.kenmuse.com/blog/devcontainers-codespaces-and-bicep/</link><pubDate>Thu, 16 Dec 2021 00:00:00 -0500</pubDate><guid isPermaLink="false">devcontainers-codespaces-and-bicep</guid><category>Azure</category><category>DevOps</category><category>GitHub</category><description>Learn how to create a dev container for editing and deploying Bicep templates to Azure.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/devcontainers-codespaces-and-bicep/images/banner.jpg"/></item><item><title>Reusing GitHub Workflows and Centralized Processes</title><link>https://www.kenmuse.com/blog/reusing-github-workflows/</link><pubDate>Thu, 07 Oct 2021 00:00:00 -0400</pubDate><guid isPermaLink="false">reusing-github-workflows</guid><category>GitHub</category><category>DevOps</category><description>&lt;p&gt;It&amp;rsquo;s almost Friday, so we&amp;rsquo;ll keep today&amp;rsquo;s post short.&lt;/p&gt;
&lt;p&gt;This week, GitHub officially launched the public
&lt;a class="external-link" href="https://docs.github.com/en/get-started/using-github/exploring-early-access-releases-with-feature-preview#githubs-release-cycle" arial-label="The beta link opens in a new tab" target="_blank"&gt;beta&lt;span class="fa-solid fa-up-right-from-square" &gt;&lt;/span&gt;&lt;/a&gt; of reusable workflows. Reusable workflows make it easy to treat a workflow like an Action. It can be referenced and executed from other workflows in the caller&amp;rsquo;s context. This allows teams to share common patterns, to centralize best practices, and to centralize the development of processes.&lt;/p&gt;</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/reusing-github-workflows/images/banner.png"/></item></channel></rss>