1. A method comprising: storing, by a computer processor, a set of source files in a shared storage repository for nodes of a distributed computing environment for software compilation, wherein each of the nodes includes a program configured to perform all of software build tasks selected from the group consisting of: preprocessing by a preprocessor component of the program, compiling by a compiler component of the program, assembling by an assembler component of the program, and linking by a linker component of the program; creating, by the computer processor, an object file based on at least a portion of the set of source files; generating, by the computer processor, via a scheduler component, a directed acyclic graph (DAG) corresponding to a group of software build tasks and a relationship between the software build tasks based on the set of source files; determining, by the computer processor, a replication factor for the object file based on a number of relationships of the object file identified from the DAG, wherein the replication factor indicates a number of copies of the object file to replicate and store to a local memory cache of each node of the number of nodes; responsive to determining that the object file is not stored in the local memory cache, transmitting, by the computer processor, a status message to a metadata server indicating that the object file is unavailable in the local memory cache; determining whether the object file is stored in another local memory cache using the information stored in the metadata server; responsive to determining that the object file is stored in the other local memory cache, transmitting, by the computer processor, the object file from the other local memory cache to the local memory cache; and storing, by the computer processor, via the metadata server, the object file in the local memory cache of at least one of the number of the nodes, wherein the number of the nodes is based on the replication factor for the object file, wherein each of the nodes includes an executer component configured to manage the respective local memory cache and manage the respective program.