-
Notifications
You must be signed in to change notification settings - Fork 145
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
[META] Create build pipelines and packaging steps for all Elastic Agent subcomponents #592
Comments
Added some more detail to the description. |
I'd like to share my two cents about the different types of testing for each repository/component here. IIUC, there will be libraries (shipper, inputs) that will be consumed by the elastic-agent. For me, the libraries should contain a great coverage on unit tests, but no e2e or integration tests, unless they communicate to other system, which I think it's not the case (please correct me if I'm wrong 🙏 ). Regarding the elastic-agent, which for me is the central piece here, it consumes the libraries to perform certain actions and send data to an output (elasticsearch). This is the project where, apart form the mandatory unit tests, I'd put integration tests. But for that I'd require first to define the boundaries for all possible interactions:
It would be of great help having a dependency graph where we can identify consumers and providers of the functionality, so that we can correlate the relationships with those boundaries that I mentioned before, and with that, write the right type of tests for each interaction. |
At a high level I agree that the agent is the place that aggregates all of this functionality together, and we could write all tests at the agent level. At an organizational level most of these pieces are by developed by separate teams in separate repositories, so I'm not sure making the agent the place where all integration testing happens would make sense. If we wanted to do that it would probably be easiest to just have an agent monorepo. I think we will want agent components (inputs, shipper) to have some form of integration testing local to their own repositories that ensures they are highly likely to run under agent without issue. |
Yes, that's correct, and I totally agree with you about having integration tests at the library level. That's what I tried to express myself when I said:
We probably want to test at the integration layer that a library interacts with components A, B, C, and because of your comment, I think that's the case, so I'm super happy that we are aligned in the test strategy :) |
Based on the information above and @ph' s proposal, I took a stab at creating some broad and concrete tasks separated by repo. This should help us estimate on how much effort is involved and prioritize for the next releases. Elastic Agent
Beats
Shipper (elastic/elastic-agent-shipper#74)
Inputs
Fleet Server
Shared
|
This is a really a good starts @narph, could you prioritize the above list and we can work with @pierrehilbert and the team to assign release to them items, I don't think we we can do everything for 8.4. I think experimenting in the shipper is a good way to have the necessary information for the proposal since this need to be done and has little impact to the actual build process. @andrewkroh fyi, you might be interested to follow this, the main idea is to reduce the complexity of the build of the Elastic Agent and the Beats, we will also separate the build toolings from the contract of what need to be produced by the build. |
Do we need the shipper to be part of the unified release manager? It will only run as part of the agent. It and the new inputs (from elastic-agent-inputs) can probably be treated the same way fleet-server is from the perspective of releasing the binaries. |
@cmacknz It need to be in some part, the macOS or Windows binary need to be signed. |
There is a draft PR adding support for the shipper to the DRA process: elastic/elastic-agent-shipper#100 |
Purpose of this issue is to design and implement CI pipelines for all the components below:
Revisit the proposal to improve the agent build system. Ensure the agent build and packaging system can scale with the agent V2 architecture and make it easier to use. In particular, consider that in the new architecture there may be many more inputs that live in separate repositories, written in different languages.
This ticket will considered as done as soon as the following actions are working:
Elastic Agent shipper work - elastic/elastic-agent-shipper#74
The text was updated successfully, but these errors were encountered: