{"id":21980210,"url":"https://github.com/avanade/gh-management","last_synced_at":"2025-04-30T04:37:36.025Z","repository":{"id":247353559,"uuid":"415945641","full_name":"Avanade/gh-management","owner":"Avanade","description":"This tool allows an organization to manage users, and their association to a public GitHub, and a private GitHub enterprise (for InnerSource.)","archived":false,"fork":false,"pushed_at":"2025-04-21T08:42:21.000Z","size":4036,"stargazers_count":6,"open_issues_count":65,"forks_count":1,"subscribers_count":1,"default_branch":"dev","last_synced_at":"2025-04-26T16:49:22.907Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Avanade.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-11T13:47:14.000Z","updated_at":"2025-04-21T08:19:54.000Z","dependencies_parsed_at":"2024-09-17T09:47:32.668Z","dependency_job_id":"8b3c34d0-e0df-4b44-a042-1e49b7497a32","html_url":"https://github.com/Avanade/gh-management","commit_stats":null,"previous_names":["avanade/gh-management"],"tags_count":0,"template":false,"template_full_name":"Avanade/avanade-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Avanade%2Fgh-management","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Avanade%2Fgh-management/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Avanade%2Fgh-management/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Avanade%2Fgh-management/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Avanade","download_url":"https://codeload.github.com/Avanade/gh-management/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251644763,"owners_count":21620624,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-29T17:09:58.274Z","updated_at":"2025-04-30T04:37:36.008Z","avatar_url":"https://github.com/Avanade.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gh-management\n\u003e This tool allows an organization to manage users, and their association to a public GitHub, and a private GitHub enterprise (for InnerSource.)\n\n[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)\n![GitHub issues](https://img.shields.io/github/issues/Avanade/gh-management)\n![GitHub](https://img.shields.io/github/license/Avanade/gh-management)\n![GitHub Repo stars](https://img.shields.io/github/stars/Avanade/gh-management?style=social)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](https://avanade.github.io/code-of-conduct/)\n[![Incubating InnerSource](https://img.shields.io/badge/Incubating-Ava--Maturity-%23FF5800?labelColor=yellow)](https://avanade.github.io/maturity-model/)\n\n## Overview\n\u003c!-- TODO: Update overview --\u003e\n\nThis 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.)\n\nMicrosoft has an excellent [GitHub management portal](https://github.com/microsoft/opensource-portal) to allow for self-service at scale - but this provides significantly more functionality than some organizations require.\n\nIt'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.)\n\nThis repository allows for basic self-service and automation of common workflows using PowerApps for:\n- Automatically\n  - Ensuring all users on GitHub are active employees\n  - Checking each repository has an active business sponsor\n  - Checking each repository has mandatory code scans\n- Self-service\n  - Request to join the GitHub organization\n  - Request a new repository, and tracking of the ticket through approvals\n  - Request permission for a code contribution of \u003c50 lines\n\n## Architecture Overview\n![Architecture Diagram](./docs/diagrams/go-gh-mgmt.png)\n\n\n## Example Call Flow\n\n  ```mermaid\n  sequenceDiagram\n    participant Client\n    participant Business Logic\n    participant Database Service\n    participant Database Provider\n    participant GitHubAPI Service\n    participant GitHubAPI\n    Client-\u003e\u003eBusiness Logic: HTTP request\n    Business Logic-\u003e\u003eBusiness Logic: input validation\n    Business Logic-\u003e\u003eDatabase Service: data request\n    Database Service-\u003e\u003eDatabase Provider: execute stored procedure\n    Database Provider-\u003e\u003eDatabase Service: raw data result\n    Database Service-\u003e\u003eDatabase Service: parse raw data\n    Database Service-\u003e\u003eBusiness Logic: parsed data\n    Business Logic-\u003e\u003eGitHubAPI Service: GitHubAPI request\n    GitHubAPI Service-\u003e\u003eGitHubAPI Service: Prepare request\n    GitHubAPI Service-\u003e\u003eGitHubAPI: Execute API call\n    GitHubAPI-\u003e\u003eGitHubAPI Service: raw data result\n    GitHubAPI Service-\u003e\u003eGitHubAPI Service: parse raw data\n    GitHubAPI Service-\u003e\u003eBusiness Logic: parsed data\n    Business Logic-\u003e\u003eBusiness Logic:data calculations/transforms\n    Business Logic-\u003e\u003eBusiness Logic: package data per user-facing contract\n    Business Logic-\u003e\u003eClient: Request result\n  ```\n\n## Licensing\ngh-management is available under the [MIT Licence](./LICENCE).\n\n## Solutions Referenced\n\u003c!-- TODO: Update referenced solutions --\u003e\n- [Microsoft PowerApps](https://docs.microsoft.com/en-us/powerapps/WT.mc_id=AI-MVP-5004204)\n- [Microsoft PowerAutomate](https://docs.microsoft.com/en-us/power-automate/?WT.mc_id=AI-MVP-5004204)\n\n## Documentation\nThe `docs` folder contains [more detailed documentation](./docs/start-here.md), along with setup instructions.\n\n## Contact\nFeel free to [raise an issue on GitHub](https://github.com/Avanade/gh-management/issues), or see our [security disclosure](./SECURITY.md) policy.\n\n## Contributing\nContributions are welcome. See information on [contributing](./CONTRIBUTING.md), as well as our [code of conduct](https://avanade.github.io/code-of-conduct/).\n\nIf you're happy to follow these guidelines, then check out the [getting started](./docs/start-here.md) guide.\n\n## Who is Avanade?\n\n[Avanade](https://www.avanade.com) 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.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favanade%2Fgh-management","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Favanade%2Fgh-management","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favanade%2Fgh-management/lists"}