Scalable and automated software code development pipeline
In some implementations, a code testing device may receive, from a first device associated with a developer, a first instruction to merge a first code branch. The code testing device may perform a first set of tests, associated with a first environment, in response to the first instruction. The code testing device may merge the first code branch based on the first set of tests resulting in a passing outcome for the first code branch. The code testing device may receive, from a second device associated with a reviewer, a second instruction to deploy the merged first code branch. The code testing device may perform a second set of tests, associated with a second environment, in response to the second instruction. The code testing device may deploy the merged first code branch based on the second set of tests resulting in a passing outcome for the merged first code branch.
1 . A system for scalable and automated code testing, the system comprising:
one or more memories; and
one or more processors, communicatively coupled to the one or more memories, configured to:
receive, from a first device associated with a first developer, a first instruction to merge a first code branch;
perform a first set of tests, associated with a first environment, in response to the first instruction;
merge the first code branch based on the first set of tests resulting in a passing outcome for the first code branch;
assign the merged first code branch to a first reviewer;
receive, from a second device associated with a second developer, a second instruction to merge a second code branch;
perform the first set of tests, associated with the first environment, in response to the second instruction;
synchronize configuration files associated with sessions for the first developer and the second developer, wherein the configuration files store metadata associated with the first code branch and the second code branch;
merge the second code branch based on the first set of tests resulting in a passing outcome for the second code branch;
assign the merged second code branch to a second reviewer;
receive, from a third device associated with the first reviewer, a third instruction to deploy the merged first code branch;
perform a second set of tests, associated with a second environment, in response to the third instruction;
deploy the merged first code branch based on the second set of tests resulting in a passing outcome for the merged first code branch; and
assign, based on applying a rule that limits each reviewer to being assigned to a same branch up to one time, the deployed first code branch to a third reviewer that is different than the first reviewer.
2 . The system of claim 1 , wherein the one or more processors are configured to:
receive, from a fourth device associated with the second reviewer, a fourth instruction to deploy the merged second code branch;
perform the second set of tests, associated with the second environment, in response to the fourth instruction;
deploy the merged second code branch based on the second set of tests resulting in a passing outcome for the merged second code branch; and
assign the deployed second code branch to a fourth reviewer that is different than the second reviewer.
3 . The system of claim 1 , wherein the one or more processors, to receive the first instruction, are configured to:
receive a push command associated with a code repository.
4 . The system of claim 1 , wherein the one or more processors, to assign the merged first code branch to a first reviewer, are configured to:
submit a pull request to a code repository.
5 . The system of claim 1 , wherein the first set of tests comprise low-level environment tests.
6 . The system of claim 1 , wherein the second set of tests comprise quality assurance tests.
7 . A method of scalable and automated code testing, comprising:
receiving, from a first device associated with a first developer, a first instruction to merge a first code branch;
performing, by a code testing device, a first set of tests, associated with a first environment, in response to the first instruction;
merging, by a code repository, the first code branch based on the first set of tests resulting in a passing outcome for the first code branch;
receiving, from a second device associated with a second developer, a second instruction to merge a second code branch;
performing, by the code testing device, the first set of tests, associated with the first environment, in response to the second instruction;
synchronizing configuration files associated with sessions for the first developer and the second developer, wherein the configuration files store metadata associated with the first code branch and the second code branch;
merging, by the code repository, the second code branch based on the first set of tests resulting in a passing outcome for the second code branch;
receiving, from a third device associated with a first reviewer, a third instruction to deploy the merged first code branch;
performing, by the code testing device, a second set of tests, associated with a second environment, in response to the third instruction;
deploying, by the code repository, the merged first code branch based on the second set of tests resulting in a passing outcome for the merged first code branch; and
assigning, based on applying a rule that limits each reviewer to being assigned to a same branch up to one time, the deployed first code branch to a second reviewer that is different than the first reviewer.
8 . The method of claim 7 , further comprising:
receiving, from a fourth device associated with the second reviewer, a fourth instruction to deploy the merged second code branch;
performing, by the code testing device, the second set of tests, associated with the second environment, in response to the fourth instruction; and
deploying, by the code repository, the merged second code branch based on the second set of tests resulting in a passing outcome for the merged second code branch.
9 . The method of claim 7 , further comprising:
receiving, from a fourth device associated with the second reviewer, a fourth instruction to deploy the merged second code branch;
performing, by the code testing device, the second set of tests, associated with the second environment, in response to the fourth instruction; and
refraining from deploying the merged second code branch based on the second set of tests resulting in a failed outcome for the merged second code branch.
10 . The method of claim 7 , wherein performing the first set of tests comprises:
compiling the first code branch to generate an executable; and
testing the executable within a container configured to simulate the first environment.
11 . The method of claim 10 , wherein performing the second set of tests comprises:
moving the executable to a simulator of the second environment; and
testing the executable in the simulator.
12 . The method of claim 7 , the first set of tests comprise quality assurance tests.
13 . The method of claim 7 , wherein the second set of tests comprise performance tests.
14 . A non-transitory computer-readable medium storing a set of instructions for scalable and automated code testing, the set of instructions comprising:
one or more instructions that, when executed by one or more processors of a device, cause the device to:
receive, from a device associated with a developer, a first instruction to merge a code branch;
perform a first set of tests, associated with a first environment, in response to the first instruction;
synchronize configuration files associated with sessions for the developer and a different developer, wherein the configuration files store metadata associated with the code branch;
merge the code branch based on the first set of tests resulting in a passing outcome for the code branch;
assign the merged code branch to a first reviewer;
receive, from a device associated with the first reviewer, a second instruction to deploy the merged code branch;
perform a second set of tests, associated with a second environment, in response to the second instruction;
deploy the merged code branch based on the second set of tests resulting in a passing outcome for the merged code branch; and
assign, based on applying a rule that limits each reviewer to being assigned to a same branch up to one time, the deployed code branch to a second reviewer that is different than the first reviewer.
15 . The non-transitory computer-readable medium of claim 14 , wherein the one or more instructions, when executed by the one or more processors, cause the device to:
receive, from the device associated with the developer, a third instruction to merge an additional code branch;
perform the first set of tests, associated with the first environment, in response to the third instruction; and
refrain from merging the additional code branch based on the first set of tests resulting in a failed outcome for the additional code branch.
16 . The non-transitory computer-readable medium of claim 14 , wherein the one or more instructions, when executed by the one or more processors, cause the device to:
receive, from a device associated with the second reviewer, an approval of the deployed code branch; and
transmit a master code branch, including the deployed code branch, to a device associated with a customer.
17 . The non-transitory computer-readable medium of claim 14 , wherein the one or more instructions, that cause the device to assign the merged code branch to the first reviewer, cause the device to:
transmit an indication, to the device associated with the first reviewer, indicating the merged code branch.
18 . The non-transitory computer-readable medium of claim 14 , wherein the one or more instructions, that cause the device to assign the deployed code branch to the second reviewer, cause the device to:
select the second reviewer based on the rule.
19 . The non-transitory computer-readable medium of claim 14 , wherein the one or more instructions, that cause the device to receive the first instruction, cause the device to:
receive a set of credentials associated with the developer; and
receive the first instruction based on verifying the set of credentials.
20 . The non-transitory computer-readable medium of claim 14 , wherein the one or more instructions, that cause the device to receive the second instruction, cause the device to:
receive a set of credentials associated with the first reviewer; and
receive the second instruction based on verifying the set of credentials.