Skip to content

WahbaMousa-DevOps/WahbaMousa-DevOps.github.io

Repository files navigation

Wahba Mousa – DevSecOps Portfolio Website (CI/CD + GitHub Pages)

GitHub Pages MIT License Security Rating SBOM

πŸ‘€ Created by: Wahba Mousa – Senior DevOps Engineer

  • CI/CD with GitHub Actions
  • Security-first architecture (CodeQL, Trivy, Gitleaks, SBOM)
  • Rolling deployment strategy
  • Branch protection enforcement via GitHub CLI

CI Pipeline Deploy to Production

πŸ—οΈ Architecture Overview: CI/CD + Security Flow

                β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                β”‚                GitHub Repo                  β”‚
                β”‚      WahbaMousa-DevOps.github.io            β”‚
                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚
            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
            β–Ό                  β–Ό                    β–Ό
     Pull Request        Direct Pushes         Staticman API
 (e.g., feature β†’ main)   (e.g., main)        (user comments form)
            β”‚                  β”‚                    β”‚
            β–Ό                  β–Ό                    β–Ό
    .github/workflows/  .github/workflows/     staticman.yml
    └─ CI triggers:     └─ Deploy triggers         β”‚
       test.yml             to staging/prod        β–Ό
       lint.yml             ───────────────►  _data/comments/ (via commit)
       trivy.yml
       codeql.yml
       scan.yml
       sbom.yml
       sbom-sign.yml
       lighthouse.yml

       coverage.yml
            β”‚
            β–Ό
 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚     CI & Security Checks (Parallel Jobs)     β”‚
 β”‚ - Trivy FS + Trivy Image                     β”‚
 β”‚ - Gitleaks + git-secrets                     β”‚
 β”‚ - CodeQL + Jest Coverage                     β”‚
 β”‚ - SEO + Accessibility + SBOM                 β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
            β”‚
            β–Ό
 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚        Auto-label/merge (PR Bot), Bad PR Filter            β”‚
 β”‚    └─ auto-label.yml, auto-merge.yml, bad-pr.yml           β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
            β”‚
            β–Ό
 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚     Branch Protection Enforcement  β”‚
 β”‚ └─ enforce-branch-protection.yml   β”‚
 β”‚    └─ Reads: branch-protection.yml β”‚
 β”‚    └─ Applies via Python/CLI       β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
            β”‚
            β–Ό
 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚      GitHub Pages Rolling Deployment (CD)                  β”‚
 β”‚ └─ deploy-page-staging.yml  β†’  "Success"                   β”‚
 β”‚ └─ deploy-page-production.yml  β†’  Environment              β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
            β”‚
            β–Ό
 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚             Public Website                   β”‚
 β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”‚
 β”‚  β”‚           wahba.aiopsvision.com    β”‚      β”‚
 β”‚  β”‚                                    β”‚      β”‚
 β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“ Note: sbom-image.yml and Cosign-based Docker image signing are included as modular references for future container-based pipelines. They are not active in this static GitHub Pages project.

🌐 Rolling Deployments

πŸš€ Technology Stack

Area Tools/Tech
Frontend Jekyll, GitHub Pages
CI/CD GitHub Actions, Environments, Artifacts
Security CodeQL, Trivy (FS), Gitleaks, Secret Scanning
Branching GitFlow (main, release, develop, etc.)
SBOM Anchore (CycloneDX), Syft (reference only)
Governance Branch protection rules, PR automation

πŸ”’ Security Architecture

Aligned with OWASP Standards

Area How You're Covered
Secrets in Code (A03:2021) gitleaks, git-secrets, secret.yml
Vulnerable Components (A06:2021) Trivy FS, Trivy Image, SBOM
Security Misconfig (A05:2021) GitHub branch protection, token management
Software Integrity (A08:2021) Cosign signing, SBOM attestation
CI/CD Exposure (A10:2021) Modular workflows + policy enforcement
OWASP CycloneDX SBOM format generated via sbom.yml, sbom-sign.yml

Verified Quality Metrics

Metric Status Notes
Code Coverage Enabled Reported via Jest + Codecov
Security Score A+ Equivalent Secret scanning, SBOM, image signing
Performance <2s load time Jekyll site + CDN = fast load
Accessibility Enabled Checked via axe-core CI workflow
SEO Score >90/100 Verified via Lighthouse CI audit

🌳 Git Branching Strategy

GitFlow Implementation

main        ← 🟦 Production Environment
β”œβ”€β”€ release ← 🟩 Staging Environment
    β”œβ”€β”€ develop       ← Integration / QA Branch
        β”œβ”€β”€ feature/* ← New Features
        β”œβ”€β”€ hotfix/*  ← Emergency Fixes
        └── bugfix/*  ← Bug Patches

swap.yml is used to promote release β†’ main after successful staging validation.

Branch Protection Rules

Main Branch ( Production)

Require PR review (1+)
Require code owner review
Require status checks to pass
Require branches up to date
Require conversation resolution
Require linear history
Lock branch (prevent bypass)
Restrict force pushes
Restrict deletions

Release Branch ( Staging β†’ Production Candidate)

Require PR review (1+)
Require code owner review
Require status checks to pass
Require branches up to date
Require conversation resolution
Require linear history
Lock branch (prevent bypass)
Restrict force pushes
Restrict deletions

πŸ”„ CI/CD Pipeline Architecture

Continuous Integration

Triggers: Push to [develop, feature/*, hotfix/*, release, main]

Stages:
  1. Build with Jekyll (or App Build)
  2. Unit Tests (Jest / npm test)
  3. Lint (Markdown, JS, etc.)
  4. Code Coverage + Lighthouse + SEO
  5. CodeQL Security Scan
  6. Trivy FS Scan (Source)
  7. Trivy Image Scan (Docker)
  8. SBOM Generation (Syft / Trivy)
  9. Image Signing (Cosign)
 10. Quality Gate Summary

πŸ”§ Local Development

Setup Instructions

# Clone repository
git clone https://github.com/WahbaMousa-DevOps/WahbaMousa-DevOps.github.io.git
cd WahbaMousa-DevOps.github.io

# Install dependencies
bundle install

# Run locally
bundle exec jekyll serve

# Access development server
http://localhost:4000

Development Workflow

# Create feature branch
git checkout -b feature/your-feature-name

# Make changes and test locally
bundle exec jekyll serve

# Run local quality checks
./scripts/local-lint.sh
./scripts/local-security-scan.sh

# Commit and push
git add .
git commit -m "feat: add new feature"
git push origin feature/your-feature-name

# Create pull request to develop branch

🀝 Contributing

Contribution Guidelines

  1. Fork the repository
  2. Create feature branch from develop
  3. Follow coding standards and security practices
  4. Ensure all quality gates pass
  5. Submit pull request with detailed description
  6. Code review and approval process
  7. Automated deployment to Staging
  8. promotion to Production

πŸ“¦ Designed and implemented by Wahba Mousa β€” Senior DevSecOps Engineer (2025) This repository serves as a real-world demonstration of CI/CD + DevSecOps excellence on GitHub.

πŸ“š Credits & License

Licensed under MIT

πŸ’¬ Feedback

If you have questions or want to learn how to build a similar site, feel free to:

About

πŸ“˜ DevOps Portfolio Website πŸ’‘

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published