PY-CI
Implementing CI/CD in a Python project
Description
The aim of the training is to introduce the concepts of Continuous Integration, Continuous Delivery. As a practical exercise, a pipeline will be created for a Python project. The source code will be stored on GitHub. During the training we will also build a library and an application. A Docker image will be created for the application and deployed to a Kubernetes environment. The CI tool is Jenkins. The source code quality control is done by SonarQube. The artifacts will be published to Nexus repository.
It is also possible to provide customised training, during which the tools can be exchanged for others.
Outline
- The related steps of a software development lifecycle and release process: version control, development, build, unit and integration testing, code quality control, release-ready artifact creation, deploy to different environments, etc.
- Introduction to Continuous Integration and the problems it solves
- Introduction to Continuous Delivery and the problems it solves
- Introduction to Continuous Deployment
- Reasons for the emergence of CI/CD
- The concept of Pipeline
- Version Management
- Library and application
- Python project structure,
setup.cfg,pyproject.toml - Dependency management, pip,
requirements.txt - Running unit tests, test coverage (pytest, coverage)
- Integration tests, database schema versioning
- Release, wheel
- Feature branching
- Feature flags
- Semantic version control
- Docker
- E2E tests (Postman/Newman) with Docker compose
- Jenkins architecture, pipeline
(Jenkinsfile), Blue Ocean graphical interface, using build number, using Docker - Static code analysis (pylint, flake8, mypy) , SonarQube, test coverage, Quality Profile, Quality Gate
- Nexus Repository usage, deploying Python artifacts (twine) and Docker images, proxy and private repositories
- Documentation generation
- Deployment in Kubernetes environment
Prerequisites
Secure operating system and command line use. Participation in development projects.
As some of the course material is in English, a basic level of English at document reading level is required. The training is in Hungarian, based on Hungarian slides.