DEV Community

Cover image for Build CI/CD in 10 Mins with Free GitHub Actions
Sudhir Bahadure
Sudhir Bahadure

Posted on

Build CI/CD in 10 Mins with Free GitHub Actions

Introduction

Did you know that 70% of developers still spend over 10 hours a week on manual deployment tasks, but you can automate it all in just 10 minutes with free GitHub Actions? In this tutorial, you will build a fully functional Continuous Integration and Continuous Deployment (CI/CD) pipeline using GitHub Actions, allowing you to automate your workflow and save valuable time. As we dive into 2026, automating deployment tasks is more crucial than ever, especially with the rising demand for efficient and cost-effective solutions. To get started, make sure you have the following prerequisites:

  • A GitHub account
  • A basic understanding of Git and GitHub workflow
  • A Python project ready for deployment
  • Familiarity with YAML syntax for workflow configuration

Table of Contents

  1. Introduction
  2. Step 1 — Create a GitHub Actions Workflow
  3. Step 2 — Configure the Workflow to Build Your Project
  4. Step 3 — Automate Deployment Using GitHub Actions
  5. Step 4 — Test Your CI/CD Pipeline
  6. Step 5 — Monitor and Improve Your Workflow
  7. Real-World Usage
  8. Real-World Application
  9. Conclusion
  10. 💬 Your Turn

Step 1 — Create a GitHub Actions Workflow

Creating a GitHub Actions workflow is the first step towards automating your deployment process. This step matters because it sets the foundation for your entire CI/CD pipeline. To create a workflow, navigate to your repository's .github/workflows directory and create a new file named main.yml. Add the following YAML code to this file:

name: Python package

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: [3.9, 3.10]

    steps:
    - uses: actions/checkout@v2
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install flake8
    - name: Lint with flake8
      run: |
        # stop the build if there are Python syntax errors or undefined names
        flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
        # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
        flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
Enter fullscreen mode Exit fullscreen mode

The expected output will be a successful workflow run, indicating that your GitHub Actions workflow has been set up correctly.

Step 2 — Configure the Workflow to Build Your Project

Configuring the workflow to build your project is essential for ensuring that your code is compiled and packaged correctly. This step matters because it allows you to automate the build process, reducing manual effort and minimizing errors. To configure the workflow, add the following code to your main.yml file:

- name: Build and package
  run: |
    python setup.py sdist bdist_wheel
Enter fullscreen mode Exit fullscreen mode

This code will build and package your Python project, creating a source distribution and a wheel distribution.

Step 3 — Automate Deployment Using GitHub Actions

Automating deployment using GitHub Actions is the final step in creating a fully functional CI/CD pipeline. This step matters because it enables you to deploy your code to production automatically, reducing the risk of human error and increasing efficiency. To automate deployment, add the following code to your main.yml file:

- name: Deploy to production
  uses: appleboy/scp-action@master
  with:
    host: ${{ secrets.HOST }}
    username: ${{ secrets.USERNAME }}
    password: ${{ secrets.PASSWORD }}
    source: "dist/"
    target: "/var/www/html/"
Enter fullscreen mode Exit fullscreen mode

This code will deploy your packaged code to a production server using the scp-action.

Step 4 — Test Your CI/CD Pipeline

Testing your CI/CD pipeline is crucial for ensuring that it works as expected. This step matters because it allows you to identify and fix any issues before they affect your production environment. To test your pipeline, simply push a change to your repository and verify that the workflow runs successfully.

Step 5 — Monitor and Improve Your Workflow

Monitoring and improving your workflow is essential for optimizing its performance and efficiency. This step matters because it enables you to identify areas for improvement and make data-driven decisions. To monitor your workflow, use the GitHub Actions dashboard to track workflow runs and identify any issues.

Real-World Usage

In real-world scenarios, you can use your CI/CD pipeline to automate deployment of your Python projects to production servers. For example, you can use the scp-action to deploy your code to a server hosted on Vultr Cloud or DigitalOcean.

Real-World Application

The CI/CD pipeline you built in this tutorial can be used to solve real-world problems, such as automating deployment of web applications or microservices. By using free GitHub Actions, you can reduce costs and increase efficiency, making it an attractive solution for developers and businesses alike.

Conclusion

In this tutorial, you built a fully functional CI/CD pipeline using free GitHub Actions. The key takeaways from this tutorial are:

  1. GitHub Actions provides a free and efficient way to automate CI/CD pipelines.
  2. Automating deployment tasks can save valuable time and reduce manual effort.
  3. Using a CI/CD pipeline can improve the efficiency and reliability of your workflow. To build on this tutorial, try integrating your CI/CD pipeline with other tools and services, such as Vultr Cloud or DigitalOcean, to create a more comprehensive and automated workflow.

💬 Your Turn

Have you automated your deployment tasks before? What was your approach? Drop it in the comments — I read every one.

💡 Found this helpful?

If this tutorial saved you time or solved a problem, consider:

  • Support me on Ko-fi
  • Support via PayPal

Every coffee or donation keeps me writing free tutorials like this one!


This article was written with AI assistance and reviewed for technical accuracy.
Part of the **Zero-Cost Cloud & DevOps* series — Follow for more free tutorials*

#aBotWroteThis

Top comments (0)