-
Notifications
You must be signed in to change notification settings - Fork 204
Add Windows/arm64 support for Agent #9751
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
Conversation
|
This pull request does not have a backport label. Could you fix it @dwhyrock? 🙏
|
|
This pull request is now in conflicts. Could you fix it? 🙏 |
|
This pull request is now in conflicts. Could you fix it? 🙏 |
|
This pull request is now in conflicts. Could you fix it? 🙏 |
|
Pinging @elastic/elastic-agent-control-plane (Team:Elastic-Agent-Control-Plane) |
|
I've added the |
|
we should probably run at least unit test on windows arm as well, similar to what we have for ubuntu and mac |
Why do you need it in the 9.2 branch? Are there plans to publish a 9.2 patch release with support for this platform? |
There is currently no support for Windows ARM in our Buildkite CI. That is being worked on by the DevFlow team, and can be added to Agent's CI once it's ready.
It's my understanding that we want to have Agent artifacts on Windows/arm64 available in DRA builds for 9.2. Some folks may give these artifacts to select customers as a beta test, but not do a public release and not publish them on the main downloads page. cc @cmacknz @nfritts |
|
I am actively reviewing this PR and testing it out. I would say based on the diff, I can tell that this is not setup enough for it to work with the |
|
Seems that Windows arm64 support on GCP is not even provided by Microsoft as a base image to launch, making it very difficult to be used with |
|
I tested the changes locally and built the package without problems. The changes to the build system look good to me as well, and I don't mind building the package during the packaging CI step. I'm less enthused about including this target in the actual packaging pipeline. From the description, we don't need these in the DRA right now. We don't want to ship anything to customers, even as a closed beta, without first verifying that agent integration tests pass for this target. I'd be willing to accept the packaging changes after that happens. |
|
The agreement that we have right now is that staging or snapshot builds of this will be given to individual interested Defend customers and that this will not appear publicly available on the agent downloads page even as technical preview until we have windows/arm CI runners we can actually test against. I am fine with the capability to build this going in to serve this purpose but there is no expectation of quality with this right now beyond "it compiled!" which while a nice step is not the ultimate definition of done. |
blakerouse
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Being that we are going to skip the integration tests for now for an early preview, this looks good to me.
💚 Build Succeeded
History
cc @dwhyrock |
* Save current work * add a platformpackage for windows/arm64 * Trying new image in observability-ci namespace * Updating packages spec * Package windows/arm64 * Update windows step keys * Change host image for windows/arm64 packaging * Update test and switch image settings for windows/arm * machineType -> instanceType * trigger a new build after container update * trigger a new build after container update * add go build -x * trigger a new build after container update * Bump version of winperfcounters to support arm * less noise please * set cgo_enabled for windows * trigger a new build after container update * trigger a new build after container update * trigger a new build after container update * trigger a new build after container update * Add arm64 to allowed archs for Zip * go mod tidy * Build elastic-agent-archive-root for windows/arm64 * Cleaning up comments and debug logs * Cleaning up * Cleaning up and setting agentbeat to all platforms * Agentbeat not yet in DRA for windows/arm64 * Beats DRA now published, so try agentbeat w/ all platforms * Cleaning up and linting * Temp trying new .package-version w/ windows/arm beats * Cleaning up code * Cleaning up log messages * Restoring previous comment * Adding in support for windows/arm in spec file for Endpoint * fixing spacing (cherry picked from commit 53d140d)
* Save current work * add a platformpackage for windows/arm64 * Trying new image in observability-ci namespace * Updating packages spec * Package windows/arm64 * Update windows step keys * Change host image for windows/arm64 packaging * Update test and switch image settings for windows/arm * machineType -> instanceType * trigger a new build after container update * trigger a new build after container update * add go build -x * trigger a new build after container update * Bump version of winperfcounters to support arm * less noise please * set cgo_enabled for windows * trigger a new build after container update * trigger a new build after container update * trigger a new build after container update * trigger a new build after container update * Add arm64 to allowed archs for Zip * go mod tidy * Build elastic-agent-archive-root for windows/arm64 * Cleaning up comments and debug logs * Cleaning up * Cleaning up and setting agentbeat to all platforms * Agentbeat not yet in DRA for windows/arm64 * Beats DRA now published, so try agentbeat w/ all platforms * Cleaning up and linting * Temp trying new .package-version w/ windows/arm beats * Cleaning up code * Cleaning up log messages * Restoring previous comment * Adding in support for windows/arm in spec file for Endpoint * fixing spacing (cherry picked from commit 53d140d) Co-authored-by: Doug W <[email protected]>
What does this PR do?
The goal of this PR is to get Elastic Agent building and packaging a Windows ARM artifact.
Both Beats and Endpoint are currently producing Windows/arm64 artifacts that can be packaged.
This is producing a valid Elastic Agent build that has Agentbeat, OsQuerybeat, and Endpoint components packaged with it: https://buildkite.com/elastic/elastic-agent/builds/27828#01999b48-3d7d-424d-b2b1-aa1c97d29b09
NOTE: There is currently no CI support for Windows/arm64, so testing in CI has not been added. Also, this support for Windows/arm64 is not fully supported for customer use, so there will be no changelog added since it won't be published on the download pages until it's fully vetted/tested/etc.
This PR does the following:
.buildkite/bk.integration.pipeline.ymlto reflect windows architecturepackaging-windows-arm64step to.buildkite/integration.pipeline.ymlwindows/arm64as aPLATFORMSlist item forbuild-dra-snapshot-armstep in.buildkite/pipeline.elastic-agent-binary-dra.ymlwindows/arm64as aPLATFORMSlist item topackage-elastic-agent-armstep in.buildkite/pipeline.elastic-agent-package.ymlwindows/arm64case for crossbuilding indev-tool/mage/crossbuild.gowindows/arm64entries to various structs indev-tools/mageanddev-tools/packagingwindows-arm64as validplatformsitem indev-tools/packaging/packages.ymlfleet-serverto support all the valid platforms, except the newwindows/arm64onepkg/to supportwindows/arm64and not error out when encountering itspecs/endpoint-security.spec.ymlto not error out ifwindows/arm64is the OS/archmagefile.goto supportwindows/arm64in building and packaging logicWhy is it important?
Getting lots of demand for the ability to run on Windows OS w/ arm64 architecture.
Checklist
./changelog/fragmentsusing the changelog toolDisruptive User Impact
How to test this PR locally
Related issues
Questions to ask yourself