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
