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.

  • 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
  • We can run CI for various python versions.
  • We can access secret variables as ${{secrets.<VARIABLE_NAME>}} .
  • Additional Resources / Info
    Github repository
    Collaborators
    Happy coding, happy hacking ^^

    34

    This website collects cookies to deliver better user experience

    CI pipeline for Django Project