
Design and implement a ci cd ecosystem using open source tools, integrating version control, build systems, static code analysis, code security, artifact management, and monitoring with Prometheus and Grafana.
Explore who this course is for and cover the basics of DevOps, from version control to continuous integration, within the software development lifecycle.
Explore the end-to-end ci/cd ecosystem by wiring Gitea, Jenkins, SonarQube, and Artifactory, then monitor with Prometheus and Grafana, install node exporter, and visualize metrics.
Identify minimal hardware configurations to run six virtual machines on Ubuntu, with at least 2 GB RAM and 25 GB disk per system, accessible via static IPs.
Explore the basics of a CI/CD ecosystem by focusing on version control, building and testing, artifact management, and deployment concepts without containers.
Explore how to access course resources through the documentation website two cups full.com, review the commands, build system, and system requirements, and use the navigation as a complete course reference.
Explore version control systems and git-based source control, learn how changes are tracked, and see a hands-on demo with Gitea and PostgreSQL.
Install and configure git on Ubuntu 22.04 in a VM, updating and upgrading the system, generating and applying the locale to English US UTF-8, and rebooting to complete preparation.
Install and configure PostgreSQL 14 on Ubuntu, verify status, and enable service at boot. Customize postgresql.conf to use scram-sha-256 for password encryption and set listen addresses to localhost.
Log into the Postgres service via psql, create a git role with login and password, then create a git db with utf-8 encoding and English locale, and grant all privileges.
Configure PostgreSQL access using the host-based authentication file to restrict the git user to local connections, enforce scram-sha-256, and restart the PostgreSQL service.
Download and install Gitea on Ubuntu Linux amd64 using the 1.18.5 release from the Gitea downloads, then verify with ls and begin configuration.
Prepare the environment for gtm installation by verifying git, creating a system user named git, and setting ownership and permissions on /var/lib/git and the git configuration directory for Gitea.
Install and configure gitea as a systemd service, set executable permissions, place the binary in /usr/local/bin, and run it on port 3000 accessible via the server IP.
Configure a PostgreSQL database for Gitea, set the administrator account, site title, base URL, repository path, and prepare server settings, then install an Nginx reverse proxy.
Install nginx on ubuntu, configure a reverse proxy from gitea.2cupsfull.local to localhost:3000, set up sites-available and sites-enabled, and update the hosts file for dns resolution.
Admins log in with privileged rights to manage users and repositories, while the lecture demonstrates creating a repository in gitea, then cloning and pushing a first commit to origin main.
Install, configure, and keep git updated to the latest version, ensuring a live, running version control system within the ecosystem.
Discover how a build system translates source code into machine instructions, automates the build, speeds feedback, and enables production deployment with Jenkins and alternatives.
install and configure the Jenkins build system on ubuntu 22.04, updating and upgrading the system, setting the US English locale, and rebooting to complete system preparation.
Install Java 11, verify the Java installation, and set JAVA_HOME for Jenkins, using apt-get, update-alternatives, and editing the environment to make Java available system-wide.
Install Jenkins on linux using the LTS release, add the Jenkins repository and key, install Jenkins, enable auto-start, unlock with initial password, and configure admin user and URL.
Configure a reverse proxy with nginx for Jenkins by installing nginx, creating a sites-available config, enabling it via a symlink, and mapping an FQDN to Jenkins on port 80.
Demonstrates the initial login flow in a Jenkins build system demo, including handling a single admin user, authentication, and configuring the local FQDN with a reverse proxy.
Install and configure the build system, integrate Gitea and Jenkins so Jenkins is notified of source code changes, and prepare to connect source code management with the build system.
Connect the version control system with the build system by wiring Gitea to Jenkins in this introduction, showing how source code management integrates with build automation.
Connect Jenkins to Gitea to streamline the integration of version control with your build system, demonstrating a practical, flawless setup for DevOps workflows.
Connect Gitea and Jenkins by configuring the hosts file to resolve their FQDNs, sign in, and verify IPs on Ubuntu 22.04 during a practical demo.
Connect git to Jenkins by installing the Git plugin (and Blue Ocean), manage plugins, restart Jenkins, and verify the Git integration for the build system.
Demonstrates generating a Jenkins access token in a Gitea-like VCS, securely storing it, and creating a public organization named Two Cups Full to connect the VCS with Jenkins for builds.
Connect Jenkins to a Gitea server by adding it in the configure system page and enabling manage hooks with a GitHub Personal Access Token.
Connect a git organization in Jenkins and perform an initial scan to discover repositories, branches, and pull requests, using an access token to prepare the continuous delivery pipeline.
Connect Gitea and Jenkins by showing how creating a new repository updates the scan, detects a Jenkins file at the root, and leverages organization webhooks to trigger builds.
Conclude the session by demonstrating how to connect Jenkins and Gitea, linking the VCS with the build system, with more lessons to come.
Highlight the connection between Gitea and Jenkins, then install Sonarqube to manage code quality and security.
Explore code quality and security with Sonarqube, an automatic code review tool that detects bugs, vulnerabilities, and code smells, and enables continuous inspection across branches and pull requests.
Install and configure SonarQube on Ubuntu 22.04.1 LTS, updating the system, setting the English US locale, installing OpenJDK 11, and defining JAVA_HOME and ES_JAVA_HOME.
Install PostgreSQL 14, enable the service, and configure scram-sha-256 password encryption for localhost access. Create the sonar cube user and sonar cube db with UTF-8 encoding and grant all privileges.
Download, extract, and install SonarQube community edition as a service. Configure virtual memory map count, data and temp paths, and Postgres JDBC settings, then enable systemd startup on port 9000.
Set up a reverse proxy with nginx on ubuntu to expose SonarQube via a domain name, configure sites-available and enabled, test syntax, and update hosts for DNS.
Connect Sonarqube with Jenkins to illustrate the connection between code quality and continuous integration, demonstrated through a hands-on demo that follows the diagram.
Connect Jenkins with Sonarqube to enable pipeline code quality and security checks, and configure a webhook plus an admin token after updating the /etc/hosts file.
Log into Jenkins, install the SonarQube scanner plugin, restart, and configure a global SonarQube server with an access token, linking Jenkins to SonarQube for code quality analysis.
Generate a secret with pwgen and update the Sonarqube webhook with the new validation secret, then create a global secret text credential in Jenkins to enable webhook verification.
Finish the integration by connecting Sonarqube with Jenkins to trigger static analysis and receive quality gate reports. Then install the Jfrog Artifactory open source as the artifact management system.
Learn artifact management with Artifactory, storing binaries, dependencies, and resources for a DevOps workflow. Compare options like Nexus, GitHub Package Registry, NuGet, ProGet, and review hardware and software requirements.
Learn how to prepare a system for Artifactory by verifying Ubuntu 20.04 LTS, updating packages, and configuring locale settings (LANG, LC_ALL, LC_COLLATE) before installing the database.
Learn to install and configure PostgreSQL 12 on Ubuntu, enable the service, enable scram sha 256 password encryption, and create an Artifactory user and database with privileges.
Configure PostgreSQL access by editing pg_hba.conf, create the Artifactory user and database, enable scram-sha-256, restart the service, and verify login via psql.
Install and configure Artifactory on a Linux system by creating a jfrog directory in /opt, setting the jfrog home, downloading the Linux installer, extracting, and preparing system.yaml.
Edit system.yaml to configure Artifactory with a PostgreSQL database artifactory db and user Artifactory. Install Artifactory as a service and start it, then review logs.
Start and monitor the Artifactory service, troubleshoot startup issues via logs, adjust timeouts and resources, and access the UI while configuring a base URL and future reverse proxy.
Install and configure nginx as a reverse proxy for Artifactory, create and enable an nginx site configuration, set proper permissions and logs, and verify the setup using the domain name.
Configure the Jfrog Artifactory open source version as the artifact management system and prepare to connect Artifactory to Jenkins in the next video.
Connect Artifactory with Jenkins to integrate Artifactory into the build system, using a hands-on demo to illustrate the workflow and the related diagram.
Learn to connect Jenkins with Artifactory to store artifacts from Jenkins pipeline by generating a scope token for admin access, copying and saving it, then configuring Jenkins to access Artifactory.
Configure Jenkins with the Artifactory plugin, create a global Artifactory access token credential, and configure the plugin with the server ID and URL.
Demonstrates connecting build system and artifact management by configuring /etc/hosts to map FQDNs for Artifactory and Jenkins, enabling seamless inter-service naming and discovery.
Showcases integrating Artifactory with Jenkins, wiring Gitea, Sonarqube, and artifact management, enabling automatic builds and propagation to Artifactory with promotion and upcoming build notifications.
Explore notification options from the build system, including Slack, Microsoft Teams, Mattermost, Flock, Rocket.Chat, Discord, Telegram, and email, and learn how to configure them with Jenkins.
Integrate your chosen notification system with Jenkins, then move forward to create an automated CI CD pipeline.
Create and clone a repository to demonstrate an automated ci/cd pipeline, configure ssh keys for secure access, and prepare for Artifactory configuration in the next video.
Create a local Artifactory repository named CI CD demo for the CI/CD pipeline, and understand local, remote, and virtual repository types, then prepare Jenkins with sonar scanner and Jfrog CLI.
Configure Jenkins to enable automated ci/cd by installing SonarQube scanner and JFrog CLI via global tool configuration, enabling code analysis reports and artifact deployment.
Install and configure nginx as a reverse proxy for Prometheus, create and enable a custom site, test and restart nginx. Access Prometheus via the configured domain or host file mapping.
Push code to the git repo, run sanity checks, build a Python virtual environment, generate documentation, create a tarball, and archive it in Jenkins before uploading to JFrog Artifactory.
Push code updates to trigger automated ci/cd pipelines, resolve repository ownership, and monitor builds in Jenkins, SonarQube, and Artifactory, ensuring artifacts are uploaded successfully.
A solid base is the best way to build solid understanding on any topic and DevOps is no exception. By going back to the root, we will take every component of CI CD and implement it hands on from the scratch by creating a fully functional CI CD environment.
Over the years, I have seen many people losing interest in DevOps because of the hardship to see a pipeline pass and specially to see all the component working together in symphony. Over 90% people gave up because “Google” couldn’t help much to stich all the components together. This is exactly what this course intends to cover: Provide you with a fully functional and integrated CI CD environment for an easy start in discovering the DevOps world.
The aim of this course is to “get you settled” and “give you a taste of” automated pipeline and introduce you to the components that a “DevOps” engineer should master to stay on top of the game.
In the age of AI and container orchestration we must not forget the basic building blocks of a system. This course gives the user the ability to strengthen the fundamentals. Once this is set, we can easily move forward and cope with container orchestration or AI in our journey to discover DevOps.
So join me in this course and get your CI CD tools and environment up and running, and see your pipelines pass by the time you finish this course.