DEV Community

Cover image for CI pipeline for Django Project
Ranjeet Singh
Ranjeet Singh

Posted on

CI pipeline for Django Project

My Workflow

Have Django project setup and test cases written to be used to check continuous integration and checking code against flake8.

With this in mind follow these steps:

  • Create you Django project as usual django-admin startproject <project_name> .

  • Run your project with python manage.py runserver .

  • Initiate git in your project if not have it yet with git init .

  • Configure sensitive data like SECRET_KEYS and DEBUG_VALUE as environment variable in github repository.

secret variables setup in github repository

  • Now our project is all setup and running, we will take care of CI on each commit PUSH on github repository.

Submission Category:

Wacky Wildcards

Yaml File or Link to Code

Add the .yml file as follows .github/workflows/name.yml in the project. For more information refer to the official docs

name: Django CI
on:
  push:
    branches:
      - '*'
      - '*/*'

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      max-parallel: 4
      matrix:
        python-version: [3.7, 3.8, 3.9]

    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 -r requirements.txt
    - name: Run Tests
      env: # environment variable
        SECRET_kEY: ${{ secrets.SECRET_KEY }}
        DEBUG_VALUE: ${{ secrets.DEBUG_VALUE }}

      run: |
        python manage.py test
    - name: Lint with flake8
      run: |
        pip install flake8 
        # 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
  • We can run CI for various python versions.
  • We can access secret variables as ${{secrets.<VARIABLE_NAME>}} .

Additional Resources / Info

Github repository

under MIT license

Collaborators

@dkaiamit @kido-kit-kat

Happy coding, happy hacking ^^

Top comments (2)

Collapse
 
dmytrolitvinov profile image
Dmytro Litvinov

If someone is looking for a flake8 extensions, you can check it out here

Collapse
 
techonerd profile image
Ranjeet Singh

@dmytrolitvinov thanks for including that!!