Visualize, manage, and accelerate your CI/CD workflows withΒ Semaphore Canvas.

Semaphore

  • Docs
    • πŸ“˜ Cloud Docs
    • 🀝 Community Edition Docs
  • Product
    • Features
      • πŸ”„ Continuous Integration & Pipelines
      • 🦾 Deployments & Automation
      • πŸ“ˆ Metrics & Observability
      • πŸ” Security & Compliance
      • 🧰 Developer Toolkit
      • πŸ“Š Test reports
      • πŸ“ Monorepos
      • πŸ–₯️ Self-hosted agents
      • 🎨 Semaphore Canvas
    • Use Cases
      • iOS
      • Docker & Kubernetes
      • Android
      • Compare
      • vs Jenkins
      • vs GitHub Actions
      • vs Travis CI
      • vs Bitbucket
    • Explore
      • Customers
      • Premium Support
      • Security
      • Pricing
  • Deployment options
    • 🌐 Open source
    • ☁️ Cloud
    • πŸ” Hybrid
    • 🏒 Enterprise
  • CI/CD
    • Discover
      • πŸ“ Blog
      • πŸŽ™οΈ Podcast
      • πŸ“š Resources
      • πŸŽ“ CI/CD Learning tool
      • πŸ“¨ Newsletter
  • Community
    • Connect
      • πŸŽ₯ Youtube β†—
      • πŸŽ₯ Semaphore Backstage β†—
      • πŸŽ₯ Release Roundups β†—
      • πŸ’¬ Discord β†—
      • πŸ™ GitHub β†—
Star
...
  • Login
  • Get started

Visualize, manage, and accelerate your CI/CD workflows withΒ Semaphore Canvas.

Semaphore

  • Docs
    • πŸ“˜ Cloud Docs
    • 🀝 Community Edition Docs
  • Product
    • Features
      • πŸ”„ Continuous Integration & Pipelines
      • 🦾 Deployments & Automation
      • πŸ“ˆ Metrics & Observability
      • πŸ” Security & Compliance
      • 🧰 Developer Toolkit
      • πŸ“Š Test reports
      • πŸ“ Monorepos
      • πŸ–₯️ Self-hosted agents
      • 🎨 Semaphore Canvas
    • Use Cases
      • iOS
      • Docker & Kubernetes
      • Android
      • Compare
      • vs Jenkins
      • vs GitHub Actions
      • vs Travis CI
      • vs Bitbucket
    • Explore
      • Customers
      • Premium Support
      • Security
      • Pricing
  • Deployment options
    • 🌐 Open source
    • ☁️ Cloud
    • πŸ” Hybrid
    • 🏒 Enterprise
  • CI/CD
    • Discover
      • πŸ“ Blog
      • πŸŽ™οΈ Podcast
      • πŸ“š Resources
      • πŸŽ“ CI/CD Learning tool
      • πŸ“¨ Newsletter
  • Community
    • Connect
      • πŸŽ₯ Youtube β†—
      • πŸŽ₯ Semaphore Backstage β†—
      • πŸŽ₯ Release Roundups β†—
      • πŸ’¬ Discord β†—
      • πŸ™ GitHub β†—
  • Get started
  • Login

Semaphore CI/CD Learning

πŸ” Continuous Integration πŸ“¦ Continuous Delivery πŸš€ Continuous Deployment

Continuous Deployment

Deploy the application to my servers or the cloud.

Prerequisites πŸ—’οΈ

  • A working Continuous Integration (CI) pipeline.
  • A productive environment to deploy your project.

🎯 What are your goals?

Select your goals to build the pipeline and show the recommended skills to learn

View:

πŸ“‹ Learning trackLearning track shows you the the skills required to make the most out of your CI/CD platform.

Select your goals to show the recommended skills here

open all

Automated deployment to production

Automated deployment

A set of script or tools that deploy the application in production and makes it available to users.

The deployment mechanism should be as similar as possible to the one used to deploy to the test environment during continuous delivery.

Learn more:

  • 5 Options for Deploying Microservices
  • A Step-by-Step Guide to Continuous Deployment on Kubernetes
  • Python Continuous Integration and Deployment From Scratch
  • How To Deploy a Go Web Application with Docker
  • Continuous Deployment of a Python Flask Application

Automated infrastructure management

Prepare test environment

We must ensure the production infrastructure (services, servers, databases, load balancers, etc.) are ready and secured to accept a deployment.

In many cases, the infrastructure can be provisioned automatically with cloud providers and infrastructure-as-code (IaC) tools like Terraform.

The application must be started in a mode that is suitable for production usage. This includes configuring environment variables, API keys and tokens, database credentials, and feature flags.

Learn more:

  • A Developer Guide to Terraform
  • Feature Flags: A Gentle Introduction

Automated database management

Automate database updates and migrations

Changes in the database in production must be completely automated. Engineers should not be allowed to manually connect to the database and make changes.

Frameworks like Ruby on Rails or Laravel include mechanisms to update database structures in a non-destructive way.

In other cases, tools like Flyway, DBCompare, or DBDeploy can be used instead.

Learn more:

Database Management With CI/CD

Smoke testing

Sanity check your deployments

Smoke testing consists of very shallow but broad tests that verify the crucial parts of the application. It is typically a very fast and cost-effective test that can quickly determine if the application has correctly started in production.

Learn more:

Smoke Testing Keeps Your Delivery Pipeline Safe and Sound

Advanced deployments

Advanced techniques such as Blue-Green and Canary deployments

Even with all the testing and preparations, problems can arise during or after deployment. There are a couple mechanisms to make deployment safer or more gradual.

These techniques are much more complex to implement but are worth doing on systems where failure is too costly. Platforms like Kubernetes are designed to handle both kinds of advanced deployments.

These are:

  • Canary deployments: a kind of rolling deployment where the release is staged, so only a fraction of the users are exposed to the new version at a time. If no problems are detected, the updates roll out until the entire userbase is on the new version.
  • Blue-green deployments: here, we have two production environments, one running the current version and the other upgraded application. Users can be switched back and forth between the versions without an outage.

Learn more:

  • What Is Blue-Green Deployment?
  • Continuous Blue-Green Deployments With Kubernetes
  • What Is Canary Deployment?
  • ebook: CI/CD with Docker and Kubernetes

Example projects:

semaphore-demo-cicd-kubernetes

Conditional rollback

Undo buggy deployments automatically

More advanced deployment techniques make it possible to easily and safely roll back a failed deployment. As usual, automation is key here.

The rollback must be as automated as the deployment itself, including managing the database, configuration, and infrastructure to leave the system in a consistent and working state once the rollback is complete.

Learn more:

  • What Is Blue-Green Deployment?
  • Continuous Blue-Green Deployments With Kubernetes
  • What Is Canary Deployment?
  • ebook: CI/CD with Docker and Kubernetes

Example projects:

semaphore-demo-cicd-kubernetes

Project metrics

Measure team productivity

The team should gather metrics to assess their productivity and track it over time as new tools, patterns, or techniques are tried out.

The four principal metrics to track are called The DORA Metrics:

  • Time to restore service (MTTR): how long it takes the organization (on average) to recover from a failure in production.
  • Change fail rate (CFR): the percentage of releases or deployments causing a failure in production.
  • Deployment frequency (DF): how often the organization successfully releases the product to the users or deploys it to production.
  • Lead time to changes (LT): the amount of time it takes a commit to reach production or release.

Learn more:

  • Become an Elite Team With Dora Metrics
  • 17 DevOps Metrics To Measure Success

Observability

Track the state of every part of the application.

Observability is the ability to track the state of every part of the application. Complex applications tend to be a constellation of interconnected parts, some of them external and other internals, like databases or other microservices.

An observable system offers engineers enough information to assess performance and track down problems.

Observability is achieved through event logging, metric tracking, instrumentation, and data correlation.

Learn more:

  • podcast: On the Importance of Observability-Driven Software Development
  • podcast: What is observability & how to measure the quality of microservices

Site Reliability Engineering (SRE)

Ensure your systems and services are highly available, scalable, and reliable.

SRE stands for Site Reliability Engineering. It is a discipline created at Google that combines software engineering and operations to ensure that systems and services are highly available, scalable, and reliable.

SRE teams are responsible for designing, building, and maintaining the infrastructure and systems that support the software applications in the organzation. This typically includes tasks such as monitoring, troubleshooting, and incident response, as well as the development and deployment of automation tools to improve the reliability and efficiency of the systems.

SRE aims to balance the need for high availability and fast deployment of software with the need to minimize risk and downtime.

Learn more:

  • When SREs and Kubernetes Are Worth It And When They Are Not
  • What is Site Reliability Engineering (SRE)?

πŸ—οΈ Suggested CD pipelineThe continuous deployment pipeline performs all the steps required to deploy the application to production and, if necessary, rollback the change in case of trouble.

Select your goals to view the suggested pipeline here
DB MigrationAutomated database migration job
Infra provisionAutomated infrastructure provisioning job
DeployProduction deployment job
Smoke TestsVerify the deployment succeeded and the application has correctly started
Automated rollbackIn case the deployment failed, or a grave problem was detected after deployment

Β© 2024 Rendered Text. All rights reserved.

Star us on GitHub
Star
...

The Open Source CI/CD Platform.

Learn more

Resources

We're hiring 🀝🏽

Blog

Podcast πŸŽ™οΈ

Resources

Newsletter

Product

Pricing πŸ’°

Docs

Customers

Premium Support

System Status

Security

    By clicking "Subscribe" you agree that your personal data will be processed in accordance with our Privacy policy.

    Terms of Service

    Privacy Policy

    Β© 2025 Semaphore Technologies doo. All rights reserved.