Ken Muse
Migrating Submodules That Use Large File Storage (LFS)
Submodules can require some additional considerations during a migration. If the submodule repositories have large files that need to be migrated to LFS, the change to the commit IDs can break the submodules. This post explains why the problem happens, how to avoid issues during migration, and how to fix problems when they happen.

Read this article

What Is a GitHub Tool (And Why to Use Them)
Need to ensure that you’re using the right version of a CLI tool in your GitHub Actions? Want to be more resilient to change? GitHub Tools are the answer.

Read this article

Defining The Process for Securing Your Supply Chain
A company’s software and development practices are only as secure as their supply chain. This post will explore how to define a process for properly reviewing the supply chain using a GitHub Action as an example.

Read this article

How to Handle Step and Job Errors in GitHub Actions

How to Handle Step and Job Errors in GitHub Actions

In most cases, we write a CI/CD workflow where all of the steps succeed. If a step fails, the job and workflow fails. But what do we do when we need the workflow to handle a failing step or job?

Read this article

Using Dynamic Environment Variables With GitHub
Every wanted to dynamically set (or unset) environment variables in your GitHub Actions? Needing more control over the configuration of your steps? Wanting to configure everything using logic written in the language of your choice rather than just relying on GitHub’s expression syntax? This post will show you how to use a powerful technique to take your workflows to the next level.

Read this article

Implementing Processes for GHAS using GitHub Probot
GitHub Advanced Security (GHAS) helps teams to shift left and secure their development practices. But what do you do when its process its processes and practices doesn’t quite fit your team’s approach? In this post, we’ll look at how to use GitHub Probot to implement your own process in a GitHub-native way.

Read this article

Planning Kubernetes Cloud Deployments
Last week we built an understanding of how Kubernetes reserves resources on a node. This week we’ll look at how cloud providers configure the resource reservations for their Kubernetes offerings.

Read this article

Understanding Kubernetes Resource Consumption
Surprised that you can’t fit as many pods on a node as you thought? Wondering why a node with 32 GiB of memory can’t hold four 8 GiB pods? It turns out that there’s a lot more to the story of how Kubernetes allocates resources. In this post, you’ll learn how resources are allocated and how to use that to plan your cluster.

Read this article

The Ultimate Debugging Hack for Developers
Developers usually want to be able to directly connect to a system, start the debugger, and step their way through the code. Being able to log into a machine and debug is the way most of us learn to troubleshoot and fix issues. But what if you can’t do that? And what if I told you there’s a better way to debug?

Read this article

Scaling ARC on a Schedule
In the past, ARC has a feature that enabled it to change the minimum number of runners based on a schedule: ScheduledOverrides. When ARC was modernized, this feature was not included in the new version. This isn’t an oversight. Instead, it’s a recognition that Kubernetes has a built-in feature that can handle this task: CronJob. Learn how to use the CronJob resources to change the settings for ARC scale sets on a schedule.

Read this article