Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
Description
Our current build process does several things that are suboptimal:
- Temporary build files are created within source location (Docker content)
- Output goes in _output instead of more standard locations (i.e. build)
- "clean" target is overused, resulting in far slower builds than necessary
- Build artifacts are inconsistently named, leading to confusion
- Build targets are all marked .PHONY meaning they cannot be cached properly
Additionally, using (for example) a different build of go should be possible.
We should update the build process as follows:
- Move Dockerfiles into docker/
{imagename}/
- Use output directory for all generated content
- Use output/dev for development-time binaries
- Use output/bin for production-time binaries
- Use output/docker/{imagename}for temporary Docker build environments
- Allow setting GO env var to override go binary name (i.e. GO=go1.20.5 or GO=/opt/go1.20.5/bin/go)
- Use proper dependencies for Makefile build targets
- Name output binaries as: yunikorn-scheduler, yunikorn-scheduler-plugin, and yunikorn-admission-controller
Experimentally, doing this results in significant speedups for deployments. An incremental "make image" with no changes now completes in a few seconds.
Attachments
Attachments
Issue Links
- requires
-
YUNIKORN-1862 Shim: Use privately installed build tools
-
- Closed
-
- links to