Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Group Kiota PHP repositories #156

Open
andrueastman opened this issue Jul 4, 2024 · 6 comments
Open

Group Kiota PHP repositories #156

andrueastman opened this issue Jul 4, 2024 · 6 comments
Assignees

Comments

@andrueastman
Copy link
Member

Related to microsoft/kiota#4636 and microsoft/kiota-dotnet#238

As a language specific concern, we should look into the feasibility of grouping the repos and outline if this is not feasible in this issue.

@github-project-automation github-project-automation bot moved this to Needs Triage 🔍 in Kiota Jul 4, 2024
@andrueastman andrueastman moved this from Needs Triage 🔍 to Todo 📃 in Kiota Jul 10, 2024
@Ndiritu Ndiritu self-assigned this Aug 29, 2024
@baywet
Copy link
Member

baywet commented Sep 13, 2024

Whenever this is completed we should also:

@Ndiritu Ndiritu moved this from Todo 📃 to In Progress 🚧 in Kiota Oct 30, 2024
@Ndiritu
Copy link
Contributor

Ndiritu commented Nov 6, 2024

(Subject to future edits as investigation continues, but edits will be listed here)

Composer (dependency manager) supports linking between sub-projects, however Packagist (dependency repository) doesn't support deployments from sub-packages. Packagist expects a package to be hosted within a GitHub repository whose root folder contains a composer.json file. Reference

Currently, package deployment works like this, our PHP repos have a Packagist GitHub app set up & a webhook that triggers publishing to Packagist when a tag is created. The version of the packages is determined by the tag or adding a "version" property to the composer.json.

With a mono-repo, our limitation would be in the deployment process.

Various tools exist that split the mono-repo into repositories during deployment & pushes commits & tags to the new repos so that deployment happens.

Two major tools seem viable for this:

Mono-repo builder

which provides various CLI utilities to validate our dependency versions across sub-projects & release automations which we shouldn't need courtesy of release-please. It does the repo split using a release workflow with the monorepo-split-github-action & providing it with repo:write permissions to split the repository and publish. Mono-repo builder has ~3M+ installs & seems stable at v11.x

Splitsh-lite

which does only the repo subtree split and has been used by Google Cloud PHP mono-repo to deploy their various service libraries as separate packages ref. They augment this with their own custom scripts.

Mono-repo builder seems most viable however it still leaves us potentially with our individual repositories for abstractions, http etc but we can manage everything via a kiota-php repository.

Pending:

  • Prototype using Mono-repo builder to find any further pitfalls

@Ndiritu
Copy link
Contributor

Ndiritu commented Nov 6, 2024

Open to further feedback here @andrueastman, @baywet, @shemogumbe

@Ndiritu Ndiritu moved this from In Progress 🚧 to Todo 📃 in Kiota Nov 7, 2024
@baywet
Copy link
Member

baywet commented Nov 9, 2024

Thank you for the additional information.

So if I'm following things properly, in those scenarios we'd:

  • create a mono-repo.
  • migrate the "live" version of the code there.
  • setup some kind of automation to replicate onto existing repos. (so that packagist webhook is triggered, and the platform has "something to refer to")

Or am I missing anything here?

@Ndiritu
Copy link
Contributor

Ndiritu commented Nov 11, 2024

Yes, create a mono-repo. We could keep the current repos for the core libraries for to re-use the current Packagist webhook configs.
I will confirm all details once I run a PoC within the week.

@baywet
Copy link
Member

baywet commented Nov 11, 2024

Thanks! The two things I'd want us to get clarity on before we make any decision are:

  • Is there a chance that the "packages from the monorepo" could appear in packagist by mistake? that people could take a dependency on them?
  • Would "deleting" the existing repos be a breaking change to people who already have a reference to the packages on packagist? (I'm fairly confident the answer to this one is yes)

@Ndiritu Ndiritu moved this from Todo 📃 to In Progress 🚧 in Kiota Nov 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: In Progress 🚧
Development

No branches or pull requests

3 participants