<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/stop-deploying-garbage-to-production-daily-devops-net-xjjgx5emn" -->

---
title: Stop Deploying Garbage to Production — Daily DevOps &amp; .NET
description: A practical guide to implementing mandatory security gates in CI/CD pipelines, using GitHub Actions as the example platform. Covers the common anti-patterns...
canonical: https://daily.dev/posts/stop-deploying-garbage-to-production-daily-devops-net-xjjgx5emn
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Stop Deploying Garbage to Production — Daily DevOps &amp; .NET | daily.dev
og:description: A practical guide to implementing mandatory security gates in CI/CD pipelines, using GitHub Actions as the example platform. Covers the common anti-patterns...
og:url: https://daily.dev/posts/stop-deploying-garbage-to-production-daily-devops-net-xjjgx5emn
og:image: https://api.daily.dev/og/posts/xjJgx5emN.png
og:image:alt: Stop Deploying Garbage to Production — Daily DevOps &amp; .NET
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Stop Deploying Garbage to Production — Daily DevOps & .NET

**[We Are .NET](https://daily.dev/sources/wearedotnet)** · [@samtrion](https://daily.dev/samtrion) · 9 min read · 1 upvotes · 0 comments

## Summary

A practical guide to implementing mandatory security gates in CI/CD pipelines, using GitHub Actions as the example platform. Covers the common anti-patterns that lead to breaches — tests that don't block, suppressed SAST findings, hardcoded secrets, and zero approval gates — then provides a complete working workflow with four mandatory gates: test execution, dependency vulnerability scanning, CodeQL SAST analysis, and secrets detection via TruffleHog. The workflow enforces manual approval for production deployments via GitHub Environments, generates an automatic audit trail for ISO 27001 compliance (Controls A.14.2 and A.18.2), and includes common pitfalls like the continue-on-error trap, accidental secret logging, and deploying from arbitrary branches.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://daily-devops.net/posts/continuous-deployment-security-gates/>

## Similar posts on daily.dev

- [Security Tests That Prove Themselves — Daily DevOps & .NET](https://daily.dev/posts/security-tests-that-prove-themselves-daily-devops-net-4mutnqllj) · We Are .NET · 1 upvotes · 0 comments
- [Shift Left Security: 4 Automated Security Gates in GitHub Actions](https://daily.dev/posts/shift-left-security-4-automated-security-gates-in-github-actions-fvzdpsxyd) · DevOps.com · 1 upvotes · 0 comments
- [How to Build a Production-Ready Flutter CI/CD Pipeline with GitHub Actions: Quality Gates, Environments, and Store Deployment](https://daily.dev/posts/how-to-build-a-production-ready-flutter-ci-cd-pipeline-with-github-actions-quality-gates-environme-rpmoo0tv7) · freeCodeCamp · 1 upvotes · 0 comments

---

Tags: [#security](https://daily.dev/tags/security), [#cicd](https://daily.dev/tags/cicd), [#github-actions](https://daily.dev/tags/github-actions), [#devsecops](https://daily.dev/tags/devsecops), [#secrets-management](https://daily.dev/tags/secrets-management)

[View this post on daily.dev](https://daily.dev/posts/stop-deploying-garbage-to-production-daily-devops-net-xjjgx5emn)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Stop Deploying Garbage to Production — Daily DevOps & .NET","url":"https://daily.dev/posts/stop-deploying-garbage-to-production-daily-devops-net-xjjgx5emn","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/stop-deploying-garbage-to-production-daily-devops-net-xjjgx5emn"},"datePublished":"2026-03-26T17:35:07.490Z","dateModified":"2026-03-26T17:35:38.841Z","description":"A practical guide to implementing mandatory security gates in CI/CD pipelines, using GitHub Actions as the example platform. Covers the common anti-patterns...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/72cfe9ea54ea29a0e22f230ef00e224f?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/72cfe9ea54ea29a0e22f230ef00e224f?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"We Are .NET","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Person","name":"Martin Stühmer","url":"https://daily.dev/samtrion","image":"https://avatars.githubusercontent.com/u/3283596?v=4","description":"The code you create is a valuable legacy, so it's important to build it carefully.","interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"EndorseAction"},"userInteractionCount":590}},"commentCount":0,"discussionUrl":"https://daily.dev/posts/stop-deploying-garbage-to-production-daily-devops-net-xjjgx5emn","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"security,cicd,github-actions,devsecops,secrets-management","timeRequired":"PT9M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"We Are .NET","item":"https://daily.dev/sources/wearedotnet"},{"@type":"ListItem","position":3,"name":"Stop Deploying Garbage to Production — Daily DevOps & .NET"}]}
```

