DEV Community

fadingNA
fadingNA

Posted on

Python & Github Guards

First

In software development, ensuring the quality of code is crucial for delivering a reliable product. Automated testing and continuous integration (CI) processes help catch issues early in the development cycle. This blog outlines the steps taken to set up a CI pipeline for a Python project using GitHub Actions. It covers the configuration of automated testing, linting, and handling common challenges faced during implementation.

Setting Up CI/CD for a Chatminal

In this case, our project involves building a Python application with the following goals:

  • Run automated tests for every push and pull request to the main branch.
  • Perform code linting and enforce formatting standards.
  • Ensure all changes pass CI checks before merging.

1. Creating the GitHub Actions Workflow

  - name: Set up Python
    uses: actions/setup-python@v2
    with:
      python-version: 3.11

  - name: Install dependencies
    run: |
      python -m pip install --upgrade pip
      pip install -r requirements.txt

  - name: Run Linter
    run: |
      pip install flake8 black
      flake8 ./app/*.py
      black --check .

  - name: Run Tests
    run: |
      python -m unittest discover -s test
Enter fullscreen mode Exit fullscreen mode

2. Handling Linting with flake8 and black

Linting ensures consistent code style and catches potential bugs early. We used flake8 for code linting and black for enforcing code formatting. To ignore specific warnings (e.g., unused imports), .flake8 configuration was added:

[flake8]
ignore = F401

3. Writing and Running Unit Tests

Tests were written using the unittest module. Each test file followed a naming convention of *_test.py and was placed in the test directory. An example of a tests for the Chatminal Object wide, Utilities.

4. Enforcing CI Checks for Pull Requests

To ensure code quality, a rule was set to block merging if CI checks fail. This prevents code that does not meet quality standards from entering the main branch.


Conclusion

Setting up a robust CI/CD pipeline with automated testing and linting helps maintain high code quality. GitHub Actions simplifies this process, making it easy to automate testing, enforce code standards, and catch issues early. By adopting these practices, developers can focus on building features while reducing the likelihood of introducing regressions.

Top comments (0)