<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xx="tags" 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/tags/github/rss/" rel="self" type="application/rss+xml"/><link>https://www.kenmuse.com/tags/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/tags/github/</link><width>32</width><url>https://www.kenmuse.com/tags/github/favicon/favicon-32x32.png</url><height>32</height></image><atom:link href="https://www.kenmuse.com/tags/github/rss/index.xml" rel="self" type="application/rss+xml"/><item><title>Workspace vs Worktree Isolation in Copilot CLI</title><link>https://www.kenmuse.com/blog/workspace-vs-worktree-isolation-in-copilot-cli/</link><pubDate>Fri, 27 Mar 2026 00:00:00 -0400</pubDate><guid isPermaLink="false">workspace-vs-worktree-isolation-in-copilot-cli</guid><category>AI</category><category>DevOps</category><category>GitHub</category><description>Run Copilot CLI sessions in parallel without repo chaos. Learn when to use workspace or worktree isolation, then review, merge, and clean up safely.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/workspace-vs-worktree-isolation-in-copilot-cli/images/banner.png"/></item><item><title>Why Focused AI Agents Get Better Coding Results</title><link>https://www.kenmuse.com/blog/why-focused-ai-agents-get-better-coding-results/</link><pubDate>Thu, 19 Mar 2026 00:00:00 -0400</pubDate><guid isPermaLink="false">why-focused-ai-agents-get-better-coding-results</guid><category>AI</category><category>DevOps</category><category>GitHub</category><description>Learn why focused AI agents outperform generalists. All about why tokens, context windows, progressive disclosure, and splitting planning improves results.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/why-focused-ai-agents-get-better-coding-results/images/banner.png"/></item><item><title>A Chef's Guide to Customizing GitHub Copilot</title><link>https://www.kenmuse.com/blog/developers-guide-to-customizing-github-copilot/</link><pubDate>Sat, 14 Mar 2026 00:00:00 -0400</pubDate><guid isPermaLink="false">developers-guide-to-customizing-github-copilot</guid><category>AI</category><category>DevOps</category><category>GitHub</category><description>A kitchen analogy that makes it easier to know when to use Copilot's customization features: instructions, prompts, agents, skills, MCP, hooks, and plugins.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/developers-guide-to-customizing-github-copilot/images/banner.png"/></item><item><title>Creating Agent Plugins for VS Code and Copilot CLI</title><link>https://www.kenmuse.com/blog/creating-agent-plugins-for-vs-code-and-copilot-cli/</link><pubDate>Sat, 07 Mar 2026 00:00:00 -0500</pubDate><guid isPermaLink="false">creating-agent-plugins-for-vs-code-and-copilot-cli</guid><category>AI</category><category>DevOps</category><category>GitHub</category><description>Package and share Copilot customizations with agent plugins -- build a plugin, create a marketplace, and install it in VS Code or the CLI.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/creating-agent-plugins-for-vs-code-and-copilot-cli/images/banner.png"/></item><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>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>Layering Approaches for Secure Secrets</title><link>https://www.kenmuse.com/blog/layering-approaches-for-secure-secrets/</link><pubDate>Fri, 12 Dec 2025 00:00:00 -0500</pubDate><guid isPermaLink="false">layering-approaches-for-secure-secrets</guid><category>Security</category><category>DevOps</category><description>Learn to layer secret management techniques through practical examples that build defense-in-depth security for GitHub Actions, containers, and more.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/layering-approaches-for-secure-secrets/images/criminal-impossible-safe.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>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>The New DevOps - Why AI Is Not Taking Your Job (Yet)</title><link>https://www.kenmuse.com/blog/the-new-devops-why-ai-is-not-taking-your-job-yet/</link><pubDate>Thu, 28 Aug 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">the-new-devops-why-ai-is-not-taking-your-job-yet</guid><category>AI</category><category>DevOps</category><category>Programming</category><description>Exploring why AI tools complement rather than replace developers, and how smart companies use AI to enhance team productivity instead of downsizing talent.</description><enclosure type="image/ebp" url="https://www.kenmuse.com/blog/the-new-devops-why-ai-is-not-taking-your-job-yet/images/good-ai.webp"/></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>Retrieving Properties From a Gitsigned Commit</title><link>https://www.kenmuse.com/blog/retrieving-properties-from-a-gitsigned-commit/</link><pubDate>Wed, 16 Apr 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">retrieving-properties-from-a-gitsigned-commit</guid><category>DevOps</category><category>Security</category><description>Learn how to extract and validate signed Git commits using the Gitsign certificates and OpenSSL to enhance your software supply chain security.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/retrieving-properties-from-a-gitsigned-commit/images/banner.png"/></item><item><title>Using Gitsign for Keyless Git Commit Signing</title><link>https://www.kenmuse.com/blog/using-gitsign-for-keyless-git-commit-signing/</link><pubDate>Sat, 12 Apr 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">using-gitsign-for-keyless-git-commit-signing</guid><category>DevOps</category><category>Security</category><description>Use Gitsign and GitHub Actions for keyless Git commit signing to enhance supply chain security and ensure code provenance without managing private keys.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/using-gitsign-for-keyless-git-commit-signing/images/banner.png"/></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>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>Managing Pod Resource Requests and Limits in Kubernetes</title><link>https://www.kenmuse.com/blog/managing-pod-resource-requests-and-limits-in-kubernetes/</link><pubDate>Thu, 02 Jan 2025 00:00:00 -0500</pubDate><guid isPermaLink="false">managing-pod-resource-requests-and-limits-in-kubernetes</guid><category>Containers</category><category>DevOps</category><description>In Kubernetes, we cannot manage resources at the pod level and must resort to setting requests and limits on containers. Learn how that's changing.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/managing-pod-resource-requests-and-limits-in-kubernetes/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>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>The Ultimate Debugging Hack for Developers</title><link>https://www.kenmuse.com/blog/the-ultimate-debugging-hack-for-developers/</link><pubDate>Fri, 12 Jul 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">the-ultimate-debugging-hack-for-developers</guid><category>DevOps</category><category>Programming</category><description>Developers usually want to be able to directly connect to a system and start their debugger. What if there's a better way to get the information you need?</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/the-ultimate-debugging-hack-for-developers/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>GitHub Actions and Monitoring</title><link>https://www.kenmuse.com/blog/github-actions-and-monitoring/</link><pubDate>Fri, 23 Feb 2024 00:00:00 -0500</pubDate><guid isPermaLink="false">github-actions-and-monitoring</guid><category>DevOps</category><description>&lt;p&gt;Whether you&amp;rsquo;re developing drivers, building appliances, or testing system deployments, you need to test your code. For many, this means installing GitHub Actions Runners (or other agents) on the system under test. But is this really the best way to test your code?&lt;/p&gt;
&lt;p&gt;For many teams, this doesn&amp;rsquo;t seem to create any direct issues. By monitoring the system as they deploy, they can directly assess whether the deployment is working correctly. This approach has several significant drawbacks. If you&amp;rsquo;re testing system drivers (or low-level components), the first issue is obvious: system failures will kill the current agent and the pipeline process. When the system restarts or crashes, the runner or agent is also killed. Because the system is no longer accessible, teams look for ways to reconnect to the environment to query the root cause. The common work around is to treat those as &amp;ldquo;failures&amp;rdquo; and then try to assess what happened manually. When manual processes are required, we lose efficiency. We need to be able to assess the outcome and report it as easily as possible in order to enable the problem to be remediated.&lt;/p&gt;</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/github-actions-and-monitoring/images/banner.jpg"/></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>Dynamic Build Matrices in GitHub Actions</title><link>https://www.kenmuse.com/blog/dynamic-build-matrices-in-github-actions/</link><pubDate>Thu, 04 May 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">dynamic-build-matrices-in-github-actions</guid><category>DevOps</category><description>GitHub Actions allows you to create matrix builds to execute steps multiple times with different parameters. Learn how to define them programmatically!</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/dynamic-build-matrices-in-github-actions/images/banner.png"/></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>Preventing GitHub Actions Injection Attacks</title><link>https://www.kenmuse.com/blog/github-actions-injection/</link><pubDate>Fri, 07 Apr 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">github-actions-injection</guid><category>DevOps</category><category>Security</category><description>Everything coded can be exploited, including GitHub Actions. The powerful expressions syntax can also break your systems. Learn better ways to handle them.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/github-actions-injection/images/banner.png"/></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>Coloring Consoles in ANSI</title><link>https://www.kenmuse.com/blog/coloring-in-ansi/</link><pubDate>Wed, 13 Jul 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">coloring-in-ansi</guid><category>Programming</category><description>Explore how to use ANSI escape sequences to force PowerShell (and other tools) to colorize console outputs.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/coloring-in-ansi/images/banner.png"/></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>Using Development Containers</title><link>https://www.kenmuse.com/blog/using-development-containers/</link><pubDate>Tue, 19 Oct 2021 00:00:00 -0400</pubDate><guid isPermaLink="false">using-development-containers</guid><category>Containers</category><category>DevOps</category><description>Learn how to implement development environments using infrastructure-as-code with Dev Containers, Codespaces, and Gitpod!</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/using-development-containers/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>