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 Delivery

Release software such as Docker images, App store applications, or installable packages.

Prerequisites πŸ—’οΈ

  • A working Continuous Integration (CI) pipeline.
  • A testing or stating environment to test the project before launch.

🎯 What are your goals?

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

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 release build

Build deployable artifact

We must build a deployable or releasable package. It should contain everything needed to install and start the application.

Learn more:

  • Release Management for Microservices
  • What are artifacts?

Deployment to test environment

Automated deployment

A set of scripts or mechanisms that deploy the application on a test or staging environment.

The deployment system should be the same used later in production, as this step serves to battle-test the deployment procedure.

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

Example project:

semaphore-demo-ruby-kubernetes

Infrastructure management

Deploy test/staging infrastructure using code

Infrastructure must be prepared to run the application in test mode. This may include ensuring correct dependencies are installed on the test infrastructure provisioned on demand.

In addition, the application must be started in a suitable mode for testing. This includes environment variables, API keys and tokens, database credentials, and feature flags. Multiple configurations might be used to test the application in different conditions.

Learn more:

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

Automated database management

Prepare a test-optimized database

The database should be prepared with a specially-crafted test dataset to start the application and run the tests.

The dataset should be minimal, the most simple setup that allows the application to run. Test cases should then load up the relevant data before the test and clean it up afterward.

Avoid using a production database. This not only can result in compliance violations, but production data is typically too big to be useful.

Learn more:

Database Management With CI/CD

Smoke testing

Check application has started

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 the test environment.

Learn more:

Smoke Testing Keeps Your Delivery Pipeline Safe and Sound

Exploratory testing

Discover new testing opportunities

Exploratory testing is a kind of manual testing in which developers and quality analysts search for new test cases, get a general feel of the application, and evaluate usability issues.

In many cases, users can be brought in to get their feedback. A/B tests can be conducted to evaluate how features affect engagement and satisfaction.

Every round of exploratory testing feeds presents an opportunity to find new acceptance criteria and write new acceptance tests.

Learn more:

20 Types of Tests Every Developer Should Know

Acceptance testing

Ensure business and user requirements are met

Acceptance testing is the practice of running high-level, end-to-end tests to ensure that a system follows spec. Acceptance tests are derived from acceptance criteria, which define how an application responds to user actions or events.

Once the acceptance criteria are defined in conjunction with the customer, we can write acceptance tests for their validation. An application that passes all acceptance tests by definition fulfills the user’s needs.

Learn more:

The Benefits of Acceptance Testing

Non-functional testing

Check application has started

With the application running in a production-like environment, we can run capacity and performance tests. By stressing the system, we can find its limits and ensure it can handle the expected load.

Non-functional tests also include security, so the InfoSec team should be invited to participate in exploring the system and running system-wide security assessments.

Learn more:

  • 20 Types of Tests Every Developer Should Know
  • Improving Security in Your CI/CD Pipeline
  • Automatic Security Testing of Rails Applications Using Brakeman
  • Elixir Code Security: Prioritize Security in Your CI With 4 Tools
  • Continuous Container Vulnerability Testing with Trivy

Optimizing continuous delivery

Speed up and streamline software releases

There are several optimizations that can take place:

  • Improve and expand the tests.
  • Use exploratory testing to find new test cases.
  • Speed up the pipeline by using parallelization and optimizing slow tests.
  • Using infrastructure as code (IaC) tools like Terraform to provision and delete infrastructure on demand.

Learn more:

  • 9 Ways To Make Slow Tests Faster
  • 5-Step Strategy for Optimizing Slow Tests
  • Revving up Continuous Integration with Parallel Testing
  • A Developer Guide to Terraform

πŸ—οΈ Suggested CD pipelineThe purpose of the continuous delivery pipeline is to create a package that can be deployed in production or released to the user in a way that is automated and reproducible.

Select your goals to view the suggested pipeline here
Build releaseBuild the complete package required to run the application
Infra provisionAutomated infrastructure provisioning
Test DBTest data setup job
Deploy to test envDeploy the application in an environment well-suited for testing
Smoke testsverify the deployment succeeded and the application has correctly started on the test environment
Non-functional testsNon-functional tests for the delivery pipeline
Acceptance testCheck that the application fulfills the needs of the users

Β© 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.