惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
博客园 - 【当耐特】
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
WordPress大学
WordPress大学
D
Docker
T
The Blog of Author Tim Ferriss
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Azure Blog
Microsoft Azure Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
月光博客
月光博客
M
MIT News - Artificial intelligence
H
Hackread – Cybersecurity News, Data Breaches, AI and More
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
云风的 BLOG
云风的 BLOG
F
Fortinet All Blogs
罗磊的独立博客
小众软件
小众软件
A
About on SuperTechFans
MyScale Blog
MyScale Blog
D
DataBreaches.Net
The GitHub Blog
The GitHub Blog
C
Check Point Blog
L
LangChain Blog

ashishb.net

A day in Luxembourg - the richest country in the world I was asked to install malware during a fake interview Book summary: Breakneck - China's quest to engineer the future by Dan Wang Book summary: How to Teach Your Baby to Read Book Summary: The Discontented Little Baby Book by Pamela Douglas Introducing Amazing Sandbox - run third-party tools and AI agents securely on your machine Why software outsourcing gets a bad reputation? Book summary: The Natural Baby Sleep Solution by Polly Moore A day in Antwerp, Belgium Journey of online influencers Two days in Brussels, Belgium Shortcuts - when we love them and when we don't A visit to Rakhigarhi Three days in overhyped Paris Empty Japan, crowded Tokyo The real lock-in in GitHub is not the code, but the stars 11-day Norwegian Breakaway East Caribbean cruise Sanskrit and Sri Lankan Air Force Use REST with Open API The Achilles heel of American capitalism Costa Rica in 4 days At a juice stall in Sri Lanka A short stay at Warsaw, Poland Best practices for using Python & uv inside Docker Two days in Vilnius, Lithuania How IntelliJ IDEs waste disk space Pregnancy Why there aren't many digital nomads from India Two days in Riga, Latvia To keep your machine secure, run third-party tools inside Docker
Continuous integration ≠ Continuous delivery
Ashish Bhatia · 2025-04-05 · via ashishb.net

GitHub Actions (or GitLab CI) is great for Continuous Integration (CI). However, using it for Continuous Delivery (CD) isn’t necessary. There are downfalls to it.

A CI platform is where all the developers collaborate. It is where the code is compiled, linted, and tested. This process requires use of a lot more third-party dependencies than the release process. The CI platform needs read access to the source code. It might read-access to more repositories but almost never a write access.

A CD platform requires release related credentials. It will almost certainly need write access to maintain some release information like branches or tags. Fewer people need access to this. Even fewer third-party dependencies are required for this process.

Commingling the two system drastically impacts the security surface. This is what caused a compromised release of UltraAnalytics. The same attack vector was involved in compromise of tj-actions/changed-files which impacted 23,000 GitHub repositories. And last week, even GitHub’s own CodeQL was compromised and the attacker had the ability to compromise thousands of repositories using Code QL.

Using a separate release platform drastically reduces the attack surface.

A secondary benefit is efficiency. Deployment artifacts like Docker images can be big. Especially, for interpreted languages like Python and TypeScript.

So, here’s a better approach for continuous delivery.

Use your cloud platform’s native solution like AWS CodeBuild or Google Cloud Build. These products will be notified whenever your code on the master/main branch changes and will build the Docker binaries in the cloud.

GitHub won’t have access to your cloud deployment. And AWS/Google Cloud can pull source code from GitHub via GitHub Applications, so, no more pesky secrets that can potentially leak.

Further, this adds a separation of concerns. The where and how of the service deployment happens belongs to the cloud platform. And the source control hosting service need not be aware of it.