
Explore hands-on CI/CD with GitHub Actions, building workflows, jobs, and triggers for scalable pipelines. Learn environment variables, secrets, CodeQL analysis, SonarCloud checks, Docker image publishing, and Kubernetes deployment.
Explore how GitHub Actions automates CI, CD, and security checks within GitHub, orchestrating tests, builds, deployments, and releases across Linux, Windows, and macOS.
Explore the four building blocks of GitHub actions: workflows, jobs, steps, and runners, and how they form a CI/CD pipeline and run on hosted or self-hosted runners.
Explore how GitHub actions respond to events and triggers like push, pull request, schedule, and workflow dispatch to automate CI workflows across multiple branches.
Create a private GitHub repository with a readme and Python gitignore to host sample code and workflows for a hands-on GitHub actions CI/CD course.
Create your first GitHub workflow with the workflow editor, place a YAML file in .github/workflows, and trigger on push to run jobs and steps.
Add a job to a GitHub Actions workflow by editing the workflow file, specifying runs on ubuntu latest, and listing steps such as echo commands and OS release checks.
Add a second job in a GitHub Actions workflow and see how two jobs run in parallel, with hostname checks, sleep commands, and logs.
Demonstrates sequencing GitHub Actions workflow using needs; run job one and job two in parallel, then job three after job one, and finally job four after all three.
Demonstrate running CI jobs on Windows and Mac OS runners in a GitHub Actions workflow, including enabling multi-OS execution, using runner info checks, and validating outputs.
Learn to extend GitHub actions workflows with schedule, workflow dispatch, and push triggers, configure cron-like intervals, handle syntax errors, and run tests across Ubuntu, Windows, and Mac OS.
Discover GitHub actions building blocks and automate a build-test-deploy pipeline using JavaScript, Docker, and composite actions; explore GitHub Marketplace and common actions like checkout and setup Python.
Learn to leverage GitHub Actions by adding a checkout step in a workflow, using the actions/checkout action from the marketplace to clone the repository on the runner.
Explore how to add artifact archiving in a GitHub Actions workflow by selecting marketplace actions, configuring inputs, and uploading single files or directories with exclusions.
Learn how to pass artifacts between jobs in GitHub Actions by uploading and downloading build artifacts, enabling multi-stage CI/CD, consistent builds, and efficient deployment.
Demonstrate downloading a single artifact in a GitHub Actions workflow by adding a job that uses the download artifact action to fetch a file and verify it in the directory.
Demonstrates updating a GitHub Actions workflow to download an entire directory artifact named Directory Artifacts, using needs to coordinate job dependencies and verify the downloaded artifacts.
Learn to download GitHub Actions artifacts to a custom location by using the path input, creating folders with mkdir -p, and verifying downloads with ls.
Learn how branching, merging, and pull requests enable parallel development, safe experimentation, and a stable main codebase, with GitHub actions automating tests and PR validations.
Learn to create and switch branches, including main, dev, and feature branches, and tailor a GitHub Actions workflow to trigger only on dev or feature prefixed branches.
Create a pull request from dev to main after updating the workflow to trigger on main, dev, and feature- branches; verify changes, checks pass, and no conflicts.
Add a pull request trigger to a GitHub Actions workflow to run checks for pull requests targeting the main branch, while committing changes on the dev branch.
Demonstrates blocking pull request merges when checks fail by configuring branch rules and status checks. Learners enable up to date merging requirements to ensure all checks pass.
fix a failed job to enable PR merge, update workflow triggers to run only on main and pull requests, set exit code to zero, and verify status checks pass.
Explore environment variables, secrets, context variables, and environments in GitHub Actions to create dynamic, secure workflows. Learn practical use cases for config data across dev, test, and prod deployments.
Define environment variables at the workflow level with env, then refer to them in jobs using dollar syntax, and verify their values for env type, app user, and app port.
Learn to store and securely reference repository secrets in GitHub Actions, mask values, and safeguard sensitive data within workflows.
Learn to reference built-in GitHub Actions contexts and inbuilt variables to access env vars, secrets, runner details, and event data within workflows.
Configure and manage multiple GitHub environments, adding environment secrets, build variables, and environment variables for staging and production, enforce branch-specific deployment rules, and prepare workflows to use these values.
Demonstrates using environment configurations in GitHub Actions workflows to deploy to staging and production, referencing environment variables and secrets with vars, and applying the environment keyword to select values.
Learn to run GitHub Actions jobs conditionally by branch, using if conditions and head_ref, to deploy staging from dev and production from main, with review gates and skipped jobs.
Demonstrate building a Python web app with Flask, adding app.py, test_app.py, and requirements.txt, create a GitHub Actions workflow, and manage branches and pull requests to merge temp into dev.
Update your GitHub actions workflow to run Python unit tests by configuring checkout, setting up Python, installing dependencies from requirements.txt, and executing pytest on Ubuntu latest.
Generate and upload a code coverage report for a Python project by configuring pytest to produce a JUnit XML report, then upload the report as an artifact in the workflow.
Learn to extend your GitHub Actions workflow with a CodeQL security scan to identify vulnerabilities, upload results to the security tab, and review code scanning feedback for pull requests.
Set up sonar cloud for code quality checks within a GitHub actions workflow, create a sonar cloud project, authorize access to repositories, and configure a GitHub secret for analysis.
learn how to add a sonar scan job to a GitHub actions workflow, configure sonar project properties and secrets, and publish sonar cloud results for a python application.
Demonstrates adding a sonar quality gate check in a GitHub Actions workflow and failing the job when the quality gate status is failed, including version issues and fixes.
Demonstrates reviewing three security hotspots in the CI/CD workflow, addressing 0% coverage and the 80% threshold, and marking hotspots as fixed or safe to improve quality.
Demonstrates publishing code coverage to SonarCloud via GitHub Actions by generating coverage xml, configuring sonar Python coverage reports path, downloading artifacts, and linking unit tests to the sonar analysis.
Build a deployable docker image for a flask app using a docker file and docker ignore, then save it as a tar artifact in a GitHub actions workflow.
Learn to publish a built container image to Docker Hub using a dedicated GitHub Actions job. Download the artifact, load and login, tag, and push the image with secured credentials.
Demonstrate publishing a container image to GHCR via GitHub Actions, mirroring the Docker Hub workflow, including login, registry URL, and using the GitHub token with secrets.
Learn how reusable workflows in GitHub Actions call common steps across repositories, reducing duplication while centralizing standards and secrets across teams.
Showcases turning an existing CI pipeline into a reusable GitHub Actions workflow and calling it from other workflows by passing mandatory secrets such as sonar token and Docker Hub credentials.
Demonstrate how to configure repository settings to grant permissions for actions and reusable workflows in GitHub Actions, including enabling external and organization-specific workflows.
Modify the existing workflow to call a reusable workflow via workflow_call, configure the dev branch, and pass secrets like sonar token and Docker Hub credentials.
Demonstrate adding inputs and conditional logic to a reusable GitHub Actions workflow to control which jobs run. Customize workflows across repositories by using boolean inputs and managing dependencies with needs.
Learn to call reusable workflows with input-driven conditions to run unit tests, code QL, and Sonarqube, and understand how defaults and dependencies control execution across GitHub actions.
Explore self-hosted runners for GitHub Actions, learn when to choose them over GitHub-hosted runners, and how they enable custom hardware, control, security, compliance, and latency optimization.
Demonstrates installing a self-hosted runner on Linux, configuring at organization level, creating a runner group, adding labels, and starting runners for GitHub Actions workflows.
Explore two workflows that run on self-hosted and hosted GitHub Actions runners, and display system information such as host name and operating system version.
Delete self-hosted GitHub runners by using the runners page or a runner-machine command, choosing graceful or forced removal, then cleanup, at repo or org level.
Demonstrates selecting a specific self-hosted GitHub runner by applying multiple labels with an and condition, e.g., linux x64 and python, to meet specialized needs.
Explore how the GitHub actions runner controller (Arc) automates and scales self-hosted runners inside Kubernetes, enabling dynamic autoscaling, clean pods, and multi-tenant, secure CI/CD pipelines.
Install ARC on a Kubernetes cluster by provisioning cert-manager, generating a GitHub token, and deploying the action runner controller with helm; register two self-hosted runners for your repository.
Deploy arc self-hosted runners in a Kubernetes cluster and run a GitHub Actions workflow, switch run zones, and observe ephemeral runners that replace old ones for fresh, online availability.
Demonstrates deploying the runner scale set controller in a Kubernetes cluster to enable auto scaling for GitHub Actions runners, using helm, namespaces, and pod verification.
Deploy and configure a GitHub Actions runner scale set inside a Kubernetes cluster by setting installation name, namespace, config URL, and org-level token permissions, then verify the listener pod.
Demonstrates configuring a skill set to scale GitHub Actions runners, updating workflows to use a label, and observing automatic pod provisioning and termination of runners to optimize resource usage.
GitHub Actions has transformed the way teams build, test, secure, and deploy applications directly from GitHub. From simple automation to fully-fledged CI/CD pipelines running on Kubernetes, GitHub Actions enables you to ship software faster, safer, and with confidence.
This hands-on, project-driven course takes you from absolute zero to production-ready CI/CD pipelines using GitHub Actions. You won’t just learn YAML syntax — you’ll implement real-world pipelines involving testing, security scanning, Docker builds, container registries, self-hosted runners, Kubernetes deployments, Helm, Selenium testing, reusable workflows, and custom GitHub Actions.
By the end of this course, you’ll be able to design, build, optimize, and scale CI/CD pipelines the same way modern DevOps teams do in real production environments.
What makes GitHub Actions powerful?
Native CI/CD built directly into GitHub
Event-driven workflows (push, PR, schedule, manual triggers)
Massive Actions marketplace
Managed runners + self-hosted runners
Kubernetes-native scaling with Runner Controllers
Excellent support for modern DevOps and GitOps workflows
This course helps you unlock all of that — step by step.
Special Note
Every concept is taught through real code and real pipelines. You’ll work with hosted and self-hosted runners, set up ARC on Kubernetes and learn patterns used in enterprise DevOps. By the end, you won’t just use GitHub Actions - you’ll run it like it’s done in production.
Course Structure:
GitHub Actions fundamentals
Writing your first workflows
Using marketplace actions & artifacts
Pull request & branch-based workflows
Secrets, environments & conditional logic
End-to-end CI pipeline for a Python application
Reusable workflows at scale
Self-hosted GitHub runners
GitHub runners on Kubernetes (ARC & Scale Sets)
Kubernetes deployments using GitHub Actions
Running Selenium tests in CI
Custom runner images
Helm integration and full delivery pipelines
Creating & publishing custom GitHub Actions
Course Contents:
GitHub Actions architecture
Workflow triggers & events
Multi-job & conditional workflows
Artifacts & job dependencies
Secrets, environments, and permissions
Python CI with unit tests & coverage
CodeQL & SonarCloud integration
Docker image build & registry push
Reusable workflow design patterns
Self-hosted runners & scaling
Kubernetes deployments with manifests
Kubernetes Runner Controller (ARC)
Selenium automation in CI
Custom runner container images
Helm chart lint, package & deploy
Creating and publishing custom GitHub Actions
All sections of this course are demonstrated live, with the goal of encouraging enrolled users to set up their own environments, complete the exercises, and learn through hands-on experience!