Skip to content

This tool allows an organization to manage users, and their association to a public GitHub, and a private GitHub enterprise (for InnerSource.)

License

Notifications You must be signed in to change notification settings

Avanade/gh-management

Repository files navigation

gh-management

This tool allows an organization to manage users, and their association to a public GitHub, and a private GitHub enterprise (for InnerSource.)

Commitizen friendly GitHub issues GitHub GitHub Repo stars Contributor Covenant Incubating InnerSource

Overview

This project contains a PowerApp, which is the main entry point for the application. Backend functionality is provided through a Go application, which handles associations with GitHub, and events (including leavers.)

Microsoft has an excellent GitHub management portal to allow for self-service at scale - but this provides significantly more functionality than some organizations require.

It's recommended to call the leaving API as part of your JML process when users leave the organisation, but a Power Automate example is provided as an alternative (this is significantly less performant.)

This repository allows for basic self-service and automation of common workflows using PowerApps for:

  • Automatically
    • Ensuring all users on GitHub are active employees
    • Checking each repository has an active business sponsor
    • Checking each repository has mandatory code scans
  • Self-service
    • Request to join the GitHub organization
    • Request a new repository, and tracking of the ticket through approvals
    • Request permission for a code contribution of <50 lines

Architecture Overview

Architecture Diagram

Example Call Flow

sequenceDiagram
  participant Client
  participant Business Logic
  participant Database Service
  participant Database Provider
  participant GitHubAPI Service
  participant GitHubAPI
  Client->>Business Logic: HTTP request
  Business Logic->>Business Logic: input validation
  Business Logic->>Database Service: data request
  Database Service->>Database Provider: execute stored procedure
  Database Provider->>Database Service: raw data result
  Database Service->>Database Service: parse raw data
  Database Service->>Business Logic: parsed data
  Business Logic->>GitHubAPI Service: GitHubAPI request
  GitHubAPI Service->>GitHubAPI Service: Prepare request
  GitHubAPI Service->>GitHubAPI: Execute API call
  GitHubAPI->>GitHubAPI Service: raw data result
  GitHubAPI Service->>GitHubAPI Service: parse raw data
  GitHubAPI Service->>Business Logic: parsed data
  Business Logic->>Business Logic:data calculations/transforms
  Business Logic->>Business Logic: package data per user-facing contract
  Business Logic->>Client: Request result
Loading

Licensing

gh-management is available under the MIT Licence.

Solutions Referenced

Documentation

The docs folder contains more detailed documentation, along with setup instructions.

Contact

Feel free to raise an issue on GitHub, or see our security disclosure policy.

Contributing

Contributions are welcome. See information on contributing, as well as our code of conduct.

If you're happy to follow these guidelines, then check out the getting started guide.

Who is Avanade?

Avanade is the leading provider of innovative digital and cloud services, business solutions and design-led experiences on the Microsoft ecosystem, and the power behind the Accenture Microsoft Business Group.

About

This tool allows an organization to manage users, and their association to a public GitHub, and a private GitHub enterprise (for InnerSource.)

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks