Uh oh!
There was an error while loading. Please reload this page.
🚀 [Feature]: File distribution service for organization repositories - #6
Conversation
Co-authored-by: MariusStorhaug <17722253+MariusStorhaug@users.noreply.github.com>
Co-authored-by: MariusStorhaug <17722253+MariusStorhaug@users.noreply.github.com>
Co-authored-by: MariusStorhaug <17722253+MariusStorhaug@users.noreply.github.com>
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.
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.
Uh oh!
There was an error while loading. Please reload this page.
Co-authored-by: MariusStorhaug <17722253+MariusStorhaug@users.noreply.github.com>
Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details. Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
Uh oh!
There was an error while loading. Please reload this page.
Co-authored-by: MariusStorhaug <17722253+MariusStorhaug@users.noreply.github.com>
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
The Distributor service provides a centralized, convention-based mechanism for syncing shared files across all repositories in the PSModule organization. Repositories subscribe to file sets via organization-level custom properties (
TypeandSubscribeTo), and a scheduled GitHub Actions workflow automatically creates pull requests when managed files change. This is the first pilot release of the service.Convention-based file set structure
File sets are organized under a two-level folder hierarchy at
Repos/{Type}/{Selection}/, where each selection folder mirrors the root of a target repository. The folder structure itself is the configuration — no settings files are needed.The initial release includes file sets for two repository types:
Module (10 file sets): Custom Instructions, Prompts, Hooks, CODEOWNERS, dependabot.yml, PSModule Settings, Linter Settings, gitattributes, gitignore, License
Action (4 file sets): Custom Instructions, License, gitattributes, gitignore
Subscription model
Repositories opt in by setting two organization-level custom properties:
Type(single-select):Module,Action,Template,Workflow,Docs,OtherSubscribeTo(multi-select): Names matching the file set folders under the selected typeRepository admins manage their own subscriptions — no central configuration changes are needed to onboard a new repository.
Automated sync workflow
A daily scheduled workflow (also triggerable via
workflow_dispatch) authenticates as the PSModule Custo GitHub App, discovers file sets, queries repository subscriptions, and for each subscribing repository:managed-files/updatebranch⚙️ [Maintenance]: Sync managed files,NoReleaselabel)Repositories already in sync are skipped entirely. Existing PRs are updated in place via force-push.
GitHub Copilot hooks
The Hooks file set includes a complete GitHub Copilot agent hooks implementation with
hooks.jsonconfiguration and scripts forsessionStart,sessionEnd, anduserPromptSubmittedevents (both bash and PowerShell).What does not change
Files removed from a file set are not deleted from target repositories — they become unmanaged. The service only creates and updates files.