Skip to content

Instantly share code, notes, and snippets.

@clemlesne
Created October 12, 2023 18:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save clemlesne/ff3a5e87f13bcf9b68599ec8463a5580 to your computer and use it in GitHub Desktop.
Save clemlesne/ff3a5e87f13bcf9b68599ec8463a5580 to your computer and use it in GitHub Desktop.
---
title: Deployment workflow
---
flowchart LR
    dev(["Developer"])

    subgraph azdo["Azure DevOps"]
        repo["Azure Repos"]
        pipeline["Azure Pipelines"]

        subgraph runner["Pipeline runner\n(Kubernetes, Windows, Linux, macOS, ...)"]
            create_release["Create release"]
            publish["Publish binaries"]
            rollback["Rollback deployment"]
            watch["Watch for monitoring alerts\n(Azure Monitor, Prometheus, ...)"]

            subgraph build["Build"]
                binaries["Build binaries\n(Visual Studio, Maven, ...)"]
                container["Build container\n(Docker, Azure Container Registry, ...)"]
                infra["Build infrastructure\n(Helm Chart, ...)"]
            end

            subgraph sast["Static Application Security Testing"]
                sast_code["Static code analysis\n(Semgrep, SonarQube, ...)"]
                sast_credentials["Avoid credentials in Git\n(Trufflehog)"]
                sast_vulnerabilities["Vulnerabilities\n(OWASP Dependency Check, Snyk, ...)"]
            end

            subgraph integration_test["Integration tests"]
                dast["Dynamic security tests\n(OWASP ZAP)"]
                load["Load tests\n(JMeter, Azure Load Testing, K6, ...)"]
                retrocompatibility["API retrocompatibility tests\n(Playwright, Postman, ...)"]
                ui["UI tests\n(Playwright, Selenium, ...)"]
            end

            subgraph static_test["Static tests"]
                coverage["Code coverage"]
                lint["Lint\n(ESLint, Prettier, ...)"]
                unit["Unit tests\n(Jest, Mocha, ...)"]
            end

            subgraph deploy["Deploy"]
                vm["Configure VM\n(Ansible, PowerShell DSC, SCCM, ...)"]
                api["API-based services\n(Terraform, Bicep, Pulumi, ...)"]
            end
        end
    end

    deploy --> integration_test
    build --> publish
    create_release --> deploy
    integration_test -- If fails --> rollback
    deploy --> watch
    dev -- Push code --> repo
    pipeline -. Watch for new commit .-> repo
    pipeline -- Run --> runner
    publish --> create_release
    sast --> static_test
    static_test --> build
    watch -- If fails --> rollback
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment