<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>CI/CD on Chris Reddington</title><link>https://chrisreddington.com/tags/ci/cd/</link><description>Recent content in CI/CD on Chris Reddington</description><generator>Hugo</generator><language>en-gb</language><lastBuildDate>Thu, 04 Dec 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://chrisreddington.com/tags/ci/cd/index.xml" rel="self" type="application/rss+xml"/><item><title>Rubber Duck Thursdays - Let's build with custom agents (again!)</title><link>https://chrisreddington.com/video/2025-12-04-rubber-duck-thursdays/</link><pubDate>Thu, 04 Dec 2025 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/2025-12-04-rubber-duck-thursdays/</guid><description>&lt;p&gt;Chris continues building custom agents for the SDLC, exploring the awesome-copilot repository for inspiration and live-building a GitHub Actions workflow agent with plan mode.&lt;/p&gt;
&lt;h2 id="topics-covered"&gt;Topics Covered&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub Changelog Roundup&lt;/strong&gt; — Blocking repo admins from installing GitHub Apps now GA, Copilot Spaces with public spaces and code view support, secret scanning updates for November 2025, GitHub Enterprise Server 3.19 RC, assigning issues to Copilot via GraphQL and REST APIs, and Claude Opus 4.5 availability across more IDEs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent Inspiration from awesome-copilot&lt;/strong&gt; — Reviewing partner-built agents and the awesome-copilot repository for ideas including test writers, security reviewers, tech debt analyzers, documentation generators, PR review assistants, and onboarding guides.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent Consolidation&lt;/strong&gt; — Discussing whether to keep agents separate or consolidate them based on shared tool access, output formats, and domain overlap.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Building a GitHub Actions Agent&lt;/strong&gt; — Using plan mode to design a custom agent for authoring and updating GitHub Actions workflows, including monorepo build order awareness and minimal permissions guidance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub Actions Instructions File&lt;/strong&gt; — Creating a companion instructions file with repository-specific CI/CD conventions, build order, environment variables, and recommended practices for workflow definitions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plan Mode Workflow&lt;/strong&gt; — Demonstrating the iterative plan-then-implement workflow where Copilot asks clarifying questions before generating code, and switching between plan and agent modes.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Rubber Duck Thursdays - Let's keep building!</title><link>https://chrisreddington.com/video/2025-08-28-rubber-duck-thursdays/</link><pubDate>Thu, 28 Aug 2025 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/2025-08-28-rubber-duck-thursdays/</guid><description>&lt;p&gt;Join us for Rubber Duck Thursdays! A lighthearted and informal stream where we live code on some projects.&lt;/p&gt;
&lt;p&gt;In this stream, we recap the turn-based game MCP server and demo the elicitation feature for gathering user preferences, then shift gears into a deep dive on GitHub Actions. Starting from an empty repository, we build workflows from scratch — covering YAML structure, event triggers (issues, issue_comment, push, pull_request, workflow_dispatch), jobs running in parallel, job dependencies using the &lt;code&gt;needs&lt;/code&gt; property, conditional steps with &lt;code&gt;if&lt;/code&gt;, and matrix strategies for cross-platform builds across multiple OS and Node.js versions.&lt;/p&gt;</description></item><item><title>Assign issues to GitHub Copilot from the GitHub mobile app</title><link>https://chrisreddington.com/video/2025-05-27-copilot-coding-agent-mobile/</link><pubDate>Tue, 27 May 2025 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/2025-05-27-copilot-coding-agent-mobile/</guid><description>&lt;p&gt;The GitHub Copilot coding agent isn&amp;rsquo;t just a desktop experience—you can assign issues and track Copilot&amp;rsquo;s progress directly from the GitHub Mobile app or a mobile browser, making it useful during a commute or whenever you&amp;rsquo;re away from your laptop.&lt;/p&gt;
&lt;p&gt;The video demonstrates the following mobile-first workflow using the &amp;lsquo;Copilot Airways&amp;rsquo; demo repository:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Navigating the &lt;strong&gt;issues backlog&lt;/strong&gt; and assigning a GitHub Pages deployment task to Copilot directly from the &lt;strong&gt;GitHub Mobile app&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Copilot acknowledging the assignment with the 👀 emoji reaction and immediately creating a pull request&lt;/li&gt;
&lt;li&gt;Switching to &lt;strong&gt;github.com in a mobile browser&lt;/strong&gt; to open the pull request and tap &amp;lsquo;View session&amp;rsquo;&lt;/li&gt;
&lt;li&gt;Reviewing how Copilot explored existing CI workflow files, formed a plan, updated configuration files, and modified the existing workflow to add the GitHub Pages deployment step&lt;/li&gt;
&lt;li&gt;Copilot running &lt;strong&gt;linters, builds, and tests&lt;/strong&gt; as quality checks during the agentic loop to ensure the CI pipeline remains healthy&lt;/li&gt;
&lt;li&gt;Using the &lt;strong&gt;&amp;lsquo;Approve and Run&amp;rsquo;&lt;/strong&gt; button on mobile to authorize GitHub Actions execution against the AI-generated changes&lt;/li&gt;
&lt;li&gt;Marking the pull request as ready for review and merging once checks pass—all without touching a laptop&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>The GitHub Copilot coding agent *NEW*</title><link>https://chrisreddington.com/video/2025-05-19-coding-agent-overview/</link><pubDate>Mon, 19 May 2025 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/2025-05-19-coding-agent-overview/</guid><description>&lt;p&gt;GitHub Copilot coding agent lets you assign GitHub Issues to Copilot, which works asynchronously in the background while you continue with other tasks. This overview video uses the &amp;lsquo;Copilot Airways&amp;rsquo; flight booking app to demonstrate the full workflow from issue assignment to merged pull request.&lt;/p&gt;
&lt;p&gt;The video covers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Assigning a GitHub Issue (adding form input validation) to Copilot with a single click&lt;/li&gt;
&lt;li&gt;How Copilot acknowledges the assignment, creates a pull request, and keeps the PR description updated as it progresses&lt;/li&gt;
&lt;li&gt;Viewing the Copilot session to understand how it explored the repository, formed a plan, and created a new GitHub Actions workflow file&lt;/li&gt;
&lt;li&gt;How Copilot runs tools such as linters, builds, and tests to self-verify code quality during the agentic loop&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;&amp;lsquo;Approve and Run&amp;rsquo; safety gate&lt;/strong&gt;, which requires explicit human approval before any GitHub Actions workflow executes against AI-generated code&lt;/li&gt;
&lt;li&gt;Adding review comments to the PR (requesting a CI workflow) and watching Copilot acknowledge and act on the feedback&lt;/li&gt;
&lt;li&gt;The final result: a form updated with real-time validation and an improved user experience, ready to merge&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Rubber Duck Thursdays - Lizard, Spock</title><link>https://chrisreddington.com/video/2025-02-27-rubber-duck-thursdays/</link><pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/2025-02-27-rubber-duck-thursdays/</guid><description>&lt;p&gt;In this episode, the team extends the Rock Paper Scissors game to include Lizard and Spock using GitHub Copilot Vision — feeding an image of the game&amp;rsquo;s relationship diagram directly into Copilot, which interprets it and generates the extended game logic without explicitly naming the game. The stream also adds a hidden flag for the extended mode, demonstrating prompt engineering with Copilot&amp;rsquo;s multimodal capabilities.&lt;/p&gt;
&lt;p&gt;The GitHub changelog review covers Copilot autofix expansion for CodeQL alerts, Claude 3.7 Sonnet availability in Copilot, Docker Compose support in Dependabot, Copilot code review in public preview, and Copilot in Windows Terminal Canary. The latter portion demonstrates Dependabot version updates configured for Go modules and GitHub Actions ecosystems, with a live review of a dependency update pull request. A GitHub Codespaces session is used to verify the gh-skyline CLI extension still works after a dependency bump, and repository settings for auto-deleting branches and auto-merging pull requests are configured.&lt;/p&gt;</description></item><item><title>Rubber Duck Thursdays - Rock, Paper, Scissors</title><link>https://chrisreddington.com/video/2025-02-20-rubber-duck-thursdays/</link><pubDate>Thu, 20 Feb 2025 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/2025-02-20-rubber-duck-thursdays/</guid><description>&lt;p&gt;In this episode, I add a Rock Paper Scissors game to the gh-game GitHub CLI extension. The stream begins with a comprehensive GitHub changelog review covering the new GPT-4o Copilot code completion model, Copilot availability in Eclipse and Xcode, repository ruleset enhancements, secret scanning improvements, Copilot Workspace updates, and GitHub Issues and Projects feature updates.&lt;/p&gt;
&lt;p&gt;The coding session uses GitHub Copilot Agent Mode to build the Rock Paper Scissors game in Go, taking advantage of Next Edit Suggestions and the new GPT-4o code completion model. A significant portion of the stream focuses on improving test coverage using Copilot&amp;rsquo;s inline chat in the terminal, progressing from 42.6% to 100% statement coverage by generating targeted test cases for uncovered functions. The episode also covers merging the Tic Tac Toe pull request from the previous week and shipping a new release of the CLI extension.&lt;/p&gt;</description></item><item><title>Rubber Duck Thursdays - Tic, Tac, Toe</title><link>https://chrisreddington.com/video/2025-02-13-rubber-duck-thursdays/</link><pubDate>Thu, 13 Feb 2025 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/2025-02-13-rubber-duck-thursdays/</guid><description>&lt;p&gt;In this episode, the team continues building the gh-game GitHub CLI extension by adding a Tic Tac Toe game written in Go. The stream kicks off with a demo of GitHub Spark, a GitHub Next experiment for creating micro apps from natural language prompts, followed by a walkthrough of the latest GitHub changelog updates including Gemini 2.0 Flash availability, Copilot Vision, and Agent Mode in VS Code Insiders.&lt;/p&gt;
&lt;p&gt;The main coding session uses GitHub Copilot Agent Mode, Copilot Chat, and Copilot Edits to scaffold and iterate on the Tic Tac Toe implementation. Along the way, CodeQL code scanning is enabled on the repository, catching issues with missing workflow permissions and unpinned GitHub Actions versions. The episode also covers the CI/CD pipeline setup with build and test steps in GitHub Actions, and improving code readability through Copilot-assisted refactoring.&lt;/p&gt;</description></item><item><title>Rubber Duck Thursdays - Actions, Codespaces and Coin Toss</title><link>https://chrisreddington.com/video/2025-02-06-rubber-duck-thursdays/</link><pubDate>Thu, 06 Feb 2025 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/2025-02-06-rubber-duck-thursdays/</guid><description>&lt;p&gt;Continuing the gh-game CLI extension project, this episode covers setting up a complete development workflow. Chris creates a GitHub Codespace with a dev container configuration, installs Go and the GitHub CLI as features, and demonstrates how Codespaces provide a consistent environment for contributors.&lt;/p&gt;
&lt;p&gt;The stream then covers creating a CI workflow using GitHub Actions with build and test steps, followed by writing Go tests for the coin toss game. A key segment focuses on refactoring the coin toss input from manual text entry to interactive selection menus using the &lt;code&gt;go-gh&lt;/code&gt; prompter package, demonstrating how context and accurate prompting is essential when working with GitHub Copilot. Chris uses multiple Copilot models including Gemini 2.0 Flash and O3 Mini throughout the session.&lt;/p&gt;</description></item><item><title>Rubber Duck Thursdays - Creating gh-game CLI extension</title><link>https://chrisreddington.com/video/2025-01-30-rubber-duck-thursdays/</link><pubDate>Thu, 30 Jan 2025 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/2025-01-30-rubber-duck-thursdays/</guid><description>&lt;p&gt;This episode dives into GitHub Actions, starting with a walkthrough of the build, linter, and release workflows configured for the GitHub Skyline CLI extension. Chris explains workflow triggers, permissions, and demonstrates cutting a live release using semantic versioning and the &lt;code&gt;cli/gh-extension-precompile&lt;/code&gt; action to generate cross-platform binaries.&lt;/p&gt;
&lt;p&gt;The second half focuses on creating a brand new GitHub CLI extension from scratch. Using &lt;code&gt;gh extension create&lt;/code&gt;, Chris bootstraps the gh-game project and builds a coin toss game in Go with the Cobra package. GitHub Copilot assists with scaffolding the command structure, applying code changes, and generating commit messages. The stream also covers publishing the repository using &lt;code&gt;gh repo create&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Govern your repositories with push rulesets</title><link>https://chrisreddington.com/video/2024-12-14-push-rulesets/</link><pubDate>Sat, 14 Dec 2024 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/2024-12-14-push-rulesets/</guid><description>&lt;p&gt;This is a demo video showcasing repository push rulesets. The video covers the following specific topics:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use cases for push rulesets: protecting sensitive files like GitHub Actions workflow YAML files, and enforcing code hygiene by blocking large or unwanted file types&lt;/li&gt;
&lt;li&gt;Configuring push rules based on file path patterns, file extensions, and file sizes&lt;/li&gt;
&lt;li&gt;How a blocked push appears to the developer (clear rejection message in the terminal)&lt;/li&gt;
&lt;li&gt;Adding bypass rules to allow specific individuals or roles to override the rule when authorised&lt;/li&gt;
&lt;li&gt;Viewing the push insights dashboard to audit blocked push attempts and any bypass activity&lt;/li&gt;
&lt;li&gt;Scope of push rulesets: rules apply to the entire fork network of a repository, protecting all entry points&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>ClickOps over GitOps</title><link>https://chrisreddington.com/video/clickops-over-gitops/</link><pubDate>Thu, 27 Oct 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/clickops-over-gitops/</guid><description>&lt;p&gt;The gap between raw Kubernetes and a developer-friendly PaaS is where the most interesting tooling is being built today. GitOps gives teams a declarative, version-controlled way to manage their clusters — but the infrastructure expertise required can be a steep barrier. ClickOps offers a different angle: let developers click a dashboard, and let the platform handle the YAML.&lt;/p&gt;
&lt;p&gt;In this episode, Chris is joined by Laszlo Folgas, founder of Gimlet.io, to explore how you can combine the accessibility of a UI with the reliability of a GitOps-driven workflow.&lt;/p&gt;</description></item><item><title>Policy as [versioned] code - you're doing it wrong</title><link>https://chrisreddington.com/video/policy-as-versioned-code/</link><pubDate>Thu, 15 Sep 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/policy-as-versioned-code/</guid><description>&lt;p&gt;Chris Nesbitt-Smith presents the case for treating governance policy the same way we treat source code — versioned, iterable, peer-reviewed, and continuously improved. Drawing on his experience advocating modern engineering practices within UK government, Chris explains why policies fail and what it takes to make them work.&lt;/p&gt;
&lt;h2 id="key-topics-covered"&gt;Key Topics Covered&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Why policies fail&lt;/strong&gt;: Policies are usually written once, emotionally, as a reaction to a specific incident. They quickly become outdated, overcomplicated, and disconnected from real risk — leading developers to work around them rather than with them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The lift pitch&lt;/strong&gt;: Using a story of a CIO, Product Manager, developer, and cleaner sharing a lift, Chris illustrates the different stakeholder perspectives on policy — risk ownership, delivery velocity, and day-to-day practicality — and how good policy serves all of them simultaneously.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Policy as code&lt;/strong&gt;: Storing policy in version control (Git/GitHub), enforcing it through automated CI/CD pipelines, and treating compliance as a test suite lets teams iterate on policy as fast as the threat landscape changes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes admission control&lt;/strong&gt;: The specific technical context — using Kubernetes policy engines (such as OPA/Gatekeeper or Kyverno) to enforce rules at deployment time, giving developers fast and understandable feedback in their existing workflow.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Iterative, not waterfall&lt;/strong&gt;: Attempting to write perfect policy upfront causes the same failures as waterfall software delivery. Small, incremental improvements with clear rationale are more effective and more trusted by the teams subject to them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Culture over tooling&lt;/strong&gt;: Tooling is the easy part. The real challenge is helping people understand &lt;em&gt;why&lt;/em&gt; a policy exists. When developers understand the consequence, they follow the spirit of the policy — not just its letter.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From this talk you&amp;rsquo;ll learn how to use a software development pattern and product ways of thinking towards how your organization can manage policy; achieve continual updates to policy allowing the risk mitigations to move as fast as the risk does, not get in the way and be easy to measure compliance.&lt;/p&gt;</description></item><item><title>ToolUp Day #10</title><link>https://chrisreddington.com/video/toolup-tuesday-10/</link><pubDate>Tue, 26 Jul 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/toolup-tuesday-10/</guid><description>&lt;p&gt;In this episode, Chris and Matt implement federated identity credentials (OIDC) to enable passwordless authentication from GitHub Actions to Azure — eliminating the need for stored secrets. They configure the two-way trust between an Azure App Registration and GitHub, set up OIDC token permissions in their workflow, and successfully deploy Bicep infrastructure as code through their CI/CD pipeline. The pair also plan the transition from deploying infrastructure manually to a fully automated pipeline. The episode ends with a discussion about rebranding the series from &amp;ldquo;ToolUp Tuesday&amp;rdquo; to accommodate flexible scheduling.&lt;/p&gt;</description></item><item><title>ToolUp Tuesday - #7</title><link>https://chrisreddington.com/video/toolup-tuesday-7/</link><pubDate>Tue, 17 May 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/toolup-tuesday-7/</guid><description>&lt;p&gt;In this episode of ToolUp Tuesday, Chris and Matt take their Go-based microservices and package them as Docker container images for the first time. They walk through creating Dockerfiles, setting up GitHub Actions workflows to build and push images, and publishing to GitHub Packages container registry using the built-in GITHUB_TOKEN for authentication. Along the way they discuss container fundamentals — the difference between images and containers, why containers solve the &amp;ldquo;works on my machine&amp;rdquo; problem, and how to use environment variables in workflows for clean, maintainable CI/CD pipelines. The episode also covers managing container image versions and permissions within a GitHub organization.&lt;/p&gt;</description></item><item><title>Using GitHub Actions to summarise your Go tests</title><link>https://chrisreddington.com/blog/githubactions-testsummary-go/</link><pubDate>Mon, 16 May 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/githubactions-testsummary-go/</guid><description>&lt;p&gt;GitHub recently posted about a new GitHub Action that can be used to summarise your test results. The action is called &lt;code&gt;test-summary/action&lt;/code&gt;, available at &lt;a href="https://github.com/test-summary/action"&gt;github.com/test-summary/action&lt;/a&gt;. There are several examples on how to use the action at &lt;a href="https://github.com/test-summary/examples"&gt;github.com/test-summary/examples&lt;/a&gt;. However, there were no examples on how to use this with Go. I &lt;a href="https://github.com/test-summary/examples/pull/1"&gt;contributed a pull request&lt;/a&gt; which showed how to achieve this. In this post, I will show how to use the action with Go.&lt;/p&gt;</description></item><item><title>ToolUp Tuesday #2</title><link>https://chrisreddington.com/video/toolup-tuesday-2/</link><pubDate>Tue, 22 Feb 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/toolup-tuesday-2/</guid><description>&lt;p&gt;Chris and Matt move from planning to coding, creating the Player State API as a .NET Web API project. They define data models representing player state for the SpaceBar management sim, debating how deep and detailed the models should go. The episode covers practical .NET development decisions, including the trade-offs between minimal API patterns and traditional controller-based approaches, with a preference for controllers for better logical grouping.&lt;/p&gt;
&lt;p&gt;The pair also set up their first GitHub Actions CI workflow, walking through YAML syntax for building the .NET project on push to main. They troubleshoot the workflow live — discovering they forgot the checkout step — and iterate until the build succeeds. GitHub Copilot makes a brief appearance as a code suggestion tool during API scaffolding.&lt;/p&gt;</description></item><item><title>Feature Flags - The Art of the IF and Deployment</title><link>https://chrisreddington.com/video/feature-flags-art-of-if-and-deployment/</link><pubDate>Thu, 17 Feb 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/feature-flags-art-of-if-and-deployment/</guid><description>&lt;p&gt;Feature flags (also called feature toggles) are one of the most powerful — and most misunderstood — practices in modern software delivery. This session explores them from first principles through to production implementation.&lt;/p&gt;
&lt;h2 id="what-are-feature-flags"&gt;What are feature flags?&lt;/h2&gt;
&lt;p&gt;A mechanism to decouple &lt;em&gt;deployment&lt;/em&gt; (pushing code to production) from &lt;em&gt;release&lt;/em&gt; (enabling that code for users). Once separated, teams can deploy continuously, roll out incrementally, experiment in production, and roll back instantly — without touching infrastructure.&lt;/p&gt;</description></item><item><title>Using Azure DevOps and Azure Virtual Machine Scale Set Agents to deploy your private workloads</title><link>https://chrisreddington.com/blog/azuredevops-selfhosted-agents-on-azure/</link><pubDate>Fri, 08 Oct 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/azuredevops-selfhosted-agents-on-azure/</guid><description>&lt;p&gt;A little while ago, I wrote a blog post on &lt;a href="https://chrisreddington.com/blog/github-selfhosted-runner-on-azure"&gt;Using the GitHub self-hosted runner and Azure Virtual Machines to login with a System Assigned Managed Identity&lt;/a&gt;, which seems to get a good amount of views week on week. Reflecting on some questions that have popped up this week (and regularly received over my time in the DevOps space), I thought that it makes sense to write a post on how to use Azure DevOps self-hosted agents to deploy to private resources. So, that&amp;rsquo;s what we&amp;rsquo;ll be covering in this post!&lt;/p&gt;</description></item><item><title>Tales from the Real World - Shift Left your Performance Tests</title><link>https://chrisreddington.com/video/shift-left-performance-tests/</link><pubDate>Fri, 01 Oct 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/shift-left-performance-tests/</guid><description>&lt;p&gt;Performance testing has traditionally been a late-stage activity — run against a near-production environment, by a dedicated team, after the code is already fully integrated. The problem is that by the time a performance issue surfaces at that stage, fixing it requires environment time-sharing, promotional deployments, and coordination across multiple teams. The cost compounds quickly.&lt;/p&gt;
&lt;p&gt;In this episode, Chris is joined by HariKrishnan, Cloud Transformation Consultant, who has spent years guiding teams through cloud migrations and modernisation — and noticed that performance testing practices have barely evolved even as everything else moved forward. Hari walks through a practical framework for shifting bulk performance issue detection left, onto developer machines and CI pipelines, using lightweight containerised load-testing tools like Gatling and Docker.&lt;/p&gt;</description></item><item><title>DevOps Trends</title><link>https://chrisreddington.com/video/devops-trends/</link><pubDate>Fri, 24 Sep 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/devops-trends/</guid><description>&lt;p&gt;Ten years is a long time in technology. What started as a cultural movement to break down the wall between development and operations has evolved into a sprawling ecosystem of practices, tools, and philosophies. Daniela Fontani — CTO and early open source contributor since 2006 — explores the key trends defining modern DevOps and how to keep up without chasing every new buzzword.&lt;/p&gt;
&lt;h2 id="the-devops-chasm--still-unsolved"&gt;The Dev/Ops Chasm — Still Unsolved&lt;/h2&gt;
&lt;p&gt;Even with a decade of investment, many organisations still struggle with siloed teams and disconnected toolchains. The tooling problem is relatively straightforward — write a tool that integrates across layers. But the cultural and organisational shifts required are significantly harder and remain the primary blocker for most enterprises.&lt;/p&gt;</description></item><item><title>Tales from the Real World on DevOps</title><link>https://chrisreddington.com/video/devops-tales-from-the-real-world/</link><pubDate>Fri, 17 Sep 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/devops-tales-from-the-real-world/</guid><description>&lt;p&gt;In this episode Chris is joined by &lt;a href="https://thomasthornton.cloud"&gt;Thomas Thornton&lt;/a&gt;, a DevOps specialist at Kainos in Belfast, for a grounded, real-world discussion on what DevOps actually looks like at scale.&lt;/p&gt;
&lt;h2 id="whats-covered"&gt;What&amp;rsquo;s covered&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DevOps as culture&lt;/strong&gt; — why DevOps is far more than a buzzword, and how to bring stakeholders beyond dev and ops into the conversation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Version control fundamentals&lt;/strong&gt; — why getting Git right is the prerequisite to everything else in a CI/CD workflow&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Branching strategies&lt;/strong&gt; — trunk-based development vs. feature branches, managing environment drift, and when fewer branches is better&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CI/CD pipeline design&lt;/strong&gt; — starting simple, avoiding over-engineering, and incrementally adding checks and quality gates&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Infrastructure as Code&lt;/strong&gt; — using Terraform modules vs. copy-paste resources, and the long-term payoff of DRY pipelines&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes and GitOps&lt;/strong&gt; — how pull-based GitOps (e.g. Flux/ArgoCD) enables scalable, consistent deployments across 120+ applications and multiple clusters&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Practical advice for all levels&lt;/strong&gt; — tips for those just starting out, those mid-journey, and those looking to take a mature DevOps practice further&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thomas brings examples from a real environment spanning 83 Azure subscriptions, making this one of the most grounded DevOps conversations on the channel.&lt;/p&gt;</description></item><item><title>Find vulns in your code before they find you</title><link>https://chrisreddington.com/video/find-vulns-in-your-code/</link><pubDate>Wed, 18 Aug 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/find-vulns-in-your-code/</guid><description>&lt;p&gt;Security vulnerabilities don&amp;rsquo;t wait for you to find them — and as developers we are often unknowingly introducing them through the open source packages we depend on. In this episode, Chris is joined by DeveloperSteve Coochin, Developer Advocate at Snyk, to explore the real-world scale of the problem and what developers can do about it without slowing down.&lt;/p&gt;
&lt;p&gt;Steve shares findings from his research into vulnerabilities in the PHP ecosystem — some of the results are genuinely surprising — and explains the core challenge: developers are not introducing vulnerabilities maliciously or carelessly, they are simply unaware of what is hiding inside their transitive dependencies. The solution is not to stop using open source (that ship has sailed), but to automate detection and remediation as close to the developer as possible.&lt;/p&gt;</description></item><item><title>Cloud Drops - What is Continuous Integration (CI)?</title><link>https://chrisreddington.com/video/cloud-drops-what-is-continuous-integration/</link><pubDate>Tue, 20 Jul 2021 00:01:00 +0000</pubDate><guid>https://chrisreddington.com/video/cloud-drops-what-is-continuous-integration/</guid><description>&lt;p&gt;Modern software teams use version control branches so engineers can develop independently without blocking each other. Continuous Integration formalises the step of merging those branches back into the main codebase by requiring every change to pass an automated build and test suite before it can be accepted. Tools like GitHub Actions and Azure Pipelines automate compilation, unit tests, integration tests, and other quality checks triggered on every pull request, providing rapid feedback — if a build breaks or tests fail, the engineer knows immediately rather than discovering hard-to-trace bugs later in production.&lt;/p&gt;</description></item><item><title>41 - DevOps on Azure</title><link>https://chrisreddington.com/video/devops-on-azure/</link><pubDate>Fri, 02 Jul 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/devops-on-azure/</guid><description>&lt;p&gt;In this episode, Chris is joined by Mert Yeter — software architect, Azure MVP, and Traefik Ambassador — for a live-demo-driven tour of the key DevOps building blocks on Azure.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Key topics covered:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Azure DevOps Starter&lt;/strong&gt;: Spinning up a complete CI/CD pipeline for a containerized .NET application in minutes — including a Git repository, build pipeline, release pipeline, and Azure Container Registry — without writing YAML from scratch&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure Container Registry (ACR)&lt;/strong&gt;: Storing and managing container images within the Azure ecosystem&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure Container Instances (ACI) and Azure Kubernetes Service (AKS)&lt;/strong&gt;: Deploying containers at different scales, from quick single-container workloads to fully orchestrated production clusters&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traefik&lt;/strong&gt;: A cloud-native reverse proxy and load balancer that integrates natively with Kubernetes, featuring dynamic service discovery, pluggable middleware, and a built-in dashboard for monitoring cluster ingresses and service health&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traefik Pilot and Traefik Mesh&lt;/strong&gt;: An introduction to the broader Traefik ecosystem, including service mesh capabilities and the difference from sidecar-based approaches&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mert also highlights the value of the open-source community around projects like Traefik and encourages viewers to explore contributing via GitHub. If you want to see how quickly you can go from zero to a production-ready containerized deployment pipeline on Azure, this session is a great starting point.&lt;/p&gt;</description></item><item><title>Discussing the Cloud with Chris GitHub Actions Usage</title><link>https://chrisreddington.com/video/discussing-cloud-with-chris-github-action-usage/</link><pubDate>Mon, 07 Jun 2021 20:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/discussing-cloud-with-chris-github-action-usage/</guid><description>&lt;p&gt;Chris is joined by Karl Cooke (IrishTechie) for a live deep-dive into the GitHub Actions workflows powering CloudWithChris.com. They explore why GitHub was chosen over Azure DevOps, walk through a real-world CI/CD pipeline for a Hugo static site deployed to Azure Blob Storage with CDN purging, and examine how to manage secrets and approvals using GitHub Environments. The session also covers linting Markdown with GitHub Super Linter, early thinking on Playwright-based UI tests, the security considerations around third-party actions from the marketplace, and building a custom .NET GitHub Action for content cross-posting.&lt;/p&gt;</description></item><item><title>V020 - Weekly Technology Vlog #20</title><link>https://chrisreddington.com/video/weekly-vlog-020/</link><pubDate>Sun, 16 May 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/weekly-vlog-020/</guid><description>&lt;p&gt;Welcome to Weekly Vlog #20 — a celebration episode! Chris hits his 2021 goal of 500 YouTube subscribers way ahead of schedule (now at 506), then recaps one of the most content-rich weeks on the channel to date before diving into a bumper set of Azure and GitHub updates.&lt;/p&gt;
&lt;h2 id="cloud-with-chris--a-record-week-of-content"&gt;Cloud with Chris — A Record Week of Content&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Azure Pipelines as Code&lt;/strong&gt;: A detailed blog post and companion Cloud Drop walking through YAML pipeline best practices — branch policies, test stage separation, and the tangible benefits of treating CI/CD configuration as versioned code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure in a Nutshell&lt;/strong&gt; (devriel.io): A live session covering core Azure concepts aligned to the AZ-900 fundamentals syllabus.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Event-Driven Architecture with Azure Event Grid&lt;/strong&gt;: A blog post and Cloud Drop exploring how to chain Azure Event Grid, Blob Storage, Storage Queues, and Azure Functions to build a reliable, event-driven file processing workflow — including a discussion on the difference between messages and events.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloud Lunch and Learn Marathon&lt;/strong&gt;: Three pre-recorded sessions: &lt;em&gt;Requirements, Design Patterns &amp;amp; Cloud Architecture Oh My&lt;/em&gt;, &lt;em&gt;GitHub Actions for Static Sites&lt;/em&gt;, and &lt;em&gt;Hugo + Azure Storage + Azure CDN for a cheap and performant site&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mental Health Live Stream&lt;/strong&gt; with Andrew Nathan and Will Owen: A candid, non-clinical conversation sharing personal experiences to encourage open dialogue around mental health in the tech community.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloud Drop with Jamie McGuire&lt;/strong&gt;: Social Opinion — a SaaS platform for social media analytics and tweet scheduling — and Jamie&amp;rsquo;s journey from data science research into building a production service.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="azure-highlights"&gt;Azure Highlights&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Azure Static Web Apps is now GA&lt;/strong&gt;: The headline announcement of the week. Features include globally distributed CDN, built-in CI/CD workflows from GitHub, serverless API integration via Azure Functions, custom domains with free SSL certificates, OAuth authentication providers, role-based routing, and a VS Code extension for local development.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure Health Bot&lt;/strong&gt;: Extended to additional regions and languages for pandemic response symptom checking.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure IoT Central GA&lt;/strong&gt;: API improvements, dashboard updates, IoT Edge enhancements, and device connectivity events.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure API Management GA&lt;/strong&gt;: New certificate validation policy, VS Code extension support for self-hosted gateway debugging, Dapr and validation policy support, and availability zone configuration in the portal.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="github-highlights"&gt;GitHub Highlights&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Security Keys for SSH Git Operations&lt;/strong&gt;: Hardware security keys (e.g. YubiKey) can now authenticate SSH-based git operations on GitHub, extending the platform&amp;rsquo;s strong authentication story.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Video Uploads on GitHub&lt;/strong&gt;: Attach MP4 or GIF videos directly to issues, pull requests, and comments from both desktop and mobile — a practical quality-of-life improvement for bug reproduction and open source collaboration.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Cloud Drops - Pipelines as Code</title><link>https://chrisreddington.com/video/cloud-drops-pipelines-as-code/</link><pubDate>Tue, 11 May 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/cloud-drops-pipelines-as-code/</guid><description>&lt;p&gt;You may have heard about Software Code or Infrastructure as Code. Well, in this video, we&amp;rsquo;ll be talking about pipelines as code. If you&amp;rsquo;re familiar with tools like Azure DevOps, Circle CI, GitHub, GitLab and Jenkins, you may notice a trend where these platforms are allowing you to define your pipelines as code. Throughout this video, we&amp;rsquo;ll be defining a multi-stage pipeline in Azure DevOps, and picking up some tips along the way.&lt;/p&gt;</description></item><item><title>Azure Pipelines Tips</title><link>https://chrisreddington.com/blog/pipelines-as-code/</link><pubDate>Mon, 10 May 2021 08:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/pipelines-as-code/</guid><description>&lt;p&gt;Recently &lt;a href="https://twitter.com/thegraycat/status/1388873685587668992"&gt;on Twitter&lt;/a&gt;, I was asked by @thegraycat on whether I knew of any resources to manage pipelines in version control. I sent across several top of mind thoughts over Twitter, but it got me thinking that there may be others with the same question and it could make a good blog post. So here we are, as I talk through some of my considerations for pipelines as code.&lt;/p&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="en" dir="ltr"&gt;Hey, Chris. You might be able to point me in the right direction - are there any good resources on how manage your &lt;a href="https://twitter.com/hashtag/azuredevops?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#azuredevops&lt;/a&gt; pipelines in git for versioning etc? Cheers.&lt;/p&gt;</description></item><item><title>GitHub Actions and Azure - Using Environments with GitHub Actions</title><link>https://chrisreddington.com/video/github-actions-multiple-environments/</link><pubDate>Fri, 07 May 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/github-actions-multiple-environments/</guid><description>&lt;p&gt;Once you have a working GitHub Actions workflow, the next challenge is safely deploying across dev, staging, and production with the right secrets in the right places. This episode deep-dives into GitHub Actions Environments: how to scope secrets per environment to enforce the principle of least privilege, configure required reviewers and wait timers as production gates, and assign service principals with minimal Azure RBAC permissions. A live demo deploys the cloudwithchris.com Hugo site to Azure Storage, making every concept concrete.&lt;/p&gt;</description></item><item><title>Discussing the Cloud with Chris GitHub Architecture and GitHub setup</title><link>https://chrisreddington.com/video/discussing-cloud-with-chris-architecture-and-github/</link><pubDate>Tue, 20 Apr 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/discussing-cloud-with-chris-architecture-and-github/</guid><description>&lt;p&gt;Karl Cooke (Implementation Specialist at Action Point Technology Group, blogger at &lt;a href="https://irishtechie.com"&gt;irishtechie.com&lt;/a&gt;) turns the tables on Chris Reddington, interviewing him about the architecture and GitHub workflow behind CloudWithChris.com.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Platform Architecture&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The site is a three-layer stack:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Azure DNS&lt;/strong&gt; — public DNS zone with an apex domain redirect to &lt;code&gt;www&lt;/code&gt;, plus separate subdomains for preview, staging, and the podcast feed (&lt;code&gt;podcasts.cloudwithchris.com&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure CDN&lt;/strong&gt; — global edge caching with a rules engine for HTTP→HTTPS redirects and security header injection&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure Storage&lt;/strong&gt; — static website hosting for all HTML, CSS, JS, and media assets; chosen for its low cost, simplicity, and natural fit with static content&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Security Hardening&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>32 - Accelerate .NET to Azure with GitHub Actions</title><link>https://chrisreddington.com/video/accelerate-dotnet-to-azure-with-github-actions/</link><pubDate>Fri, 26 Mar 2021 15:30:00 +0000</pubDate><guid>https://chrisreddington.com/video/accelerate-dotnet-to-azure-with-github-actions/</guid><description>&lt;p&gt;GitHub Actions makes it easy to automate your entire .NET software delivery pipeline — from build and test through to deployment on Azure. In this episode, Chris Reddington is joined by Isaac Levin, Senior Product Marketing Manager at Microsoft and a lifelong .NET developer, to walk through how GitHub Actions YAML workflows streamline deploying .NET and ASP.NET Core applications to Azure App Service, Azure Functions, and Azure Static Web Apps (including Blazor WebAssembly). Isaac traces the evolution of CI/CD tooling from FTP and CruiseControl.NET through to modern GitHub Actions, demonstrates how Azure and Visual Studio integrate to auto-generate workflows, and shares practical tips for getting started quickly.&lt;/p&gt;</description></item><item><title>31 - Deploying to Azure through Terraform Cloud</title><link>https://chrisreddington.com/video/deploy-using-terraform-cloud/</link><pubDate>Fri, 19 Mar 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/deploy-using-terraform-cloud/</guid><description>&lt;p&gt;You may have heard of Terraform, but are you aware of Terraform Cloud or Terraform Enterprise? In this session, Chris gives a practical walkthrough of how he uses Terraform Cloud as the underlying engine to deploy some of his own projects onto Azure.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is Terraform?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Terraform is an open-source Infrastructure as Code (IaC) framework from HashiCorp that uses HCL (HashiCorp Configuration Language) to define cloud resources declaratively. Unlike ARM templates, Terraform is cloud-agnostic and has a rich provider ecosystem — including the Azure RM provider used throughout this session.&lt;/p&gt;</description></item><item><title>V006 - Weekly Technology Vlog #6 (Recap, Coming Up and NEWS!)</title><link>https://chrisreddington.com/video/weekly-vlog-006/</link><pubDate>Mon, 08 Feb 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/weekly-vlog-006/</guid><description>&lt;p&gt;This episode goes live for the first time, capturing a more spontaneous format that Chris considers making permanent. He reflects on two significant releases from the prior week: the Cloud Gaming Notes debut with Lee Williams exploring game server hosting trends and Azure&amp;rsquo;s role in the gaming industry, and the mental health episode with Andrew Nathan — an honest, personal conversation about their own experiences that proved one of the most challenging but meaningful episodes to produce.&lt;/p&gt;</description></item><item><title>V004 - Weekly Technology Vlog #4 (JamStack + Cloud, Upcoming Talks and Tech News)</title><link>https://chrisreddington.com/video/weekly-vlog-004/</link><pubDate>Mon, 25 Jan 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/weekly-vlog-004/</guid><description>&lt;p&gt;Azure Thames Valley is gaining momentum with a website, Meetup page, Twitter account, and LinkedIn group, with the first meetup scheduled for February 16 (subsequently revised to the 17th). The committee agreed on a format of monthly virtual sessions on the third Tuesday of each month, open to speakers and attendees regardless of location.&lt;/p&gt;
&lt;p&gt;On the Azure side, the AKS Secret Store CSI driver enters public preview, enabling Kubernetes workloads to inject secrets, keys, and certificates from Azure Key Vault without storing sensitive material in etcd. The new automatic cluster upgrade channels — patch, stable, and rapid — simplify AKS operations but require careful attention to Kubernetes API version deprecations between minor releases. Azure DevOps Delivery Plans 2.0 gains the &lt;code&gt;uses&lt;/code&gt; statement for cleaner job resource declarations and a new manual validation task for pausing mid-stage YAML pipelines to verify configuration before continuing. Pulumi is introduced as an infrastructure-as-code tool that lets developers use Python, TypeScript, JavaScript, Go, and .NET instead of domain-specific languages, supporting AWS, Azure, GCP, and Kubernetes with native GitHub and Azure DevOps integrations. GitHub&amp;rsquo;s comprehensive 2020 year-in-review covers the CLI, mobile app, Actions improvements (self-hosted runners, environments, environment secrets, manual approvals), dark mode, GitHub Discussions, Sponsors, and pull request draft conversions.&lt;/p&gt;</description></item><item><title>GitHub Actions and Azure - Deploying .NET Core code to Azure App Service</title><link>https://chrisreddington.com/video/github-actions-deploy-to-appservice/</link><pubDate>Wed, 02 Dec 2020 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/github-actions-deploy-to-appservice/</guid><description>&lt;p&gt;You have your .NET Core application code and your Azure App Service infrastructure is ready. Now it&amp;rsquo;s time to wire them together with a fully automated GitHub Actions deployment pipeline.&lt;/p&gt;
&lt;h2 id="what-youll-learn"&gt;What You&amp;rsquo;ll Learn&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;How to structure a &lt;strong&gt;multi-job GitHub Actions workflow&lt;/strong&gt; that separates infrastructure deployment from application deployment&lt;/li&gt;
&lt;li&gt;Setting up the &lt;strong&gt;Azure Web App Deploy&lt;/strong&gt; action for .NET Core applications&lt;/li&gt;
&lt;li&gt;Using &lt;strong&gt;GitHub Secrets&lt;/strong&gt; to securely store Azure publish profiles&lt;/li&gt;
&lt;li&gt;Configuring &lt;code&gt;dotnet build&lt;/code&gt; and &lt;code&gt;dotnet publish&lt;/code&gt; steps within a workflow job&lt;/li&gt;
&lt;li&gt;Troubleshooting common YAML indentation and path errors in GitHub Actions pipelines&lt;/li&gt;
&lt;li&gt;How ARM template &lt;strong&gt;idempotency&lt;/strong&gt; means the infrastructure job runs safely on every commit with no unintended changes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="workflow-structure"&gt;Workflow Structure&lt;/h2&gt;
&lt;p&gt;The pipeline demonstrated here follows a two-stage pattern:&lt;/p&gt;</description></item><item><title>GitHub Actions and Azure - Deploying ARM templates with GitHub Actions</title><link>https://chrisreddington.com/video/github-actions-deploying-infrastructure/</link><pubDate>Wed, 02 Dec 2020 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/github-actions-deploying-infrastructure/</guid><description>&lt;p&gt;Before deploying application code, you need cloud infrastructure in place. This episode demonstrates automating Azure infrastructure provisioning using ARM templates and GitHub Actions.&lt;/p&gt;
&lt;h2 id="what-youll-learn"&gt;What You&amp;rsquo;ll Learn&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;What &lt;strong&gt;ARM templates&lt;/strong&gt; (Azure Resource Manager templates) are and why they&amp;rsquo;re &lt;strong&gt;declarative&lt;/strong&gt;, &lt;strong&gt;deterministic&lt;/strong&gt;, and &lt;strong&gt;idempotent&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;How ARM templates differ from imperative approaches like Azure CLI or PowerShell scripts&lt;/li&gt;
&lt;li&gt;ARM template structure: &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;contentVersion&lt;/code&gt;, &lt;code&gt;parameters&lt;/code&gt;, &lt;code&gt;variables&lt;/code&gt;, &lt;code&gt;resources&lt;/code&gt;, and &lt;code&gt;outputs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Using the &lt;strong&gt;&lt;code&gt;azure/arm-deploy&lt;/code&gt;&lt;/strong&gt; GitHub Action to deploy ARM templates from a workflow&lt;/li&gt;
&lt;li&gt;Repository organisation: separating &lt;code&gt;source/&lt;/code&gt; (application code) from &lt;code&gt;templates/&lt;/code&gt; (ARM templates)&lt;/li&gt;
&lt;li&gt;Adding the &lt;strong&gt;&lt;code&gt;actions/checkout&lt;/code&gt;&lt;/strong&gt; step—and why forgetting it causes cryptic &amp;ldquo;file not found&amp;rdquo; workflow failures&lt;/li&gt;
&lt;li&gt;Using &lt;strong&gt;&lt;code&gt;secureString&lt;/code&gt;&lt;/strong&gt; parameter types to protect secrets in ARM template inputs and outputs&lt;/li&gt;
&lt;li&gt;Browsing the &lt;strong&gt;Azure Quickstart Templates&lt;/strong&gt; gallery for production-ready ARM template samples&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="series-context"&gt;Series Context&lt;/h2&gt;
&lt;p&gt;This is the second episode in the GitHub Actions and Azure series. The infrastructure deployment workflow built here becomes the first job in the multi-job pipeline extended in the next episode to also compile and deploy application code.&lt;/p&gt;</description></item><item><title>GitHub Actions and Azure - Getting started with GitHub Actions and Azure Login</title><link>https://chrisreddington.com/video/github-actions-getting-started/</link><pubDate>Sun, 29 Nov 2020 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/github-actions-getting-started/</guid><description>&lt;p&gt;New to GitHub Actions? This episode is your starting point for automating Azure deployments with GitHub&amp;rsquo;s built-in CI/CD platform.&lt;/p&gt;
&lt;h2 id="what-youll-learn"&gt;What You&amp;rsquo;ll Learn&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The difference between &lt;strong&gt;Git&lt;/strong&gt; and &lt;strong&gt;GitHub&lt;/strong&gt;, and how GitHub Actions fits into your development workflow alongside alternatives like Azure DevOps, GitLab, and Bitbucket&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub Actions workflow YAML structure&lt;/strong&gt;: &lt;code&gt;on&lt;/code&gt; triggers, &lt;code&gt;jobs&lt;/code&gt;, &lt;code&gt;steps&lt;/code&gt;, &lt;code&gt;runs-on&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;How &lt;strong&gt;GitHub-hosted runners&lt;/strong&gt; (Ubuntu, Windows, macOS) work and when to use self-hosted alternatives&lt;/li&gt;
&lt;li&gt;Using the &lt;strong&gt;Azure Login&lt;/strong&gt; action to authenticate against Azure from a workflow&lt;/li&gt;
&lt;li&gt;Creating an &lt;strong&gt;Azure Service Principal&lt;/strong&gt; with the &lt;code&gt;az ad sp create-for-rbac&lt;/code&gt; command and storing credentials as &lt;strong&gt;GitHub Secrets&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Running &lt;strong&gt;Azure CLI&lt;/strong&gt; commands as workflow steps after authentication&lt;/li&gt;
&lt;li&gt;Pinning GitHub Actions to specific versions (e.g., &lt;code&gt;azure/login@v1&lt;/code&gt;) for reproducible, auditable pipelines&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="key-concept-actions-as-repositories"&gt;Key Concept: Actions as Repositories&lt;/h2&gt;
&lt;p&gt;GitHub Actions are themselves open-source repositories. When you reference &lt;code&gt;azure/login@v1&lt;/code&gt;, you&amp;rsquo;re pinning to a specific release tag of the &lt;code&gt;azure/login&lt;/code&gt; GitHub repository. This makes the GitHub Actions ecosystem composable, auditable, and extensible—anyone can submit a pull request to add new capabilities.&lt;/p&gt;</description></item><item><title>Deploying Azure Functions and Static Sites with GitHub Actions | Cloud with Chris</title><link>https://chrisreddington.com/video/azure-github-actions/</link><pubDate>Fri, 02 Oct 2020 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/azure-github-actions/</guid><description>&lt;p&gt;Chris uses a real side-project — a multi-tenant card inventory app — to demonstrate GitHub Actions from first principles through to a working CI/CD pipeline.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GitHub Actions Fundamentals&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The session opens with a clear explanation of what GitHub Actions are and why they are called &lt;em&gt;workflows&lt;/em&gt; rather than pipelines: Actions are not limited to CI/CD and can respond to any GitHub event, including issue comments, new contributors, and dependency alerts. Core concepts covered include:&lt;/p&gt;</description></item><item><title>3 - DevOps in a Cloud World</title><link>https://chrisreddington.com/video/devops-in-cloud/</link><pubDate>Sun, 29 Mar 2020 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/devops-in-cloud/</guid><description>&lt;p&gt;In this first-guest episode of Cloud with Chris, Abel Wang — Principal Developer Advocate and DevOps Lead at Microsoft — joins Chris Reddington for a wide-ranging conversation on what DevOps really means and how to put it into practice in a cloud-first world.&lt;/p&gt;
&lt;p&gt;Key topics covered in this episode:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Defining DevOps&lt;/strong&gt; — Microsoft&amp;rsquo;s framing of DevOps as the union of people, process, and products focused on continuously delivering &lt;em&gt;value&lt;/em&gt; to end users, not just shipping features&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Telemetry and data-driven decisions&lt;/strong&gt; — how telemetry revealed that only one-third of features built at Microsoft actually delivered the value users wanted (one-third were neutral and one-third were actively unwanted), and how measuring actual usage changed the team&amp;rsquo;s development approach&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Feature flags&lt;/strong&gt; — separating deployment from release, enabling safe experimentation with subsets of users, supporting rapid rollback, and keeping flag debt under control&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Database DevOps&lt;/strong&gt; — storing database schemas in source control, automating schema migrations, and breaking the traditional DBA bottleneck to support high-frequency deployments&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Site Reliability Engineering (SRE)&lt;/strong&gt; — embedding on-call responsibility directly in cross-functional product teams, using live-site incidents as the fastest way to ramp up new engineers&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shifting left&lt;/strong&gt; — moving quality, security, and reliability considerations earlier in the delivery pipeline to reduce the cost of fixing defects in production&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are earlier in your DevOps journey or looking to level up specific practices like CI/CD pipelines, feature flags, or database automation, this episode is packed with practical insights drawn from real experience inside Microsoft engineering teams.&lt;/p&gt;</description></item></channel></rss>