Introduction
- Course Introduction
- Problem Statement Meeting with Dasher Team
- Introducing Github Actions
- Basics of CI CD
- Create amp Explore GitHub Account
Continuous Integration with GitHub Actions
- Project Status Meeting 1
- NodeJS Application Overview
- Run and Test NodeJS App on Local Machine
- Understanding DevOps Pipeline
- Clone Git Repo
- Workflow Configure Unit Testing
- ArchiveStore Unit Test Reports
- Run Unit Testing using Matrix Strategy
- Workflow Configure Code Coverage
- Github Action Expressions
- Using continue on error expression
- Using if expressions with Step contexts
- Cache Node Dependencies
- Invalidate Cache
- Workflow Docker Login
- Workflow Docker Build and Test
- Workflow Docker Push
- Workflow Login and Push to GHCR
- Project Status Meeting 2
- What are Job Containers
- What are Service Containers
- Run Unit Testing Job using a Service
- Run Code Coverage Job using a Container and Service
- Project Status Meeting 3
Continuous Deployment with GitHub Actions
- Understand Deployment Usecase
- Brief Overview on Kubernetes
- Workflow Setup Kubectl
- Workflow Configuring Kubeconfig file
- Workflow Replace Placeholders Tokens
- Workflow Create Secret and Deploy to Kubernetes Dev Environment
- Setting Output for Integration testing
- Understand Github Environments
- Create Dev Environment Secrets Environment Rules
- Modify Dev Deployment Job to use Environment tags
- Create Prod Environment Secrets Environment Rules
- Workflow Deploy to Kubernetes Prod Environment
- If Expressions and Pull Request
Reusable Workflows and Reporting
- Project Status Meeting 4
- Understanding Reusable Workflows
- Step 1 Configure new Reusable Workflow
- Step 2 Using Secrets in Reusable Workflow
- Step 3 Using Inputs in Reusable Workflow
- Step 4 Using Outputs in Reusable Workflow
- Project Status Meeting 5
- Prepare a Job for reporting
- Uploading Reports to AWS S3 Storage
- Slack Notify GitHub Action
Custom Actions
- What are Custom Actions
- Create a Composite Action
- Using a Composite Action in Workflow
- Create a Docker Action
- Using a Docker Action in Workflow
- Create a Javascript Action
- Sharing Custom Actions
- Using a Javascript Action in Workflow
Self Hosted Runner
- Types of Runners
- Installing a Self Hosted Runner
- Running Workflow on Self Hosted Runner
- Exploring Self Hosted Runner
- Uninstalling Self Hosted Runner
Security Guide
- Security hardening for GitHub Actions
- Risk of Script Injection Attack
- Mitigating Script Injection Attack
- Securing Secrets using HashiCorp Vault
- Adding a workflow status badge
GitHub Actions - Core Concepts
- GitHub Action Core Components
- Create and Run Workflow
- What are Actions
- Configure Checkout Action
- Multi Line commands and Executing Third Party Libraries
- Workflow to Generate ASCII Artwork
- Executing Shell Scripts in Workflow
- Workflow with multiple Jobs
- Execute multiple jobs in Sequence using needs
- Storing workflow data as artifacts
- Working with Variables at different levels
- Working with Repository Level Secrets
- Triggering a workflow
- Using Job concurrency
- Timeout for Jobs and Steps
- Using a matrix for your jobs
- Additional Matrix Configuration
- Access workflow context information
- Using if expression in Jobs
- Workflow Event Filters and Activity Types
- Cancelling and Skipping Workflows