By Fatskills Exam Guides Team — the exam nerds behind 28,500+ quizzes and 2.1M practice questions across 500+ global exams.
CI/CD pipelines automate the build, test, and deployment of software—critical for FDEs who must deliver solutions in high-stakes, constrained environments. Example: You’re deploying a real-time satellite imagery analysis tool to a classified network with no internet access. The pipeline must run offline, validate security compliance, and deploy via air-gapped media. Or, during a disaster response, you’re patching a data pipeline mid-mission when a customer reports a critical failure—your CI/CD system must roll back, test, and redeploy in minutes without downtime.
pytest
.github/workflows/deploy.yml
when: manual
trivy
docker info
scp
systemd
.md
yaml # .github/workflows/deploy.yml jobs: build: runs-on: self-hosted # Customer-provided runner steps: - uses: actions/checkout@v4 - run: pip install -r requirements.txt - run: pytest deploy: needs: build runs-on: self-hosted steps: - run: scp app.py user@prod-server:/opt/app/ - run: ssh user@prod-server "systemctl restart myapp"
gpg
journalctl -u myapp -f
python # test_deployment.py import requests resp = requests.get("http://localhost:8000/health") assert resp.status_code == 200, "Deployment failed!"
For bare metal:
git tag v1.0.0
Mistake: Assuming the customer’s environment matches your lab. Correction: Always test in the exact target environment. Use a "staging" runner that mirrors production (same OS, network rules, etc.).
Mistake: Hardcoding secrets in pipeline files. Correction: Use secrets management tools. For air-gapped systems, encrypt secrets with gpg and store them on a USB drive.
Mistake: Skipping rollback tests. Correction: Simulate a failed deployment (e.g., exit 1 in a script) and verify rollback works before go-live.
exit 1
Mistake: Ignoring pipeline flakiness. Correction: Add retry logic (retry: 3 in GitLab CI) and log failures to a dashboard (e.g., Grafana).
retry: 3
Mistake: Not validating artifacts. Correction: Scan Docker images with trivy or grype in CI. For air-gapped systems, use offline vulnerability databases.
grype
Interview Question: "How would you design a CI/CD pipeline for a classified network with no internet access?" Answer: Use a self-hosted runner, pre-download dependencies (e.g., pip download + docker save), and deploy via physical media (USB/SSD). Validate artifacts with offline tools like syft for SBOMs.
pip download
docker save
syft
War Story: A customer demanded a last-minute feature during a go-live week. The FDE:
Documented: Added the request to the backlog with a risk assessment.
Tricky Situation: The pipeline fails in production but works in staging. The FDE:
nslookup prod-db
nslookup staging-db
env | grep DB
curl -v http://prod-api/health
Scenario: You’re deploying to an environment where you can’t run standard Docker images due to security restrictions. What’s your first step? Answer: Build a minimal base image (e.g., alpine) and scan it with trivy to identify vulnerabilities. Then, work with the customer’s security team to whitelist approved images. Why: Security constraints often require custom images or non-Docker deployments (e.g., systemd services).
alpine
Scenario: The customer’s Jenkins pipeline fails with "Permission denied" when pulling from Git. What do you check? Answer: Verify the SSH key or PAT (Personal Access Token) is correctly injected into the Jenkins credential store. Test manually with ssh -T [email protected]. Why: Jenkins often runs as a service account with restricted permissions.
ssh -T [email protected]
Scenario: A deployment to Kubernetes fails with ImagePullBackOff. What’s the most likely cause? Answer: The image registry credentials are missing or incorrect. Check the Kubernetes secret (kubectl get secrets) and verify the image exists in the registry. Why: Kubernetes needs explicit credentials to pull private images.
ImagePullBackOff
kubectl get secrets
on: push
on: workflow_dispatch
rules:
artifacts:
Jenkinsfile
sh 'command'
echo ${{ secrets.TOKEN }}
docker build --no-cache
kubectl rollout status deployment/myapp
docker load
trivy image myapp:latest
kubectl rollout undo
systemctl revert
Join 4M+ learners. Unlock unlimited quizzes, wrong-answer tracking, flashcards + reminders, study guides, and 1-on-1 challenges.