backstage/mkdocs-monorepo-plugin

monorepo with submodules (empty)

dhabierre opened this issue · 5 comments

Hi,

I am playing with monorepo plugin.
I have 1 repo (rpa-doc) with 2 submodules (rpa-1, rpa2):

rpa-doc
- docs \ README.md
- .gitmodules
- catalog-info.yml
- mkdocs.yml
- rpa-1 @ d70d...
- rpa-2 @ dbe6...

mkdocs.yml

site_name: RPA Documentation (Test)

nav:
  - Home: README.md
  - Submodules:
    - rpa-1: '!include ./rpa-1/mkdocs.yml'
    - rpa-2: '!include ./rpa-2/mkdocs.yml'

plugins:
  - monorepo

rpa-1 @ d70d...

- docs \ README.md
- mkdocs.yml

When backstage executes the doc generation:

[mkdocs-monorepo] The file path /tmp/backstage-QFfxej/rpa-1/mkdocs.yml does not exist, is not valid YAML, or does not contain a valid 'site_name' and 'nav' keys.

And /tmp/backstage-QFfxej/rpa-1/mkdocs.yml does not exist.
=> Submodules folders are empty.

I think the clone action does not use the --recursive attribute.

Locally:

git clone https://bitbucket.[xxx].[xxx]/scm/tests/rpa-doc.git --recursive

=> [OK] submodules are pulled and mkdocks.yml files exist.

git clone https://bitbucket.[xxx].[xxx]/scm/tests/rpa-doc.git

=> [KO] submodules are empty

Any idea?
Thanks!

If backstage doesn't use --recursive attribute when cloning the repository (when updating the documentation), how to auto-execute the git submodule update --init --recursive command after the clone?

I don't know how monorepo processes when retrieving the main repository and the submodules.

Hi @dhabierre, I assume you are using backstage with "local" generation, e.g. backstage generates the documentation files when you visit the documentation page?

This is one of the two ways to set up techdocs, and this way is not recommended for production use. You can read more here

Once you are using the recommended setup (ci/cd), it should be fairly straight forward to configure your build server to also download the submodules (our builds do this today)

That said, as others have mentioned in #89, this plugin is not responsible for checking out the files. It's handled by the techdocs node plugin, here (using different implementations depending on which source control system is used). If you want to proceed with this approach, feel free to create a PR in the node plugin!

Hi @agentbellnorm,

I assume you are using backstage with "local" generation, e.g. backstage generates the documentation files when you visit the documentation page?

You are right, this is the current setup but I can't change it, I am not the operator of the backstage instance.
So I can't use a custom CI in order to clone the repository, then get the submodules with a second git command.