CI pipeline for Django Project
Ranjeet Singh

Ranjeet Singh @techonerd

Joined:
Dec 3, 2020

CI pipeline for Django Project

Publish Date: Dec 6 '21
5 2

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 ^^

Comments 2 total

Add comment