This project demonstrates a CI/CD pipeline using GitHub Actions to build a Dockerized Python application and deploy it to an AWS EC2 instance.
- Code Commit: Developers push code changes to the
main
branch. - CI Build Job: GitHub Actions triggers a build job (
build.yml
) upon code commit. - Docker Image Build: The CI job builds a Docker image from the Dockerfile and pushes it to Docker Hub upon successful build.
- CD Deploy Job: After the image is pushed, another GitHub Actions job (
deploy.yml
) is triggered. - Deployment to AWS EC2:
.github/workflows/
: Contains GitHub Actions workflows.build.yml
: Defines CI build steps.deploy.yml
: Defines CD deployment steps.
Dockerfile
: Configuration for building the Docker image.README.md
: Project documentation (you are currently reading this file).
Before running the CI/CD pipeline, ensure you have set up the following:
- GitHub Repository: Configure secrets for Docker Hub credentials (
DOCKER_USERNAME
,DOCKER_PASSWORD
) as Repo Secrets. - Docker Hub Account: Repository for storing Docker images.
- AWS EC2 Instance: Ensure the instance is running and accessible via SSH.and Configured Self-Hosted Runner
- Fork and Clone: Fork this repository and clone it to your local machine.
- Set GitHub Secrets:
- Navigate to your GitHub repository > Settings > Secrets.
- Add the following secrets:
DOCKER_USERNAME
: Your Docker Hub username.DOCKER_PASSWORD
: Your Docker Hub password.
- Configure a Self hosted Runner : Go to Settings > Actions > Self-hosted runners.
- Push to
main
Branch: Push your changes to themain
branch to trigger the CI/CD pipeline. - Monitor Execution: View the progress of the CI/CD pipeline in the Actions tab of your GitHub repository.
- Verify Deployment: Access your AWS EC2 instance to verify that the Docker container is running successfully.
- Ensure that your Dockerfile is configured correctly to build and run your Python application.
- Regularly monitor and maintain your AWS EC2 instance to ensure proper functioning of the deployed application.
Contributions are welcome! If you have suggestions, bug reports, or want to add new features, feel free to submit a pull request.
Feel free to explore, contribute, and adapt this project to suit your needs. If you encounter any issues or have suggestions for improvement, please raise them in the GitHub repository's issues section. Happy coding! 🚀
Connect with me on linkedin: Raghul M