Skip to content

kumparan/workflow-templates

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 

Repository files navigation

GitHub Actions Reusable Workflows

This directory contains universal GitHub Actions reusable workflows for CI/CD pipeline orchestration.

πŸ“š Documentation

Document Purpose
QUICKSTART.md 5-minute setup guide
WORKFLOWS_README.md Complete reference documentation
USAGE_EXAMPLE.md Real-world usage examples

πŸ“ Workflows

All workflows are reusable (via uses: statement) and support secrets via secrets: inherit.

Reusable Workflows

workflows/
β”œβ”€β”€ prepare.yml              # Extract build info & environment
β”œβ”€β”€ build.yml                # Build Docker image
β”œβ”€β”€ update-vault.yml         # Update vault secrets
β”œβ”€β”€ deploy.yml               # Deploy to ArgoCD/Spinnaker
β”œβ”€β”€ notify-success.yml       # Send success notification
β”œβ”€β”€ notify-failure.yml       # Send failure notification
β”œβ”€β”€ clean-up-tag.yml         # Delete staging tags
└── cicd-pipeline.yml        # Main orchestrator (template)

πŸš€ Quick Start

1. Copy orchestrator to your repository:

# .github/workflows/cicd-pipeline.yml
uses: kumparan/cicd-template/.github/workflows/prepare.yml@main

2. Configure secrets in GitHub (9 secrets)

3. Push a tag:

git tag v1.0.0
git push origin v1.0.0

For detailed setup, see QUICKSTART.md

🎯 Supported Projects

  • βœ… BACKEND (comment-service, imagor, discovery-service, etc)
  • βœ… FRONTEND (kumparan-mobile-app, web-text-editor, etc)
  • βœ… DATA (search-service-data, mage-service, etc)
  • βœ… QA (karate-graphql, remote-robo, etc)
  • βœ… SRE (custom services)

🏷️ Tag Patterns

v1.0.0           β†’ Production (kept)
production-*     β†’ Production (kept)
staging-*        β†’ Staging (auto-deleted)
sre-*           β†’ Staging (auto-deleted)

πŸ” Required Secrets

AWS_ACCESS_KEY_ID          # AWS access key
AWS_SECRET_ACCESS_KEY      # AWS secret key
AWS_ACCOUNT_ID             # AWS account number
AWS_DEFAULT_REGION         # AWS region (us-east-1)
ARGOCD_USERNAME            # ArgoCD user
ARGOCD_PASSWORD            # ArgoCD password
VAULT_UPDATE_TOKEN         # Vault API token
SLACK_BOT_TOKEN            # Slack bot token
SLACK_WEBHOOK_URL          # Slack webhook

πŸ“Š Workflow Diagram

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Git Tag Push                              β”‚
β”‚        (v1.0.0 | production-* | staging-* | sre-*)          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
               β–Ό
         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β”‚  prepare.yml β”‚ ◄─ Extract info, determine environment
         β”‚              β”‚
         β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
                β”‚ outputs: build_tag, environment, service_name
                β”‚
      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
      β–Ό                      β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚build.yml β”‚          β”‚update-vault β”‚ ◄─ Parallel
  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”˜          β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
         β”‚                     β”‚
         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                   β–Ό
            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
            β”‚ deploy.yml  β”‚ ◄─ Deploy to ArgoCD/Spinnaker
            β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
                   β”‚
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β–Ό                             β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚notify-success.ymlβ”‚  OR  β”‚notify-failure β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
          β”‚                        β”‚
          β–Ό                        β–Ό
      [Slack]                  [Slack]
          β”‚
          β–Ό
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚clean-up-tag  β”‚ ◄─ Delete tag if staging
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ”— Integration

Each reusable workflow is called with uses: and can pass inputs/secrets:

jobs:
  my-job:
    uses: kumparan/cicd-template/.github/workflows/prepare.yml@main
    with:
      project: BACKEND
    secrets:
      VAULT_UPDATE_TOKEN: ${{ secrets.VAULT_UPDATE_TOKEN }}

πŸ“– Learn More

🀝 Contributing

To update these workflows:

  1. Create a new branch
  2. Edit workflows in .github/workflows/
  3. Test in your repository
  4. Create Pull Request to main
  5. Merge (all repos will pick up changes on next deployment)

πŸ“ž Support

Questions or issues?

  • πŸ’¬ Ask in #sre-internal Slack
  • πŸ“§ Email SRE team
  • πŸ› Create GitHub issue in cicd-template repo

Latest Update: April 2026
Status: Production Ready βœ…

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors