Uh oh!
There was an error while loading. Please reload this page.
🚀 [Feature]: GitHub App connections now support parallel processing - #519
🚀 [Feature]: GitHub App connections now support parallel processing#519Marius Storhaug (MariusStorhaug) wants to merge 76 commits into
Conversation
…s and improve examples
- Created TEMPLATE.ps1 for Pester tests with a template structure. - Added Teams.Tests.ps1 to test GitHub Teams API functionalities including team creation, retrieval, updating, and deletion. - Introduced Users.Tests.ps1 to validate user-related API calls, including user retrieval and updates. - Implemented Variables.Tests.ps1 to manage GitHub repository variables, including setting, updating, and removing variables.
There was a problem hiding this comment.
Pull Request Overview
This PR enhances the Connect-GitHubApp function to support parallel processing of GitHub App installation connections, significantly improving performance when connecting to multiple installations. The changes introduce new parameter sets for handling pipeline input and parallel execution controls.
- Added parallel processing capabilities using
ForEach-Object -Parallelwith configurable throttle limits - Introduced new parameter set for accepting installation objects from pipeline input
- Added retry logic for context creation to improve reliability
Reviewed Changes
Copilot reviewed 2 out of 17 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| src/functions/public/Auth/Connect-GitHubApp.ps1 | Major refactoring to support parallel processing, new parameter sets, and recursive connections to installations |
| .github/PSModule.yml | Configuration updates to skip various test components in CI workflows |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
…e and improve parallel processing
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
0a4ce89 to
7212939Compare…reation and removing unnecessary Write-Host statements in Connect-GitHubApp
…missionDefinition class
…gic for module import in Connect-GitHubApp
…GitHubPermission class with equality and hash code methods
…ion comparison logic in GitHubAppInstallation class
…d adjusting property names
…n GitHubAppContext and GitHubAppInstallationContext
…ppContext and streamline app property initialization
…rEnterpriseOrganization function
…t-GitHubAppInstallationForAuthenticatedAppAsList function
…nstallationForAuthenticatedAppByID function
…pInstallation function for clarity
…ostName parameter for URL generation
…prove error handling
…lude URL, enhancing object creation efficiency across multiple functions.
…include App context, improving object creation clarity in installation retrieval functions.
…lly assign App object, improving flexibility in object creation. Update GitHubUser constructor to use null coalescing for bio and ensure direct assignment for followers and following properties.
… improved parallel processing of installations. Update context handling to utilize using scope for better variable access in parallel execution.
…use the correct module name, ensuring compatibility with the latest module structure.
… module context, improving module management and accessibility.
… variables for improved parallel processing and module version handling.
…cted installations for improved parallel processing in Connect-GitHubApp.
…ntext parameter handling in Connect-GitHubApp for enhanced performance.
…arameters to improve clarity and maintainability in Connect-GitHubApp.
…ext parameter handling for improved clarity and performance in Connect-GitHubApp.
…or revoking installation access tokens in GitHub App. 🚀 [Add]: Create Resolve-GitHubContext filter to resolve context into GitHubContext object for improved context handling. 🚀 [Add]: Introduce Set-GitHubContext function to set and store GitHub context in the vault for API authentication. 🚀 [Update]: Enhance Disconnect-GitHubAccount function to support wildcard context resolution for improved usability. 🚀 [Add]: Add Get-GitHubToken function to retrieve GitHub tokens from environment variables as plaintext or secure string.
f1b7971 to
46f54a0Compare…tallations for improved parallel processing in Connect-GitHubApp.
…r improved clarity in end processing of Connect-GitHubApp.
…t for controlling parallel thread usage during disconnection.
… removal from the vault with support for single and multiple contexts.
…into parallelConnect
…ailed output for GitHub app, configuration, and installation details.
… for enhanced debugging and logging during installation context.
…nstallation to streamline test execution.
…r pipeline usage in Connect-GitHubApp function.
…unctions to support multi-string and wildcard context resolution.
…ext variable usage in Remove-GitHubContext.
…ort-Object for unique sorting and improve debug output.
ad98f64 to
3dbdfc3Compare
Connecting to multiple GitHub App installations can now be done in parallel, significantly reducing wait time for environments with many installations. A new
-ThrottleLimitparameter controls the degree of parallelism, and installation objects can be piped directly into the connection function.New: Parallel app installation connections
Connect-GitHubAppnow processes multiple installations in parallel using PowerShell'sForEach-Object -Parallel. Use the new-ThrottleLimitparameter to control how many installations are connected simultaneously.New: Pipeline input for installations
Installation objects from
Get-GitHubAppInstallationcan now be piped directly toConnect-GitHubApp, enabling selective connection to specific installations without filtering inside the function.Changed: Retry logic for transient failures
Connection creation now includes retry logic to handle transient failures when generating access tokens, improving reliability in high-volume scenarios.
Technical Details
Connect-GitHubApp: Added-ThrottleLimitparameter andForEach-Object -Parallelprocessing for all installations, filtered targets, and piped installation objects.GitHubAppInstallationobjects.GitHubApp,GitHubAppInstallation,GitHubAppContext,GitHubPlan,GitHubOwnerand subtypes, and several private/public functions..github/PSModule.ymlupdated to adjust CI workflow settings.