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

[Incremental Build] Differentiate the commits changes and finalize rebuild components #4201

Closed
Tracked by #3922
zelinh opened this issue Nov 6, 2023 · 3 comments
Closed
Tracked by #3922
Assignees
Labels
enhancement New Enhancement feature New feature

Comments

@zelinh
Copy link
Member

zelinh commented Nov 6, 2023

This is a sub-issue from #3922.

When enable incremental build, the build workflow should be able to:

  • Lock the references from input manifest to commits format.
  • Compare the components from input manifest to the local build manifest from previous build, and identify new addition components.
  • Find components with commit changes.
  • Go through the input manifest with depends_on field to locate any affecting dependency components when rebuilding.

Acceptance criteria:

  • Get a list of components for rebuilding.
  • The components in the return list should include all modified plugins with commit changes, components depending on these modified component, and all plugin component if core(OpenSearch/OpenSearch-Dashboards) changes.

Exception:
For OpenSearch Dashboards, since we haven't enabled building components. #606. We would need to also include OpenSearch-Dashboards repo for rebuilding if any of the dashboard plugin changes.

@github-actions github-actions bot added the untriaged Issues that have not yet been triaged label Nov 6, 2023
@zelinh zelinh self-assigned this Nov 6, 2023
@zelinh zelinh added enhancement New Enhancement feature New feature and removed untriaged Issues that have not yet been triaged labels Nov 6, 2023
@zelinh zelinh moved this from Backlog to In Progress in OpenSearch Engineering Effectiveness Nov 6, 2023
@zelinh
Copy link
Member Author

zelinh commented Nov 7, 2023

There will be essentially three parts to achieve the goal here:

  1. Implement a logic to get all components depending on a given plugin in the input manifests.
   # Return a list of plugin that will depend on the given plugin
   def plugins_depend_on(self, plugin: str) -> List[str]:
  1. Compare the input manifest and build manifest from previous build to find out new additional components and all components with commit changes.

  2. Finalize components for rebuilding. This should include: new additional components; components with commit changes; all direct or indirect components that depend on previous two groups of components.

@zelinh
Copy link
Member Author

zelinh commented Nov 10, 2023

For more exceptions I'm thinking about:

  • If the build manifest is not found from local folder with path e.g. tar/builds/opensearch/manifest.yml, we would build core with all other plugins from the input manifest.
  • The build manifest within local build folder can come from previous version. We also need a check to verify that the build version of current input manifest matching the version of the build manifest from previous build. Otherwise, we would build core with all other plugins.

@zelinh
Copy link
Member Author

zelinh commented Dec 14, 2023

Closing this issue as it's completed.

@zelinh zelinh closed this as completed Dec 14, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New Enhancement feature New feature
Projects
Development

No branches or pull requests

1 participant