<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://josh-ops.com/</id><title>josh-ops</title><subtitle>Blogging about Azure DevOps and GitHub practices, tips, and my continuous improvement DevOps journey.</subtitle> <updated>2026-04-17T14:32:54-05:00</updated> <author> <name>Josh Johanning</name> <uri>https://josh-ops.com/</uri> </author><link rel="self" type="application/atom+xml" href="https://josh-ops.com/feed.xml"/><link rel="alternate" type="text/html" hreflang="en" href="https://josh-ops.com/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 Josh Johanning </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>Enforcing Immutable Actions with Required Workflows</title><link href="https://josh-ops.com/posts/enforcing-immutable-actions-required-workflows/" rel="alternate" type="text/html" title="Enforcing Immutable Actions with Required Workflows" /><published>2026-04-03T20:00:00-05:00</published> <updated>2026-04-03T20:00:00-05:00</updated> <id>https://josh-ops.com/posts/enforcing-immutable-actions-required-workflows/</id> <content type="text/html" src="https://josh-ops.com/posts/enforcing-immutable-actions-required-workflows/" /> <author> <name>Josh Johanning</name> </author> <category term="GitHub" /> <category term="Actions" /> <summary>Using a required workflow to enforce that all GitHub Actions in your pull requests reference immutable releases, adding a supply chain security gate at the organization or enterprise level</summary> </entry> <entry><title>How I Maintain My Open Source GitHub Actions</title><link href="https://josh-ops.com/posts/maintaining-oss-github-actions/" rel="alternate" type="text/html" title="How I Maintain My Open Source GitHub Actions" /><published>2026-03-24T22:00:00-05:00</published> <updated>2026-03-30T16:30:36-05:00</updated> <id>https://josh-ops.com/posts/maintaining-oss-github-actions/</id> <content type="text/html" src="https://josh-ops.com/posts/maintaining-oss-github-actions/" /> <author> <name>Josh Johanning</name> </author> <category term="GitHub" /> <category term="Actions" /> <summary>A walkthrough of the tools, workflows, and practices I use to maintain a growing collection of open source JavaScript GitHub Actions</summary> </entry> <entry><title>GitHub Actions OIDC: Using Repository Custom Properties for Attribute-Based Access Control</title><link href="https://josh-ops.com/posts/github-actions-oidc-custom-properties/" rel="alternate" type="text/html" title="GitHub Actions OIDC: Using Repository Custom Properties for Attribute-Based Access Control" /><published>2026-03-19T20:00:00-05:00</published> <updated>2026-03-19T20:00:00-05:00</updated> <id>https://josh-ops.com/posts/github-actions-oidc-custom-properties/</id> <content type="text/html" src="https://josh-ops.com/posts/github-actions-oidc-custom-properties/" /> <author> <name>Josh Johanning</name> </author> <category term="GitHub" /> <category term="Actions" /> <summary>How to include repository custom properties in GitHub Actions OIDC tokens to enable attribute-based access control to cloud environments</summary> </entry> <entry><title>Azure Federated Credentials: Using Claims Matching Expressions with GitHub Actions OIDC</title><link href="https://josh-ops.com/posts/azure-federated-credential-claims-matching-expressions/" rel="alternate" type="text/html" title="Azure Federated Credentials: Using Claims Matching Expressions with GitHub Actions OIDC" /><published>2026-03-19T20:00:00-05:00</published> <updated>2026-03-19T20:00:00-05:00</updated> <id>https://josh-ops.com/posts/azure-federated-credential-claims-matching-expressions/</id> <content type="text/html" src="https://josh-ops.com/posts/azure-federated-credential-claims-matching-expressions/" /> <author> <name>Josh Johanning</name> </author> <category term="GitHub" /> <category term="Actions" /> <summary>Using the new claims matching expression feature in Azure federated credentials to use wildcards with GitHub Actions OIDC subject claims</summary> </entry> <entry><title>Syncing GitHub Repositories Between Environments in Bulk</title><link href="https://josh-ops.com/posts/bulk-github-repo-sync-action/" rel="alternate" type="text/html" title="Syncing GitHub Repositories Between Environments in Bulk" /><published>2026-03-04T16:00:00-06:00</published> <updated>2026-03-04T16:00:00-06:00</updated> <id>https://josh-ops.com/posts/bulk-github-repo-sync-action/</id> <content type="text/html" src="https://josh-ops.com/posts/bulk-github-repo-sync-action/" /> <author> <name>Josh Johanning</name> </author> <category term="GitHub" /> <category term="Migrations" /> <summary>A GitHub Action to mirror clone repositories between GitHub environments (GitHub.com, EMU, and GitHub Enterprise Server) with support for visibility control, Actions disabling, and archiving</summary> </entry> </feed>
