
Explore devops workflows from virtual machines and SSH to building and deploying Django apps with GitLab, Jenkins, and Docker through CI/CD pipelines and staging to production.
You will download install Oracle VirtualBox in this video
Choose and download Ubuntu ISO images to install on a virtual machine, selecting desktop 22.04 LTS or 22.10, and server 20.04 LTS from ubuntu.com.
Create and set up a virtual Ubuntu Desktop
We will create and set up a virtual Ubuntu server in this video
Learn how to connect to VirtualBox virtual machines using SSH by locating IP addresses, switching from NAT to bridged adapters, and enabling internet and local network access.
Connect to your virtual machines through SSH. We will install and set up putty for easier SSH connections
Open a command line terminal to SSH into the remote server using a valid user and IP address, then enter the password to access. Type exit to end the session.
Explore Digital Ocean, a cloud platform that launches droplets quickly and charges for resources. Sign up to receive a $200 credit valid for 60 days and practice creating virtual servers.
Log into a Digital Ocean droplet via SSH using the IP address, enter the root password if prompted, and create a non-root admin user.
Learn how to create a non-root admin user on a Digital Ocean server, grant sudo privileges, and perform initial system updates securely.
Set up and activate a Python virtual environment to isolate Django project dependencies, install virtualenv, and manage project-specific packages across platforms.
Install Django in your Python virtual environment, create a Django project named polling, run the development server on localhost:8000, and explore the polling tutorial to build a polling application.
Discover GitLab's features for source code management, CI/CD, issue tracking, wiki, and API, plus access control and collaboration, as a popular open-source alternative to GitHub.
Create a remote gitlab.com repository by forming a training group, making a blank project, and pushing local code, while keeping the group private and postponing auto devops for Jenkins.
You will turn your project code into a Git project and then connect it to the gitlab project.
Add SSH keys from your development machine to your GitLab account to authenticate via SSH, boosting security, convenience, and automation when pushing code.
You will set up a dedicated deploy user for your application on the production server.
You will create a requirements.txt file so that contributors to our app can install our app dependencies with a single command
Install psycopg2 and gunicorn to connect a Django app with PostgreSQL, update requirements.txt with pip freeze, and push changes to the remote repository.
Configure django to store static assets by setting static URL and static root in settings.py, placing files in base directory's static folder, ignoring the folder in git, and committing changes.
Install the necessary programs to run Python applications on the production server as the deploy user, updating packages and installing python3-pip, PostgreSQL, PostgreSQL contrib, and nginx.
Set up a Postgres database for the application on the production server by creating Pauline_DB and Pauline_user, granting all privileges, and securely storing the credentials for later use.
Set up Nginx to pass requests to Gunicorn with a server block listening on port 80, serving static files, and proxies to Gunicorn socket, then enable sites and restart Nginx.
Configure local DNS on Windows by mapping the server IP 192.168.2.33 to polling.test in the hosts file using administrator privileges, then reload the page.
Add a deploy script to automate Django redeployment, including virtual environment activation, code pull, dependencies installation, migrations, static collection, and server reloads to reduce errors.
Learn to expose a locally hosted Jenkins server to the internet using Ngrok, configure the HTTP port 8080, obtain the auth token, and access the public HTTP and HTTPS URLs.
Install and uninstall Jenkins plugins using the manage plugins interface, search for Blue Ocean, install with dependencies, and remove or disable plugins with restart prompts.
Configure Jenkins to send email notifications using the email extension plugin, set up smtp credentials, and test the configuration to receive real-time build alerts for pipeline failures.
Install the Git and GitLab plugins in Jenkins to enable connections with GitLab, then restart Jenkins as needed to activate triggers and display build results in the GitLab UI.
Learn to securely connect Jenkins to GitLab using a personal access token, create and save credentials, and test the integration to enable automated workflows.
Learn to add a Jenkins file to your project in Git, understand declarative vs scripted pipelines in groovy, and implement a three-stage ci-cd pipeline—build, test, deploy.
Enable passwordless ssh from Jenkins to the deploy user on the production server by generating ssh keys and adding the public key to authorized_keys, then deploy via the pipeline.
Watch a hands-on demo of continuous integration and deployment using git and Jenkins, pushing the contact us feature to production via automated tests.
Configure a Jenkins pipeline to send email notifications on failure via the post section in the Jenkinsfile, including subject, from email, and details like project name, build number, and URL.
Learn how a failing automated test stops a Jenkins pipeline from deploying to production, with real-time GitLab triggering, test verification in Django and email notifications.
Extend your ci cd pipeline to continuous delivery by deploying to a staging server that mimics production, with human input before deployment, and set up staging environment identical to production.
Deploy the project to a DigitalOcean droplet by creating a dedicated deploy user, generating ssh keys, and cloning the private GitLab repository.
Configure Jenkins to require human input before deploying to production, using a gated input step in the deploy to production stage to approve or abort after staging tests.
Push the GitLab CI configuration to trigger a pipeline that runs in a Docker-based shared runner, automatically cloning code, checking out master, and executing build, test, and deploy stages.
You will be introduced to gitlab runner and you will create a digital ocean droplet for it
Learn to run and troubleshoot a self-hosted GitLab runner by configuring runner tags in the project config, triggering pipelines, inspecting the build console, and resolving bash_logout environment issues.
Configure the GitLab runner on the runner's droplet, install python3-pip to satisfy the CI requirements, and set up SSH keys to authorize deployment access.
Demonstrates a GitLab CI pipeline that automatically tests and deploys code from development to production, and upgrades to staging with human approval.
Continuous Integration Continuous Delivery/Deployment (CICD) is a very important part of modern-day software release processes. As a matter of fact, you can not survive as a DevOps Engineer without a good understanding of CICD.
This course is designed for web developers and beginner DevOps engineers who want to learn how to deploy a Django application to production, using the best practices of Continuous Integration and Continuous Deployment/Delivery (CICD).
The course covers the use of Git, GitLab, Jenkins and Docker, to build and deploy a full-fledged Django application. and to create a fully functional CICD pipeline.
By the end of this course, you will have learned
how to deploy a Django application to production and to any other environment,
How to redeploy the same application using deploy scripts, and how to design a functional CICD pipeline with Gitlab and Jenkins and later with GitLab CI.
How to collaborate on projects using GitLab. This a must-have skill if you want to work in an organization that has multiple developers, working on a project.
How to dockerize Django development environments.
How to create and configure virtual machines on your personal computers, so you will be able to practice without the fear of being charged by a cloud service provider.
And more.
Everything we'll do will be hands-on and straight to the point.
If you are seeking a job as a Developer or a DevOps Engineer without any professional experience yet, this course is a must for you because, by the end of it, you will have moved from zero experience to at least a year of experience with the tools taught in the course.