A CI/CD pipeline helps developers deliver code changes faster and more reliably by automating testing and deployment.
CI/CD pipeline basics in Django
Start learning this pattern below
Jump into concepts and practice - no test required
or
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Syntax
Django
stages:
- test
- deploy
test_job:
stage: test
script:
- python manage.py test
deploy_job:
stage: deploy
script:
- echo "Deploying Django app..."
- ./deploy_script.shThis example shows a simple pipeline with two stages: test and deploy.
Each job runs commands under the script section.
Examples
Django
test_job:
script:
- python manage.py testDjango
deploy_job:
script:
- ./deploy_script.shDjango
stages: - build - test - deploy
Sample Program
This pipeline first runs Django tests. If tests pass, it runs the deploy job.
Django
stages:
- test
- deploy
test_job:
stage: test
script:
- python manage.py test
deploy_job:
stage: deploy
script:
- echo "Deploying Django app..."
- ./deploy_script.shImportant Notes
Make sure your deployment script has execute permission (chmod +x deploy_script.sh).
CI/CD pipelines run automatically on code changes pushed to your repository.
Start simple and add more steps as your project grows.
Summary
CI/CD pipelines automate testing and deployment for faster, safer code delivery.
They run jobs in stages like test and deploy.
Using pipelines helps catch bugs early and saves time.
Practice
1. What is the main purpose of a CI/CD pipeline in a Django project?
easy
Solution
Step 1: Understand CI/CD pipeline purpose
A CI/CD pipeline automates the process of testing and deploying code changes to reduce errors and speed up delivery.Step 2: Match purpose with options
To automate testing and deployment for faster and safer code delivery correctly states automation of testing and deployment, which is the core of CI/CD pipelines.Final Answer:
To automate testing and deployment for faster and safer code delivery -> Option AQuick Check:
CI/CD automates testing and deployment = D [OK]
Hint: CI/CD means automating tests and deploys [OK]
Common Mistakes:
- Confusing CI/CD with manual code review
- Thinking CI/CD creates Django code automatically
- Assuming CI/CD is for backups
2. Which of the following is the correct syntax to define a job named
test in a GitLab CI/CD pipeline YAML file?easy
Solution
Step 1: Recall GitLab CI YAML job syntax
GitLab CI jobs are defined as job_name: followed by script: list with commands.Step 2: Compare options with correct YAML syntax
test: script: - python manage.py test matches the correct YAML format for a job named test running the Django test command.Final Answer:
test:\n script:\n - python manage.py test -> Option AQuick Check:
GitLab CI job syntax uses job_name: and script: list = A [OK]
Hint: GitLab CI jobs use job_name: and script: list [OK]
Common Mistakes:
- Using curly braces or other languages syntax
- Missing the dash before script commands
- Confusing job syntax with other CI tools
3. Given this GitHub Actions workflow snippet for a Django project:
What will happen when this workflow runs?
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.12'
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run tests
run: python manage.py test
What will happen when this workflow runs?
medium
Solution
Step 1: Analyze each step in the workflow
The workflow checks out code, sets up Python 3.12, installs dependencies from requirements.txt, then runs Django tests.Step 2: Confirm expected behavior
All steps are valid and will run in order, so tests will execute after setup.Final Answer:
The workflow will check out code, set Python 3.12, install dependencies, and run Django tests -> Option BQuick Check:
Steps run in order: checkout, setup, install, test = A [OK]
Hint: Read steps top to bottom to predict workflow actions [OK]
Common Mistakes:
- Assuming Python version missing causes failure
- Thinking dependencies are skipped
- Confusing test run with deployment
4. You have this GitLab CI job snippet:
But tests are not running on your feature branch pushes. What is the likely problem?
test:
script:
- python manage.py test
only:
- main
- develop
But tests are not running on your feature branch pushes. What is the likely problem?
medium
Solution
Step 1: Understand the 'only' keyword in GitLab CI
The 'only' keyword restricts job execution to specified branches, here main and develop only.Step 2: Analyze why feature branches don't run tests
Since feature branches are not listed, the job does not run on them.Final Answer:
The job is limited to run only on main and develop branches -> Option CQuick Check:
'only' limits branches = B [OK]
Hint: 'only' controls branches where job runs [OK]
Common Mistakes:
- Thinking script command is wrong without checking
- Assuming pipeline file is missing
- Blaming test code syntax without evidence
5. You want to create a CI/CD pipeline for your Django app that runs tests only if code changes affect
models.py or views.py. Which GitLab CI configuration snippet correctly implements this?hard
Solution
Step 1: Understand 'only: changes' in GitLab CI
This setting runs the job only if specified files change in the commit.Step 2: Match requirement with options
test: script: - python manage.py test only: changes: - models.py - views.py uses 'only: changes' with models.py and views.py, so tests run only if these files change.Final Answer:
test:\n script:\n - python manage.py test\n only:\n changes:\n - models.py\n - views.py -> Option DQuick Check:
'only: changes' triggers job on file changes = C [OK]
Hint: 'only: changes' runs job on specific file changes [OK]
Common Mistakes:
- Using 'except' instead of 'only' for changes
- Using branch refs instead of file changes
- Setting job to manual instead of automatic
