Welcome to your hands-on learning journey with GitHub Actions! This repository is designed for beginners and intermediate developers who want to master CI/CD automation.
- ✅ GitHub Actions fundamentals (workflows, jobs, steps)
- ✅ Automating builds and tests
- ✅ CI/CD pipeline creation
- ✅ Deploying applications to Azure App Service
- ✅ Working with secrets and environment variables
- ✅ Real-world workflow examples
- Beginners to CI/CD
- Developers wanting to automate their workflows
- Students learning DevOps practices
- Anyone interested in GitHub Actions
- A GitHub account
- Git installed locally
- Node.js v16+ installed
- (Optional) Azure account for deployment tasks
-
Fork this repository
# Click "Fork" button on GitHub -
Clone your fork
git clone https://github.com/YOUR-USERNAME/github-actions-learning.git cd github-actions-learning -
Install dependencies for sample app
cd sample-app npm install npm startVisit
http://localhost:3000- you should see the welcome page! -
Run tests locally
npm testAll tests should pass ✅
Getting started immediately:
- Fork the repository
- Clone:
git clone https://github.com/YOUR-USERNAME/github-actions-learning.git - Install:
cd sample-app && npm install - Run:
npm start(visit http://localhost:3000) - Test:
npm test
Go through these in order in the docs/ folder:
- 01-what-is-github-actions.md - Concepts & basics (10 min)
- 02-workflow-basics.md - YAML syntax & structure (15 min)
- 03-triggers-and-events.md - When workflows run (10 min)
- 04-jobs-and-steps.md - Execution model (15 min)
- 05-secrets-and-env.md - Security & configuration (10 min)
- 06-build-and-test.md - CI/CD patterns (15 min)
- 07-deploy-to-azure.md - Cloud deployment (10 min)
Follow TASKS.md for 10+ hands-on exercises organized by difficulty:
| Level | Tasks | Time | Skills |
|---|---|---|---|
| 🌟 Beginner | 1-3 | 30 min | Fundamentals & basics |
| ⭐⭐ Intermediate | 4-7 | 1-2 hours | Workflow creation & automation |
| ⭐⭐⭐ Advanced | 8-10 | 2-3 hours | Production-ready patterns |
Three production-ready workflows to learn from:
- hello-world.yml - Basic workflow, manual triggers
- build-test.yml - CI/CD pipeline with matrix testing
- deploy-azure-app-service.yml - Production deployment
Complete tasks at each level and submit your work to earn prestigious badges!
Complete Tasks 1-3
Steps:
- Complete all Beginner tasks in TASKS.md
- Take screenshots of successful workflow runs
- Fork the repo → Create branch
working-beginner-yourname - Create file
.github/submissions/beginner-yourname.mdwith evidence - Commit → Push → Create Pull Request
- Submit link via 🎖️ Badge Submission issue (select "Beginner")
- Automatic labels applied:
submission,beginner,pending-review - Auto-assigned to reviewer for approval
Proof needed:
- Task 1: Hello World workflow running ✅
- Task 2: Workflow triggered by push event ✅
- Task 3: Local tests passing with npm test ✅
Complete Tasks 4-7
Steps:
- Complete all Intermediate tasks in TASKS.md
- Gather workflow execution screenshots and logs
- Fork the repo → Create branch
working-intermediate-yourname - Create file
.github/submissions/intermediate-yourname.mdwith evidence - Commit → Push → Create Pull Request
- Submit link via 🎖️ Badge Submission issue (select "Intermediate")
- Automatic labels applied:
submission,intermediate,pending-review - Auto-assigned to reviewer for approval
Proof needed:
- Task 4: Custom workflow running on develop branch ✅
- Task 5: Environment variables displaying in logs ✅
- Task 6: GitHub secrets access (masked in logs) ✅
- Task 7: Matrix testing across 3 Node versions in parallel ✅
Complete Tasks 8-10
Steps:
- Complete all Advanced tasks in TASKS.md
- Gather comprehensive screenshots and workflow logs
- Fork the repo → Create branch
working-advanced-yourname - Create file
.github/submissions/advanced-yourname.mdwith evidence - Commit → Push → Create Pull Request
- Submit link via 🎖️ Badge Submission issue (select "Advanced")
- Automatic labels applied:
submission,advanced,pending-review - Auto-assigned to reviewer for approval
Proof needed:
- Task 8: Artifacts uploaded & downloaded between jobs ✅
- Task 9: Conditional execution (deploy on main only) ✅
- Task 10: PR created with template & issue using template ✅
-
Fork the repo (click Fork button)
-
Clone your fork
git clone https://github.com/YOUR-USERNAME/github-actions-learning.git cd github-actions-learning -
Create working branch (use this naming:
working-<level>-<yourname>)git checkout -b working-beginner-john
-
Complete your tasks from TASKS.md and gather evidence (screenshots)
-
Create submission file in
.github/submissions/# Create this folder if it doesn't exist mkdir -p .github/submissions # Create file: beginner-john.md (for Beginner) # or: intermediate-john.md (for Intermediate) # or: advanced-john.md (for Advanced)
-
Add evidence to your file (screenshots, workflow links, etc.)
-
Commit your changes
git add .github/submissions/beginner-john.md git commit -m "feat: add beginner badge submission" git push origin working-beginner-john -
Create Pull Request on GitHub with your branch
-
Submit Tracking Issue via 🎖️ Badge Submission
- Select your level (Beginner/Intermediate/Advanced)
- Paste your PR link
- Labels & assignment happen automatically!
That's it! 🎉 Automatic labels and assignment handle the rest.
| Step | Automatic | Manual |
|---|---|---|
| Level Selection | N/A | You choose in issue |
| Labels Added | ✅ Auto (submission + level) | N/A |
| Assignment | ✅ Auto (@nisalgunawardhana) | N/A |
| Review | Manual (2-5 days) | Reviewer checks evidence |
| Feedback | Comments on PR | If revisions needed |
| Approval | Issue closed | Badge awarded! 🏅 |
Create a simple markdown file with your evidence:
# Beginner Badge Submission - Your Name
**Date:** January 2026
**Status:** Submitted for Review
## Tasks Completed
- [x] Task 1: Run Your First Workflow
- [x] Task 2: Understand Workflow Triggers
- [x] Task 3: Build and Test Locally
## Evidence
### Task 1: Hello World Workflow
[Screenshot showing successful workflow run]
### Task 2: Push Trigger
[Screenshot showing workflow triggered automatically on push]
### Task 3: Local Tests
[Screenshot showing npm test output - all passing]
## Notes
Any challenges faced or additional context.
---
Submitted & ready for review! ✅That's all you need! No complex templates, just clear evidence.
github-actions-learning/
├── README.md # Main guide (this file)
├── TASKS.md # All learning tasks (10+)
├── CONTRIBUTING.md # How to contribute
├── LICENSE # MIT License
│
├── docs/ # Learning documentation
│ ├── 01-what-is-github-actions.md
│ ├── 02-workflow-basics.md
│ ├── 03-triggers-and-events.md
│ ├── 04-jobs-and-steps.md
│ ├── 05-secrets-and-env.md
│ ├── 06-build-and-test.md
│ └── 07-deploy-to-azure.md
│
├── images/ # Digital badges
│ ├── Beginner.png
│ ├── Intermediate.png
│ └── Advanced.png
│
├── .github/
│ ├── workflows/ # Example workflows
│ │ ├── hello-world.yml
│ │ ├── build-test.yml
│ │ └── deploy-azure-app-service.yml
│ ├── submissions/ # Your badge submissions go here
│ ├── ISSUE_TEMPLATE/
│ │ ├── badge_submission.md # 🎖️ Submit badge (auto-labels & assigns!)
│ │ ├── bug_report.md # Report bugs
│ │ ├── feature_request.md # Suggest improvements
│ │ ├── documentation.md # Improve docs
│ │ └── question.md # Ask questions
│ └── PULL_REQUEST_TEMPLATE.md # PR template
│
└── sample-app/ # Sample Node.js app
├── src/server.js
├── tests/server.test.js
├── package.json
└── README.md
-
Preparation (5 min)
- Fork repository
- Clone to your machine
- Setup sample app
-
Study (45-60 min)
- Read documentation in docs/ folder
- Understand concepts
- Review example workflows
-
Practice (2-4 hours)
- Complete TASKS.md exercises
- Run workflows
- Modify and experiment
-
Submit (10 min)
- Create submission file with evidence
- Push to GitHub
- Create PR and submit tracking issue
- Auto-labels and auto-assigns!
-
Review (2-5 days)
- Reviewer checks your work
- Feedback if needed
- Badge awarded! 🏅
-
Setup
- Clone this repository to your organization
- Share link with team/students
-
Students Fork & Learn
- Each student forks the repo
- Creates
working-*branch - Completes tasks locally
-
Submit via PR
- Creates submission file
- Opens PR on main repo
- Submits tracking issue with level selection
-
Auto-Organization
- Labels apply automatically (
submission,beginner/intermediate/advanced) - Assignment automatic
- Reviewers can focus on quality
- Labels apply automatically (
-
Feedback & Approval
- Reviewer provides feedback
- Student makes revisions if needed
- Badge awarded on approval
| # | Task | Time | What You Learn |
|---|---|---|---|
| 1 | Run Your First Workflow | 5 min | Trigger workflows manually, read logs |
| 2 | Understand Workflow Triggers | 10 min | Automatic triggers on push |
| 3 | Build and Test Locally | 15 min | Run app & tests locally |
Submit: 🎖️ Beginner Badge Issue → Select "Beginner" → Auto-labels & assigns!
| # | Task | Time | What You Learn |
|---|---|---|---|
| 4 | Create a Custom Workflow | 15 min | Build workflows from scratch |
| 5 | Add Environment Variables | 10 min | Configure with env vars |
| 6 | Use GitHub Secrets | 10 min | Handle sensitive data securely |
| 7 | Matrix Testing | 15 min | Test multiple Node versions |
Submit: 🎖️ Intermediate Badge Issue → Select "Intermediate" → Auto-labels & assigns!
| # | Task | Time | What You Learn |
|---|---|---|---|
| 8 | Upload and Download Artifacts | 20 min | Share data between jobs |
| 9 | Conditional Execution | 15 min | Run steps conditionally |
| 10 | Create a PR and Use Issue Templates | 20 min | Contribute to projects |
Submit: 🎖️ Advanced Badge Issue → Select "Advanced" → Auto-labels & assigns!
- Challenge 1: Deploy to Azure - Production deployment
- Challenge 2: Add Code Coverage - Quality metrics
- Challenge 3: Custom Action - Reusable automation
File: .github/workflows/hello-world.yml
name: Hello World
on: push
jobs:
hello:
runs-on: ubuntu-latest
steps:
- run: echo "Hello, GitHub Actions!"Learn: Basic workflow structure, triggers, steps
Related Tasks: Task 1, Task 2
File: .github/workflows/build-test.yml
Uses matrix testing across Node versions, installs dependencies, runs tests.
Learn: Matrix strategies, dependencies, caching
Related Tasks: Task 3, Task 7
File: .github/workflows/deploy-azure-app-service.yml
Builds and deploys app to Azure App Service.
Learn: Production deployment, secrets, conditional execution
Related Tasks: Task 6, Challenge 1
| Doc | Topics | Duration | Level |
|---|---|---|---|
| 01-what-is-github-actions.md | What & why GitHub Actions | 10 min | Beginner |
| 02-workflow-basics.md | Workflow structure & YAML | 15 min | Beginner |
| 03-triggers-and-events.md | When workflows run | 10 min | Beginner |
| 04-jobs-and-steps.md | Jobs, steps, runners | 15 min | Intermediate |
| 05-secrets-and-env.md | Configuration & security | 10 min | Intermediate |
| 06-build-and-test.md | CI/CD pipelines | 15 min | Intermediate |
| 07-deploy-to-azure.md | Azure deployment | 10 min | Advanced |
Total Learning Time: ~1.5 hours of documentation
Total Task Time: 3-6 hours of hands-on practice
- Start sequentially - Don't skip around
- Read the docs first - Foundation matters
- Run the examples - See it in action
- Modify workflows - Experiment & break things
- Read the logs - GitHub Actions logs tell you everything
- Add comments - Document what you learn
- Screenshot everything - For badge submission
- Take your time - Quality > Speed
- Experiment with modifications - "What if I..."
- Get stuck? - Create a Question issue
- Found a problem? - Report Bug report
- Create clear submission files - Organize evidence well
- Use descriptive commit messages - Help reviewers understand
- Follow branch naming -
working-level-yourname - Set level in issue - Triggers auto-labels
- Link your PR - Include it in submission issue
If you find issues or have improvements:
-
Report Issues
- Use bug_report.md
- Use feature_request.md
- Use documentation.md
-
Contribute Code
- Fork repository
- Create branch:
feature/your-feature - Make changes
- Create PR using PULL_REQUEST_TEMPLATE.md
- See CONTRIBUTING.md for details
-
Share Knowledge
- Improve documentation
- Create clearer examples
- Help others in issues
- Check Documentation - Start with docs/ folder
- Review Examples - Look at workflows in .github/workflows/
- Check TASKS.md - Find similar examples
- Create Issue - Use question.md template
- Contact Maintainer - @nisalgunawardhana
Q: My workflow isn't running?
A: Check the trigger event. See 03-triggers-and-events.md
Q: How do I use secrets safely?
A: See 05-secrets-and-env.md
Q: How do I deploy to Azure?
A: See 07-deploy-to-azure.md and Challenge 1
Start → Learn → Complete Tasks → Create Branch → Submit File
→ Push PR → Submit Issue → Auto-Labels & Assign → Review → Badge! 🏅
- You choose level in badge submission issue
- System auto-adds labels -
submission,beginner/intermediate/advanced - System auto-assigns - @nisalgunawardhana
- Reviewer reviews - 2-5 days
- Feedback or approval - You're notified
- Badge awarded! - Congratulations! 🎉
Just select your level in the issue → Everything else is automatic!
- 📚 7 Learning Modules in docs/
- 🔧 3 Example Workflows ready to use
- 📝 10+ Hands-On Tasks organized by level
- 💻 Sample Node.js App with tests
- 📄 Multiple Issue Templates for contributions
- 🎖️ Badge System with auto-organization
This project is licensed under the MIT License - see the LICENSE file for details.
- ⭐ Star this repository
- 🔀 Share with friends/colleagues
- 📢 Tell others about it
- 🤝 Contribute improvements
- 💬 Provide feedback
Ready to get started? Begin with setup above or jump to TASKS.md! 🚀
Questions? Create an ❓ Question Issue
Happy Learning! 🎓
