IP Library Granted Patent US 12,333,331
Granted Patent B2
US 12,333,331 · App. 17/176,524 · Granted Jun 17, 2025

Automated construction of software pipeline

Inventors: Vijayakumar Raghavendran (Fremont, CA); Srinjoy Chakraborty (Bangalore, IN)
Assignee: CISCO TECHNOLOGY, INC.
G06F9/48G06F8/60G06F9/5005G06F11/3495G06N20/00G06F11/3688G06F2209/5021
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,333,331
App. No.
17/176,524
Granted
Jun 17, 2025
Kind
B2
Abstract

A controller generates a software pipeline in response to obtaining an instruction to build the software pipeline for a first user. The controller divides the software pipeline into a plurality of tasks and determining a set of resources for performing each task in the plurality of tasks. The controller reserves the set of resources based on a policy associated with the first user. The controller causes the first software pipeline to run using the set of resources reserved for performing each task in the plurality of tasks.

Claims (71)

1. A computer-implemented method comprising:

obtaining an instruction to build a first software pipeline for a first user associated with a first tenant;

dividing the first software pipeline into a plurality of tasks, wherein the plurality of tasks includes a plurality of request tasks;

retrieving policy information for the first tenant;

determining a set of resources for performing each task in the plurality of tasks based on a service level offering defined in the policy information for the first tenant;

associating each of the plurality of tasks with a corresponding tag, wherein each of the plurality of request tasks is associated with a corresponding Type-Length-Value (TLV) tag having a plurality of bits representing Enhanced Transmission Selection (ETS) parameters or Priority Flow Control (PFC) parameters;

placing the plurality of request tasks into one or more delivery queues;

shuffling the one or more delivery queues based on a priority level associated with each of the plurality of request tasks and a policy associated with the first user;

allocating the set of resources for performing each task based on the policy associated with the first user;

running the first software pipeline using the set of resources allocated for performing each task in the plurality of tasks;

automatically tracking a performance of each task in the plurality of tasks with the corresponding tag; and

analyzing previous execution history and the corresponding tag for each task in the plurality of tasks to determine whether to assign a different tag to each task.

2. The method of claim 1 , wherein at least one task in the plurality of tasks is shared across a plurality of software pipelines.

3. The method of claim 1 , wherein each corresponding tag identifies a corresponding task across a plurality of software pipelines.

4. The method of claim 1 , wherein automatically tracking the performance of each task in the plurality of tasks further comprises:

processing the performance of each task in the plurality of tasks across a plurality of software pipelines using machine learning.

5. The method of claim 1 , further comprising adjusting the set of resources allocated for performing one or more tasks in the plurality of tasks based on a relative priority of the first software pipeline to a second software pipeline, wherein the second software pipeline is built for a second user associated with a second tenant different than the first tenant.

6. The method of claim 1 , wherein the set of resources for performing each task comprises network resources or processing resources.

7. The method of claim 1 , wherein the first software pipeline includes a Continuous Integration (CI) operation or a Continuous Deployment (CD) operation.

8. The method of claim 1 , wherein the TLV tag further includes one or more bits representing one or more of:

a plurality of Quality of Service (QOS) levels,

a plurality of processing levels,

one or more functions of a Continuous Integration (CI) operation,

one or more functions of a Continuous Deployment (CD) operation, or

a thread priority parameter identifying one or more central processing unit (CPU) cores and one or more CPU cycles allocated to each task in the plurality of tasks.

9. An apparatus comprising:

a network interface configured to communicate with a plurality of computing devices; and

a processor coupled to the network interface, the processor configured to:

obtain an instruction via the network interface, the instruction indicating a first software pipeline to build for a first user associated with a first tenant;

divide the first software pipeline into a plurality of tasks, wherein the plurality of tasks includes a plurality of request tasks;

retrieve policy information for the first tenant via the network interface;

determine a set of resources for performing each task in the plurality of tasks based on a service level offering defined in the policy information for the first tenant;

associate each of the plurality of tasks with a corresponding tag, wherein each of the plurality of request tasks is associated with a corresponding Type-Length-Value TLV) tag having a plurality of bits representing Enhanced Transmission Selection (ETS) parameters or Priority Flow Control (PFC) parameters;

place the plurality of request tasks into one or more delivery queues;

shuffle the one or more delivery queues based on a priority level associated with each of the plurality of request tasks and a policy associated with the first user;

allocate the set of resources for performing each task based on the policy associated with the first user;

cause the first software pipeline to run using the set of resources allocated for performing each task in the plurality of tasks;

automatically track a performance of each task in the plurality of tasks with the corresponding tag; and

analyze previous execution history and the corresponding tag for each task in the plurality of tasks to determine whether to assign a different tag to each task.

10. The apparatus of claim 9 , wherein at least one task in the plurality of tasks is shared across a plurality of software pipelines.

11. The apparatus of claim 9 , wherein each corresponding tag identifies a corresponding task across a plurality of software pipelines.

12. The apparatus of claim 9 , wherein the processor is configured to automatically track the performance of each task in the plurality of tasks by:

processing the performance of each task in the plurality of tasks across a plurality of software pipelines using machine learning.

13. The apparatus of claim 9 , wherein the processor is further configured to adjust the set of resources allocated for performing one or more tasks in the plurality of tasks based on a relative priority of the first software pipeline to a second software pipeline, wherein the processor is configured to build the second software pipeline for a second user associated with a second tenant different than the first tenant.

14. The apparatus of claim 9 , wherein the processor is configured to allocate the set of resources for performing each task by allocating network resources or processing resources.

15. The apparatus of claim 9 , wherein the first software pipeline includes a Continuous Integration (CI) operation or a Continuous Deployment (CD) operation.

16. The apparatus of claim 9 , wherein the TLV tag further includes one or more bits representing one or more of:

a plurality of Quality of Service (QOS) levels,

a plurality of processing levels,

one or more functions of a Continuous Integration (CI) operation,

one or more functions of a Continuous Deployment (CD) operation, or

a thread priority parameter identifying one or more central processing unit (CPU) cores and one or more CPU cycles allocated to each task in the plurality of tasks.

17. One or more non-transitory computer readable storage media encoded with software comprising computer executable instructions and, when the software is executed, it is operable to cause a processor to:

obtain an instruction to build a first software pipeline for a first user associated with a first tenant;

divide the first software pipeline into a plurality of tasks, wherein the plurality of tasks includes a plurality of request tasks;

retrieve policy information for the first tenant;

determine a set of resources for performing each task in the plurality of tasks based on a service level offering defined in the policy information for the first tenant;

associate each of the plurality of tasks with a corresponding tag, wherein each of the plurality of request tasks is associated with a corresponding Type-Length-Value (TLV) tag having a plurality of bits representing Enhanced Transmission Selection (ETS) parameters or Priority Flow Control (PFC) parameters;

place the plurality of request tasks into one or more delivery queues;

shuffle the one or more delivery queues based on a priority level associated with each of the plurality of request tasks and a policy associated with the first user;

allocate the set of resources for performing each task based on the policy associated with the first user;

run the first software pipeline using the set of resources allocated for performing each task in the plurality of tasks;

automatically track a performance of each task in the plurality of tasks with a corresponding tag; and

analyze previous execution history and the corresponding tag for each task in the plurality of tasks to determine whether to assign a different tag to each task.

18. The one or more non-transitory computer readable storage media of claim 17 , wherein at least one task in the plurality of tasks is shared across a plurality of software pipelines.

19. The one or more non-transitory computer readable storage media of claim 17 , wherein each corresponding tag identifies a corresponding task across a plurality of software pipelines.

20. The one or more non-transitory computer readable storage media of claim 17 , wherein the software is further operable to cause the processor to automatically track the performance of each task in the plurality of tasks by:

processing the performance of each task in the plurality of tasks across a plurality of software pipelines using machine learning.

21. The one or more non-transitory computer readable storage media of claim 17 , wherein the software is further operable to cause the processor to adjust the set of resources allocated for performing one or more tasks in the plurality of tasks based on a relative priority of the first software pipeline to a second software pipeline, wherein the second software pipeline is built for a second user associated with a second tenant different than the first tenant.

22. The one or more non-transitory computer readable storage media of claim 17 , wherein the software is further operable to cause the processor to allocate the set of resources for performing each task by allocating network resources or processing resources.

23. The one or more non-transitory computer readable storage media of claim 17 , wherein the first software pipeline includes a Continuous Integration (CI) operation or a Continuous Deployment (CD) operation.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 16, 2021
From: RAGHAVENDRAN, VIJAYAKUMAR; CHAKRABORTY, SRINJOY
To: CISCO TECHNOLOGY, INC.
Reel/Frame 055272/0751 →
Continuity (1)
Related Publication 20220261274A1 · Aug 18, 2022
References Cited (44)
US 8745585B2 · Watters et al. · 2014 [cited by applicant]
US 9864636B1 · Patel · 2018 [cited by examiner]
US 9929969B1 · Krottapalli · 2018 [cited by examiner]
US 9965377B1 · Russell · 2018 [cited by examiner]
US 9983860B1 · Koty et al. · 2018 [cited by applicant]
US 10120670B1 · Atkinson et al. · 2018 [cited by applicant]
US 10303586B1 · Falko · 2019 [cited by applicant]
US 10430441B1 · Canton · 2019 [cited by examiner]
US 20140081972A1 · Eriksson · 2014 [cited by examiner]
US 20140289412A1 · Doddavula · 2014 [cited by examiner]
US 20150227959A1 · Qu · 2015 [cited by examiner]
US 20160253172A1 · Shani · 2016 [cited by examiner]
US 20170039062A1 · Wood et al. · 2017 [cited by applicant]
US 20170269921A1 · Martin Vicente · 2017 [cited by examiner]
US 20170371636A1 · Palavalli · 2017 [cited by examiner]
US 20180048521A1 · Nair · 2018 [cited by examiner]
US 20190065357A1 · Brafman et al. · 2019 [cited by applicant]
US 20190068690A1 · Canton · 2019 [cited by examiner]
US 20190087214A1 · To · 2019 [cited by examiner]
US 20190303119A1 · Atkinson · 2019 [cited by examiner]
US 20190317754A1 · Mosquera et al. · 2019 [cited by applicant]
US 20200004660A1 · Falko · 2020 [cited by applicant]
US 20200218623A1 · Zhang · 2020 [cited by examiner]
US 20200322442A1 · Luo · 2020 [cited by examiner]
US 20200401397A1 · Thomas · 2020 [cited by examiner]
US 20210034413A1 · Ballantyne · 2021 [cited by examiner]
US 20210176191A1 · Pargaonkar · 2021 [cited by examiner]
US 20210397588A1 · Keller · 2021 [cited by examiner]
US 20220129301A1 · Adeyenuwo · 2022 [cited by examiner]
US 20220237025A1 · Bregman · 2022 [cited by examiner]
CN 108958721B · 2020 [cited by applicant]
Monitor Jenkins jobs with Datadog Emily Chang and Jordan Obey Retrieved: www.datadoghq.com/blog/monitor-jenkins-datadog/ (Year: 2020). [cited by examiner]
Applying Machine Learning to DevOps Andi Mann and Jeff Spencer for GlobalLogic UK&I Retrieved: towardsdatascience.com/applying-machine-learning-to-devops-5fb7d69ac366 (Year: 2017). [cited by examiner]
Achieving Continuous Delivery of Immutable Containerized Microservices with Mesos/Marathon Shashi Ravula Aalto University School of Science Master's Thesis (Year: 2017). [cited by examiner]
5G Ready Software Defined Test Automation @Rakuten Japan Vijay Raghavendran, Noam Ben Gal Ciscolive! 2019 presentation; DocID: BRKSPM-2018 (Year: 2019). [cited by examiner]
Monitor code deployments with Deployment Tracking in Datadog APM Danny Park, Jonathan Epstein www.datadoghq.com/blog/datadog-deployment-tracking/ (Year: 2020). [cited by examiner]
Best practices for tagging your infrastructure and applications Mallory Mooney web.archive.org/web/20201101071338/www.datadoghq.com/blog/tagging-best-practices/ (Year: 2019). [cited by examiner]
A Review Of Runtime Software Testing Of A Systems Migrate To The Cloud With A Taas Environment Pranali K. Bhowate and Prof. V.B. Gadicha (Year: 2013). [cited by examiner]
Improving the scheduling policy for a Continuous Integration Server Viktor Berglund and Isak Eriksson (Year: 2020). [cited by examiner]
TLV Python Parser—Version 0.4.0 Fernando Cleber de Souza Readme for “uttlv” project github.com/ustropo/uttlv/blob/ec5633f51eee047c1cdd4902ff0af7873c4f46cd/README.md (Year: 2020). [cited by examiner]
A standard method for creating self-defining data structures for information archive and transfer John A. Johnson and Frederic C. Billingsley (Year: 1990). [cited by examiner]
Managing Oracle® Solaris 11.1 Network Performance Oracle Corporation Chapter 8 (Year: 2013). [cited by examiner]
Parallelize Automated Tests in a Build and Test Environment Selva Ganesh Durairaj Master's Thesis, Linköping University (Year: 2016). [cited by examiner]
GoCD, “Getting Started with GoCD Part One”, 18 pages, retrieved from Internet Nov. 25, 2020; https://www.gocd.org/getting-started/part-1/. [cited by applicant]