Skip to content

Conversation

MariusStorhaug
Copy link
Member

@MariusStorhaug MariusStorhaug commented Sep 17, 2025

Description

This pull request enhances the Connect-GitHubApp function to support parallel and recursive creation of connections to multiple GitHub App installations, improving scalability and performance. It also updates the documentation and parameter handling to reflect these new capabilities. The changes are grouped below by theme:

Parallel Processing & Scalability Improvements:

  • Added the ability to process multiple installations in parallel using the -ThrottleLimit parameter and PowerShell's parallel execution features (ForEach-Object -Parallel). This applies to all installations, filtered targets, and piped installation objects. [1] [2]
  • Introduced new parameter sets and updated existing ones to support pipeline input for installations, as well as parallel execution controls.

Documentation & Usability Updates:

  • Expanded the function's documentation and examples to describe parallel usage scenarios and the new -ThrottleLimit parameter. [1] [2] [3]

Robustness Enhancements:

  • Implemented retry logic when creating context objects, improving reliability in case of transient failures.

Configuration File Updates:

  • Updated .github/PSModule.yml to enable skipping of test results, source code, module builds, and documentation in CI workflows, aligning with the new parallel processing capabilities.

Type of change

  • 📖 [Docs]
  • 🪲 [Fix]
  • 🩹 [Patch]
  • ⚠️ [Security fix]
  • 🚀 [Feature]
  • 🌟 [Breaking change]

Checklist

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas

- 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.
@MariusStorhaug MariusStorhaug requested a review from a team as a code owner September 17, 2025 15:12
@Copilot Copilot AI review requested due to automatic review settings September 17, 2025 15:12
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 -Parallel with 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.

…reation and removing unnecessary Write-Host statements in Connect-GitHubApp
…GitHubPermission class with equality and hash code methods
…ion comparison logic in GitHubAppInstallation class
…n GitHubAppContext and GitHubAppInstallationContext
…ppContext and streamline app property initialization
…t-GitHubAppInstallationForAuthenticatedAppAsList function
…unused Installation parameter and updating App assignment to use GitHubApp directly.
…llationContext to streamline the class structure.
…itialization and allow URL override for improved flexibility.
…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.
…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.
…ailed output for GitHub app, configuration, and installation details.
… for enhanced debugging and logging during installation context.
…r pipeline usage in Connect-GitHubApp function.
…unctions to support multi-string and wildcard context resolution.
…ort-Object for unique sorting and improve debug output.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

🩹 [Patch]: Optimize Connect-GitHubApp and use parallel processing of access tokens

1 participant