18
CI pipeline for Django Project
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.
Wacky Wildcards
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>}}
.
Github repository
under MIT license
Happy coding, happy hacking ^^
18