• 
      

    Add GitHub App connectivity.

    Review Request #15227 — Created Aug. 13, 2026 and submitted

    Information

    Review Board
    release-9.x

    Reviewers

    This change adds the connection flow and UI for using GitHub Apps. This
    involves a new set of views that deal with the mechanics of triggering
    the app creation, processing the result, and triggering an app install.

    This also includes a BaseHostingServiceConnectUI subclass for GitHub
    that wires all of that into the connect wizard and provides some custom
    UI for the GitHub entry in the connected services list.

    • Connected a GitHub App and installed it into multiple organizations.
    • Tested all aspects of the wizard flow, including creation of the app
      and reassignment of any PAT-based repositories after app install.
    • Verified that API access works correctly when authenticating using the
      app tokens.
    • Ran unit tests.
    Summary ID
    Add GitHub App connectivity.
    This change adds the connection flow and UI for using GitHub Apps. This involves a new set of views that deal with the mechanics of triggering the app creation, processing the result, and triggering an app install. This also includes a BaseHostingServiceConnectUI subclass for GitHub that wires all of that into the connect wizard and provides some custom UI for the GitHub entry in the connected services list. Testing Done: - Connected a GitHub App and installed it into multiple organizations. - Tested all aspects of the wizard flow, including creation of the app and reassignment of any PAT-based repositories after app install. - Verified that API access works correctly when authenticating using the app tokens. - Ran unit tests.
    yuvyttvstzusktvqqtsquwwkvvzuwqmz
    Description From Last Updated

    This is missing a "Version Added".

    chipx86 chipx86

    This is missing the full module path.

    chipx86 chipx86

    Can we sort this in alphabetical order?

    chipx86 chipx86

    These are kind of jumbled. The github ones should go together. Probably easiest just to sort them.

    chipx86 chipx86

    Can we sort these?

    chipx86 chipx86

    I'm assuming one of the follow-up changes removes this (or it's meant to be removed in this change). But maybe …

    chipx86 chipx86

    Can we assert the entirety of github_app so it's clear what tests are affected if need to add to the …

    chipx86 chipx86

    Can we sort alphabetically?

    chipx86 chipx86

    Can we pull accounts[0] out into a variable to avoid the repeated indexes?

    chipx86 chipx86

    Can we pull installations[0] out into a variable to avoid the repeated indexes?

    chipx86 chipx86

    For here and elsewhere (I forget where else I saw these), Django provides a utility. The class can mix in …

    chipx86 chipx86
    david
    maubin
    1. Ship It!
    2. 
        
    chipx86
    1. 
        
    2. reviewboard/hostingsvcs/github/client.py (Diff revision 2)
       
       
       
       
      Show all issues

      This is missing a "Version Added".

    3. Show all issues

      This is missing the full module path.

    4. reviewboard/hostingsvcs/github/service.py (Diff revision 2)
       
       
       
       
      Show all issues

      Can we sort this in alphabetical order?

    5. reviewboard/hostingsvcs/github/service.py (Diff revision 2)
       
       
       
       
       
      Show all issues

      These are kind of jumbled. The github ones should go together. Probably easiest just to sort them.

    6. reviewboard/hostingsvcs/github/views.py (Diff revision 2)
       
       
       
       
      Show all issues

      Can we sort these?

    7. reviewboard/hostingsvcs/github/views.py (Diff revision 2)
       
       
      Show all issues

      I'm assuming one of the follow-up changes removes this (or it's meant to be removed in this change). But maybe a good flag would be not settings.PRODUCTION.

      1. Yes, this will be removed soon.

    8. reviewboard/hostingsvcs/tests/github/test_app_views.py (Diff revision 2)
       
       
       
       
       
       
       
       
       
      Show all issues

      Can we assert the entirety of github_app so it's clear what tests are affected if need to add to the state? (An example might be a KID reference for any encryption in the future as we move away from encrypt_password.)

    9. Show all issues

      Can we sort alphabetically?

    10. Show all issues

      Can we pull accounts[0] out into a variable to avoid the repeated indexes?

    11. Show all issues

      Can we pull installations[0] out into a variable to avoid the repeated indexes?

    12. reviewboard/hostingsvcs/tests/github/test_app_views.py (Diff revision 2)
       
       
       
       
       
       
       
       
      Show all issues

      For here and elsewhere (I forget where else I saw these), Django provides a utility.

      The class can mix in django.contrib.messages.test.MessagesTestMixin and then you can do:

      self.assertMessages(
          response,
          '<message here>')
      
    13. 
        
    david
    chipx86
    1. Ship It!
    2. 
        
    david
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to release-9.x (44b6095)