Continuous integration system and continuous integration method
The system optimizes resource allocation in continuous integration by using dynamic project information to select execution machines, addressing inefficiencies in existing systems and enhancing project management through early error detection and quality assurance.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2022-10-26
- Publication Date
- 2026-04-01
AI Technical Summary
Existing continuous integration systems face challenges in optimizing resource allocation across multiple projects due to reliance on static processing load estimation, which fails to consider dynamic project information and project priorities, leading to inefficient resource utilization.
A continuous integration system that includes a version control server, CI server, ticket management server, and job execution machines, where the CI server selects execution machines based on dynamic project information and project priorities, optimizing resource allocation by considering both processing load and project-specific information.
This approach allows for efficient and accurate resource allocation across multiple projects, enabling early detection and correction of errors, reducing lead time, and ensuring consistent quality by prioritizing projects based on dynamic project information.
Smart Images

Figure 0007839075000001 
Figure 0007839075000002 
Figure 0007839075000003
Abstract
Description
Technical Field
[0001] The present invention relates to a continuous integration system in model-based development.
Background Art
[0002] Model-based development is widely adopted in embedded system development. In model-based development, model files are used for software design, and simulations can be executed from the design stage, so the design can be verified early, which is characterized by high software reliability. In addition, since code can be automatically generated directly from the model file, it is also characterized by the reduction of coding man-hours in development.
[0003] Continuous Integration (hereinafter referred to as CI) is a development method that automatically executes builds and tests each time source files are frequently changed due to specification changes, enabling early detection and correction of errors.
[0004] CI provides a mechanism for continuously performing the development, test, and release cycles, enabling early detection and handling of software defects and improving quality in a short period.
[0005] Conventional development methods such as the waterfall method have a single long development cycle, so builds and tests are not executed until the final process. Therefore, if an error occurs during build or test execution, since development is in the final process, it takes a long time to analyze the cause, the burden of rollback during correction is large, and the man-hours increase.
[0006] On the other hand, in CI with a short development cycle by agile software development, builds and tests are repeated each time within that short cycle, so errors can be detected and corrected early.
[0007] Furthermore, it allows for the detection of specification omissions and discrepancies in the early stages of development, enabling quick corrections. This not only reduces lead time compared to conventional methods but also ensures a consistent level of quality.
[0008] The following prior art exists as background technology for this field. Patent Document 1 (Japanese Patent Application Publication No. 2021-197098) describes a continuous integration system including a CI server that requests a group of job execution machines to execute CI jobs in response to a request from a version control server that manages the configuration of files, and the CI server has a CI job execution unit that receives input files from the version control server, requests an estimation of the resources required for execution for each CI job that constitutes the execution request pipeline, and requests the group of job execution machines to execute the CI job based on the received estimation results, a resource estimation calculation unit that estimates the resources to be allocated to the CI job in response to the estimation request from the CI job execution unit, and a resource determination calculation unit that determines the resources to be allocated to the CI job in response to the estimation results from the resource estimation calculation unit.
[0009] In this specification, the builds and tests that make up CI will be referred to as jobs, and a collection of jobs will be referred to as a pipeline. [Prior art documents] [Patent Documents]
[0010] [Patent Document 1] Japanese Patent Publication No. 2021-197098 [Overview of the project] [Problems that the invention aims to solve]
[0011] Patent Document 1 estimates the processing load in advance by statically analyzing model files and generated code before processing each step, and then optimally allocates resources to each step based on the results, optimizing the amount of resources allocated when each step is executed. In other words, since the resource optimization in Patent Document 1 is based on the estimation of processing load, when optimizing resource allocation in multiple projects, it is necessary to consider not only the estimated processing load but also the priority of resource allocation using information about multiple projects, and it is difficult to optimize resources based on the estimated processing load alone.
[0012] Furthermore, since information about multiple projects includes dynamic information that changes over time, it is necessary to evaluate information about multiple projects each time before processing each step, making it difficult to optimize resources across multiple projects using the resource optimization method described in Patent Document 1.
[0013] This invention has been made in consideration of the above points, and aims to optimize the amount of resources allocated to each process when executing processing for each process in multiple projects by comprehensively considering the results of estimating the processing load and information on multiple projects before processing each process, and appropriately allocating resources to each process based on the results of that consideration, thereby optimizing the amount of resources allocated to each process when processing is executed for each process across all multiple projects. [Means for solving the problem]
[0014] A typical example of the invention disclosed in this application is as follows: A continuous integration system comprising: a version control server that manages the configuration of files; a CI server that requests execution machines in a group of job execution machines to execute CI jobs in response to a request from the version control server; a ticket management server that manages ticket information including information about a project and information about the load of CI jobs executed during the execution of the project; and a group of job execution machines that execute the CI jobs in response to a request from the CI server, wherein the information about the project includes dynamic information that changes over time; the ticket management server transmits the ticket information to the CI server in response to a request from the CI server; and the CI server selects an execution machine to execute the CI job based on the ticket information. [Effects of the Invention]
[0015] According to one aspect of the present invention, resources can be appropriately allocated to each process across multiple projects.
[0016] Details of at least one embodiment of the subject matter disclosed herein are described in the accompanying drawings and the following description. Other features, aspects and effects of the subject matter disclosed are made apparent by the following disclosures, drawings and claims. [Brief explanation of the drawing]
[0017] [Figure 1] This is a block diagram illustrating an embodiment of the present invention and an example of a continuous integration system. [Figure 2] This block diagram illustrates an embodiment of the present invention and shows an example of a data structure stored in a version control server. [Figure 3] This block diagram illustrates an embodiment of the present invention and shows an example of the data structure stored in the ticket management server. [Figure 4]This is a block diagram showing an example of the configuration of a continuous integration server, which illustrates an embodiment of the present invention. [Figure 5] This is a flowchart showing an example of the processing executed by the logical complexity estimation calculation unit, which illustrates an embodiment of the present invention. [Figure 6] This is a flowchart showing an example of the processing executed by the development priority estimation calculation unit, which illustrates an embodiment of the present invention. [Figure 7] This is a flowchart showing an example of the processing executed by the resource priority estimation calculation unit, which illustrates an embodiment of the present invention. [Figure 8] This is a flowchart showing an example of the processing executed by the resource determination calculation unit, which illustrates an embodiment of the present invention. [Figure 9] This is a diagram showing an example of the normalized resource priority - job execution machine correspondence table, which illustrates an embodiment of the present invention. [Figure 10] This is a diagram showing an example of the pipeline configuration file, which illustrates an embodiment of the present invention.
Embodiments for Carrying Out the Invention
[0018] Hereinafter, embodiments for carrying out the present invention will be described. In the following description of the embodiments, the builds and tests that constitute CI are called jobs, and a collection that includes jobs is called a pipeline.
[0019] FIG. 1 is a block diagram showing an example of the configuration of a continuous integration (hereinafter, CI) system. The CI system includes a version management server 40 that manages the configuration of files, a CI server 70 that estimates and determines the computer resources required to execute CI jobs 73-1 to 73-N that constitute a pipeline 72, and requests the execution of CI jobs 73-1 to 73-N to a job execution machine group 400, a ticket management server 200 that manages tickets 201, and a job execution machine group 400 composed of a plurality of execution machines (computers) 411-1 to 411-M that execute the processing of CI jobs 73-1 to 73-N.
[0020] If you do not want to specify individual CI jobs, use the code "73" by omitting everything after the "-". The same applies to the codes of other components.
[0021] The version control server 40 has the function of managing the structure of a set of files and consists of a branch 42 that manages the set of files and a repository 41 that manages multiple branches 42. Figure 2 is a block diagram showing an example of the data structure stored in the version control server 40.
[0022] In this embodiment, branch 42 manages a set of files including a source file group 43 consisting of program source files, a model file group 44 describing the model, a CI script 45, and a pipeline configuration file group 48 describing the CI jobs 73 that make up the pipeline 72.
[0023] Furthermore, CI script 45 consists of a group of CI job scripts 46 that describe the processing of CI job 73, and a normalized resource priority-job execution machine correspondence table 47 for assigning an appropriate execution machine 411 to CI job 73.
[0024] The CI server 70 consists of a CI job execution unit 71 that manages the execution of CI jobs 73 according to the configuration of the pipeline 72, a logical complexity estimation unit 80 that estimates the processing load of the CI jobs 73 that constitute the pipeline 72, a development priority estimation unit 100 that estimates the project priority of the CI job 73, a resource priority estimation unit 90 that estimates the resource priority of the CI job 73, and a resource determination unit 92 that determines the resources required to execute the CI job 73.
[0025] In this embodiment, pipeline 72 shows an example of sequentially executing CI jobs 73-1 through 73-N.
[0026] User 1 sends the input files 20 to the version control server 40 via user terminal 2. The version control server 40 stores the received input files 20 in branch 42 on repository 41.
[0027] If the version control server 40 finds a difference between the received input files 20 and the files stored in branch 42, it sends the file update information 50, the pipeline input file 51, and the project identifier 52 to the CI server 70.
[0028] The pipeline input file 51 consists of source files 43, which are all the files in branch 42; model files 44; CI scripts 45; and pipeline configuration files 48.
[0029] The file update information 50 includes information on files that have been updated in the source file group 43 and model file group 44 from the input file group 20.
[0030] Project identifier 52 contains information that identifies the project to which CI job 73 belongs.
[0031] In the following explanation, we will use model file group 44 as an example of input file group 20.
[0032] When the CI server 70 receives file update information 50, pipeline input files 51, and project identifiers 52 from the version control server 40, the CI job execution unit 71 sends a logical complexity estimation request 81 to the logical complexity estimation calculation unit 80 for each CI job 73 described in the pipeline configuration files group 48, sends a development priority estimation request 101 to the development priority estimation calculation unit 100, receives the resource determination result 93 from the resource determination calculation unit 92, and requests the job execution machine group 400 to execute the CI jobs 73.
[0033] Then, when the CI server 70 receives the job execution result 300 from the job execution machine group 400, it sends the pipeline execution result 60 to the version control server 40.
[0034] Figure 10 shows an example of a pipeline configuration file 900. In this embodiment, the pipeline configuration file 900 describes a job 901 that generates code from the model file group 44.
[0035] The CI job execution unit 71 sends a logical complexity estimation request 81 to the logical complexity estimation calculation unit 80 regarding the code generation job 901, sends a development priority estimation request 101 to the development priority estimation calculation unit 100, receives the resource determination result 93 from the resource determination calculation unit 92, and requests the execution machine 411 of the job execution machine group 400 to execute the CI job 73.
[0036] When the logical complexity estimation unit 80 receives a logical complexity estimation request 81 from the CI job execution unit 71, it estimates the processing load using the model files 44 present in the pipeline input file 51, calculates the normalized logical complexity 82, and sends it to the resource priority estimation unit 90.
[0037] When the development priority estimation calculation unit 100 receives a development priority estimation request 101 from the CI job execution unit 71, it sends a ticket information request 210 to the ticket management server 200 and receives ticket information 211 from the ticket management server 200. Then, it estimates the development priority using the ticket information 211 and the project identifier 52, calculates the normalized development priority 102, and sends it to the resource priority estimation calculation unit 90.
[0038] When the ticket management server 200 receives a ticket information request 210 from the development priority estimation calculation unit 100, it sends the ticket information 211 for a specific project managed within the ticket management server 200 to the development priority estimation calculation unit 100.
[0039] The resource priority estimation unit 90 receives the normalized logical complexity 82 from the logical complexity estimation unit 80 and the normalized development priority 102 from the development priority estimation unit 100, estimates the priority of the resources, calculates the normalized resource priority 91, and sends it to the resource determination unit 92.
[0040] The normalized logical complexity of 82, the normalized development priority of 102, and the normalized resource priority of 91 are real values between 0 and 1. Table 47, which correlates the value of normalized resource priority 91 with the execution machine suitable for job execution, contains information for this purpose.
[0041] When the resource determination calculation unit 92 receives the normalized resource priority 91 from the resource priority estimation calculation unit 90, it uses the normalized resource priority-job execution machine correspondence table 47 contained in the pipeline input file 51 to uniquely select the execution machine 411 that will execute the CI job 73, determines the resources, and sends the resource determination result 93 to the CI job execution unit 71.
[0042] The CI job execution unit 71 sends CI job information 312 and a job execution request 310 to the job execution machine group 400. The job execution request 310 includes information about a machine that will execute the CI job 73, which is uniquely selected from the job execution machine group 400.
[0043] The selected execution machine 411 executes CI job 73 based on CI job information 312, and then sends the job execution result 300 to the CI server 70.
[0044] The job execution machine group 400 consists of multiple execution machines 411-1 to 411-M that process CI job 73. Each execution machine 411-1 to 411-M is a computing resource such as a computer, microcontroller, or server.
[0045] Figure 4 is a block diagram showing an example configuration of the CI server 70. The CI server 70 is a computer that includes a processor 11, memory 12, storage device 13, and network device 14.
[0046] The memory 12 is loaded with the logical complexity estimation unit 80, the development priority estimation unit 100, the resource priority estimation unit 90, the resource determination unit 92, and the CI job execution unit 71, and these are executed by the processor 11.
[0047] The processor 11 operates as a functional unit that provides predetermined functions by executing processing according to the programs of each functional unit. For example, the processor 11 functions as a logical complexity estimation unit 80 by executing processing according to a logical complexity estimation calculation program. The same applies to other programs. Furthermore, the processor 11 also operates as a functional unit that provides the functions of each of the multiple processes executed by each program. A computer and a computer system are devices and systems that include these functional units.
[0048] Network 15 is connected to network device 14. Network 15 is connected to the version control server 40, ticket management server 200, job execution machine group 400, and user terminal 2 shown in Figure 1, and these devices can communicate with each other.
[0049] Figure 5 is a flowchart showing an example of the process performed by the logical complexity estimation unit 80. This process is executed when the CI server 70 receives file update information 50, a pipeline input file 51, and a project identifier 52 from the version control server 40.
[0050] First, the CI job execution unit 71 sends a logical complexity estimation request 81 to the logical complexity estimation calculation unit 80 and a development priority estimation request 101 to the development priority estimation calculation unit 100 in order to estimate the computing resources required to execute the CI job 73.
[0051] When the logical complexity estimation unit 80 receives a logical complexity estimation request 81 (501), it evaluates the logical complexity of the target file (for example, a model file). In the case of a model file, the logical complexity estimation unit 80 may evaluate the logical complexity by measuring the input / output port size (kB) of the model (502).
[0052] In this embodiment, the CI server 70 calculates the input / output port size as the sum of the values obtained by multiplying the number of input ports in the model file by the size of each port and the number of output ports by the size of each port. As a result, the processing load on the CI job 73 increases as the number of input / output ports increases, so the input / output port size serves as an indicator of the processing load on the model file.
[0053] The logical complexity estimation unit 80 obtains information on the latest model file from the model file group 44 based on the file update information 50 received by the CI server 70 and measures the input / output port size. In addition, although the above example shows the input / output port size as an indicator of the processing load of the model file, it is not limited to this, and the sum of the number of input ports and the number of output ports may also be used as an indicator of the processing load of the model file.
[0054] The measured input / output port sizes are normalized using a widely known existing method to obtain a normalized logical complexity of 82 for the sake of simplifying evaluation (503). The normalized logical complexity of 82 is sent to the resource priority estimation unit 90 (504).
[0055] Figure 6 is a flowchart showing an example of the process performed by the development priority estimation calculation unit 100. This process is executed when the CI server 70 receives file update information 50, a pipeline input file 51, and a project identifier 52 from the version control server 40.
[0056] When the development priority estimation calculation unit 100 receives the development priority estimation request 101 (601), it sends a ticket information request 210 to the ticket management server 200 in order to evaluate the development priority of the project (602).
[0057] The ticket management server 200 has the function of managing ticket 201. Figure 3 is a block diagram showing an example of the data structure stored in the ticket management server 200.
[0058] In this embodiment, ticket information 211 includes all the information held by ticket 201, and the information included in ticket information 211 includes static information 202 that does not change over time and dynamic information 204 that changes regularly or irregularly over time. Static information 202 includes information 203 regarding the project completion deadline, and dynamic information 204 includes information 205 regarding the project progress, information 206 regarding the amount of unfinished tasks, information 207 regarding human resources in the project, and customer requests, supplier information, and internal company status 208.
[0059] When the ticket management server 200 receives a ticket information request 210 from the development priority estimation calculation unit 100, it sends all static and dynamic information contained in ticket 201 to the development priority estimation calculation unit 100.
[0060] In this embodiment, information is obtained from the ticket management server 200 each time the development priority is evaluated, so the development priority can be evaluated based on the latest dynamic information 204, and resources can be optimized with greater accuracy.
[0061] The development priority estimation unit 100 receives ticket information 211 from the ticket management server 200 (603), and evaluates the development priority using the ticket information 211 and the project identifier 52 received by the CI server 70 (604).
[0062] In this embodiment, the CI server 70's development priority estimation calculation unit 100 uses the project identifier 52 to identify the project to which the CI job 73 belongs, and evaluates only the information for the identified project from the static information 202 and dynamic information 204 included in the ticket information 211, thereby suppressing an increase in computational load. Note that development priority may also be evaluated using any information from the static information 202 and dynamic information 204.
[0063] The development priority estimation calculation unit 100 in this embodiment evaluates the static information 202 and dynamic information 204 as follows.
[0064] The development priority estimation unit 100 evaluates static information 202, specifically information 203 regarding the project completion deadline. For example, the shorter the time remaining until the completion deadline, the higher the development priority is set, and the faster the execution machine 411 capable of processing is selected.
[0065] The development priority estimation calculation unit 100 determines development priorities according to absolute criteria, regardless of their relationship with other projects. For example, the development priority estimation calculation unit 100 evaluates dynamic information 204, specifically information 205 regarding the progress of projects. For instance, if a project is ahead of schedule, its development priority is lowered; if it is behind schedule, its development priority is increased. This allows for preferential allocation of resources to projects that are behind schedule, thereby accelerating the progress of those projects.
[0066] The development priority estimation unit 100 evaluates dynamic information 204, specifically information 206 regarding the amount of incomplete tasks. For example, by increasing the development priority of projects with a large number of incomplete tasks, resources can be preferentially allocated to these projects, thereby accelerating task completion.
[0067] The development priority estimation calculation unit 100 evaluates the dynamic information 204, which is information 207 regarding human resources in a project. For example, projects with a large number of human resources are judged to be of high importance to the company and given a high development priority, while projects whose progress has stalled due to an unexpected reduction in project members are given a high development priority. Note that the evaluation criteria are not limited to the above examples; projects with a large number of human resources may simply be given a lower development priority, and projects with a small number of human resources may be given a higher development priority.
[0068] The development priority estimation unit 100 evaluates dynamic information 204, such as customer requirements, supplier information, and internal company conditions 208. For example, by considering the addition or rework of tasks that may arise due to additions or changes in customer requirements during the project, resources can be optimized by raising or lowering the development priority at different stages of the project.
[0069] The calculated development priority is normalized using a widely known existing method to simplify evaluation, resulting in a normalized development priority of 102 (605). The normalized development priority of 102 is transmitted to the resource priority estimation unit 90 (606).
[0070] Figure 7 is a flowchart showing an example of the processing performed by the resource priority estimation calculation unit 90.
[0071] When the resource priority estimation unit 90 receives the normalized logical complexity 82 and the normalized development priority 102 (701), it calculates the sum of the normalized logical complexity 82 and the normalized development priority 102 as the resource priority (702). The calculated resource priority is normalized using a widely known existing method to simplify evaluation and become the normalized resource priority 91 (703). The normalized resource priority 91 is transmitted to the resource determination unit 92 (704).
[0072] Figure 8 is a flowchart showing an example of the processing performed by the resource determination calculation unit 92.
[0073] When the resource determination calculation unit 92 receives the normalized resource priority 91 (801), it performs a process to determine the computing resources to be used by the job execution machine group 400. For example, the resource determination calculation unit 92 compares the normalized resource priority 91 with the normalized logical complexity-job execution machine correspondence table 47 (802) and uniquely determines the execution machine 411 that will execute the CI job 73 (803).
[0074] The resource determination calculation unit 92 sends the determined execution machine 411 for the CI job 73 as the resource determination result 93 to the CI job execution unit 71 (804).
[0075] The resource determination calculation unit 92 calculates the estimated completion time 61 of the CI job 73 from the normalized logical complexity 82 and the performance of the execution machine 411 (805), and sends the calculated estimated completion time 61 of the CI job 73 to the user terminal 2 (806).
[0076] In this embodiment, user 1 can find out the estimated completion time of CI job 73 by looking at the estimated completion time 61 of CI job received by user terminal 2, thereby improving convenience.
[0077] Based on the processing described above, the CI job execution unit 71 sends a job execution request 310, an input file 311, and CI job information 312 to the execution machine 411 that will be assigned the CI job 73 based on the received resource determination result 93, causing the machine to execute the CI job 73.
[0078] When the CI job execution unit 71 receives the job execution result 300 from the execution machine 411 to which the CI job 73 is assigned, it aggregates the job execution results 300 of the CI jobs 73 that make up the pipeline 72 to generate a pipeline execution result 60, and sends the generated pipeline execution result 60 to the version control server 40.
[0079] Figure 9 shows an example of the Normalized Resource Priority-Job Execution Machine Correspondence Table 47. Each entry in the Normalized Resource Priority-Job Execution Machine Correspondence Table 47 includes the performance 470 of the execution machine and the normalized resource priority 471-1 to 471-N for each CI job 73-1 to 73-N.
[0080] The performance of the execution machine (470) stores performance metrics for each execution machine (411) in the job execution machine group (400). The normalized resource priority ranges (471-1 to 471-N) are stored for each CI job (73) that have been pre-configured.
[0081] Furthermore, the performance of each execution machine (470) is pre-set according to the configuration of each execution machine (411). Performance indicators for each execution machine (411) can include metrics based on processor frequency and core count, as well as the amount of memory installed.
[0082] The resource determination calculation unit 92 determines the appropriate execution machine 411 for executing CI job 73 based on the calculated normalized resource priority 91 and the range of normalized resource priority 471 for CI job 73. For example, when assigning an execution machine for CI job 1(73-1), if the value of normalized resource priority 91 is 0.1 or more and less than 0.4, CI job 1(73-1) is assigned to execution machine M; if the value of normalized resource priority 91 is 0.4 or more and less than 0.8, CI job 1(73-1) is assigned to execution machine 2; and if the value of normalized resource priority 91 is 0.8 or more and 1 or less, CI job 1(73-1) is assigned to execution machine 1.
[0083] The machine allocation for each CI job (73 jobs) can be adjusted as needed based on the threshold of the corresponding normalized resource priority range (91). In particular, if the normalized resource priority (91) is 0, there are no suitable machines in the corresponding table.
[0084] A normalized resource priority of 91 being 0 means that the normalized logical complexity of 82 is 0, and that the file to be processed by CI job 73 does not contain any logic. In this case, it can be determined that there is no processing required for CI job 73, and the resource determination calculation unit 92 sends information to the CI job execution unit 71 that there is no suitable execution machine 411. On the other hand, even if the normalized development priority of 102 is 0, if the normalized logical complexity of 82 is not 0, the normalized resource priority of 91 is not set to 0. A normalized development priority of 102 being 0 means that the project corresponding to the project identifier 52 is not included in the ticket information 211.
[0085] For normalized resource priority 91, it is recommended to set the value from the normalized resource priority-job execution machine correspondence table 47 for each of the 73 types of CI jobs.
[0086] Furthermore, when calculating logical complexity, if CI job 73 is a compilation job, the number of lines in the source file should be used as the logical complexity, and if CI job 73 is a test job, the test vectors should be used as the logical complexity.
[0087] Furthermore, resource priority can be any indicator that represents the load on execution machine 411 when processing CI job 73, and is not limited to the example mentioned above.
[0088] As described above, the CI server 70 of this embodiment can estimate a normalized resource priority from a normalized logical complexity 82 obtained by statically analyzing model files and source files before the execution of each CI job 73 (each process), and a normalized development priority 102 estimated by comprehensively considering information on multiple projects. Based on the estimation results, it can appropriately allocate resources (execution machines 411) to which each CI job 73 (process) is assigned.
[0089] <Conclusion> As described above, the continuous integration system of the above embodiment can have the following configuration.
[0090] (1) A version control server (40) that manages the structure of the files (input file group 20), The system comprises a CI server (70) that requests the execution machines (411) of a group of job execution machines (400) to execute a CI job (73) in response to a request from the version control server (40); a ticket management server (200) that manages ticket information (211) including information about the project and information about the load of CI jobs executed during the execution of the project; and a group of job execution machines (400) that execute the CI job in response to a request from the CI server (70). The information regarding the aforementioned project includes dynamic information that changes over time. The ticket management server transmits the ticket information to the CI server in response to a request from the CI server. The continuous integration system is characterized in that the CI server selects an execution machine (computer, microcontroller, or server) to execute the CI job based on the ticket information.
[0091] With the above configuration, by comprehensively considering the results of estimating the processing load in advance before processing each process, along with information on multiple projects, and appropriately allocating resources to each process based on the results of this consideration, it becomes possible to optimize the amount of resources allocated to each process during processing execution across multiple projects as a whole.
[0092] (2) The continuous integration system described in (1) above, wherein the dynamic information includes information relating to the progress of the project.
[0093] With the above configuration, if a project is ahead of schedule, its development priority can be lowered, and if it is behind schedule, its development priority can be increased, thereby accelerating the progress of projects that are behind schedule.
[0094] (3) A continuous integration system as described in (1) above, wherein the information relating to the project includes information relating to the completion deadline of the project.
[0095] With the above configuration, the shorter the time remaining until the completion deadline, the higher the development priority of the execution task, and the more efficient the execution machine that can process it, the better it can be selected.
[0096] (4) The continuous integration system described in (1) above, wherein the dynamic information includes information regarding the amount of incomplete tasks.
[0097] With the above configuration, it is possible to accelerate the progress of projects with a large number of unfinished tasks by prioritizing the development of those tasks.
[0098] (5) A continuous integration system as described in (1) above, wherein the dynamic information includes information on human resources in the project.
[0099] With the above structure, projects with a large number of human resources can be judged as highly important to the company and given a higher development priority, while projects whose progress has stalled due to an unexpected reduction in project members can also be given a higher development priority. Note that the evaluation criteria are not limited to the examples above; projects with a large number of human resources can simply be given a lower development priority, and projects with a small number of human resources can be given a higher development priority.
[0100] (6) A continuous integration system as described in (1) above, wherein the dynamic information includes customer requests, information provided by suppliers, and internal company conditions (208).
[0101] With the above configuration, resources can be optimized by adjusting development priorities to higher or lower levels throughout the project, taking into account the addition or rework of tasks that may arise due to the addition or change of customer requirements during the project's progress.
[0102] (7) A continuous integration system as described in (1) above, wherein the CI server determines the priority of the tasks to which the execution machine is assigned based on the dynamic information and an indicator showing the load of the tasks to be executed, and selects an execution machine based on the determined priority.
[0103] With the above configuration, even for CI jobs that are judged to have a high development priority based on dynamic information 204, if the processing load of the CI job 73 itself is small, it may be sufficient even on the execution machine 411 with a lower processing speed. By comprehensively considering these factors, it is possible to optimize resources across multiple projects.
[0104] (8) A continuous integration system as described in (1) above, wherein the CI server requests the ticket information from the ticket management server when a pipeline input file (51) is input, and obtains the ticket information from the ticket management server.
[0105] With the above configuration, information is retrieved from the ticket management server 200 each time development priority is evaluated, allowing development priority to be evaluated based on the latest dynamic information 204, and enabling more accurate resource optimization.
[0106] (9) A continuous integration system as described in (1) above, wherein the CI server calculates an estimated task completion time from the performance of the selected execution machine and outputs the calculated estimated task completion time.
[0107] With the above configuration, users can find out the estimated completion time of a CI job by looking at the estimated completion time 61 received by user terminal 2, thus improving convenience.
[0108] (10) A continuous integration system as described in (1) above, wherein the information relating to the project includes the dynamic information and static information that does not change over time, and the CI server determines the priority for allocating the execution machines based on the dynamic information (202) and the static information (204) and an indicator showing the load of the tasks to be executed, and the priority is determined according to an absolute standard regardless of its relationship with other projects.
[0109] With the above configuration, the increase in computational load can be suppressed by evaluating only the information of the project to which the CI job belongs, rather than all projects.
[0110] It should be noted that the present invention is not limited to the embodiments described above, and various modifications are included. For example, the embodiments described above are described in detail to make the present invention easier to understand, and are not necessarily limited to those having all the configurations described. Furthermore, it is possible to replace parts of the configuration of one embodiment with the configuration of another embodiment, and it is also possible to add configurations from other embodiments to the configuration of one embodiment. In addition, for parts of the configuration of each embodiment, the addition, deletion, or substitution of other configurations can be applied individually or in combination.
[0111] Furthermore, each of the above configurations, functions, processing units, and processing means may be implemented in hardware, in whole or in part, for example, by designing them as integrated circuits. Alternatively, each of the above configurations and functions may be implemented in software by having the processor interpret and execute programs that realize each function. Information such as programs, tables, and files that realize each function can be stored in memory, a recording device such as a hard disk or SSD (Solid State Drive), or a recording medium such as an IC card, SD card, or DVD.
[0112] Furthermore, the control lines and information lines shown are those deemed necessary for explanatory purposes, and not all control lines and information lines are necessarily shown in the actual product. In reality, it is safe to assume that almost all components are interconnected. [Explanation of symbols]
[0113] 1 user 2 User terminals 11 processors 12 memory 13 Storage devices 14 Network Devices 15 Network 20 Input files 40 Version control servers 41 repositories 42 Branches 43 Source files 44 Model File Sets 45 CI scripts 46 Scripts for CI Jobs 47 Normalized Resource Priority - Job Execution Machine Correspondence Table 48 Pipeline configuration files 50 File Update Information 51 Pipeline Input Files 52 Development Project Identifier 60 Pipeline Execution Results 61 CI Job Completion Estimate 70 CI servers 71 CI Job Execution Unit 72 pipelines 73-1~73-N CI Jobs 1~N 80 Logical complexity estimation unit 81. Request for logical complexity estimation 82 Normalized Logical Complexity 90 Resource Estimation Calculation Unit 91 Normalized Resource Priority 92 Resource Determination Calculation Unit 93 Resource Decision Results 100 Development Priority Estimation Calculation Unit 101 Development Priority Estimation Request 102 Normalization Development Priority 200 Ticket Management Servers 201 tickets 202 Static information 203 Information regarding project completion deadlines 204 Dynamic Information 205 Information regarding the progress of the project 206 Information on the amount of incomplete tasks Information on human resources in project 207. 208 Customer requirements, supplier information, and internal situation 210 Ticket Information Request 211 Ticket Information 300 Job Execution Results 310 Job execution request 311 Input File 312 CI Job Information 400 job execution machines 411-1~411-M Execution Machines 1~M 470 Performance of the execution machine 471-1~411-N Normalized resource priority per CI job - corresponding to job execution machine 900 Pipeline configuration files 901 Code generation job
Claims
1. It is a continuous integration system, A version control server that manages the file structure, A CI server that requests execution machines in a group of job execution machines to execute CI jobs in response to a request from the aforementioned version control server, A ticket management server manages ticket information including information about the project and information about the load of CI jobs executed during the execution of the said project, The system includes a group of job execution machines that execute the CI jobs in response to requests from the CI server, The information regarding the aforementioned project includes dynamic information that changes over time. The ticket management server transmits the ticket information to the CI server in response to a request from the CI server. The continuous integration system is characterized in that the CI server selects an execution machine to execute the CI job based on the ticket information.
2. A continuous integration system according to claim 1, The continuous integration system is characterized in that the dynamic information includes information regarding the progress of the project.
3. A continuous integration system according to claim 1, A continuous integration system characterized in that the information relating to the said project includes information relating to the project's completion deadline.
4. A continuous integration system according to claim 1, The continuous integration system is characterized in that the dynamic information includes information regarding the amount of incomplete tasks.
5. A continuous integration system according to claim 1, The continuous integration system is characterized in that the dynamic information includes information on human resources in the project.
6. A continuous integration system according to claim 1, The continuous integration system is characterized in that the dynamic information includes customer requests, information provided by suppliers, and internal company conditions.
7. A continuous integration system according to claim 1, The CI server determines the priority of the tasks to which the execution machine is assigned, based on the dynamic information and an indicator showing the task load of the CI jobs to be executed. A continuous integration system characterized by selecting an execution machine based on the predetermined priority.
8. A continuous integration system according to claim 1, The aforementioned CI server is When a pipeline input file is received, the ticket information is requested from the ticket management server. A continuous integration system characterized by acquiring the ticket information from the ticket management server.
9. A continuous integration system according to claim 1, The aforementioned CI server is The estimated task completion time is calculated based on the performance of the selected execution machine. A continuous integration system characterized by outputting the estimated completion time of the calculated task.
10. A continuous integration system according to claim 1, The information relating to the aforementioned project includes the dynamic information and static information that does not change over time. The CI server determines the priority for assigning the execution machines based on the dynamic information, the static information, and an indicator showing the load of the tasks to be executed. The aforementioned priority is determined according to an absolute standard, regardless of its relationship with other projects, in a continuous integration system.
11. A continuous integration method performed by a continuous integration system, The aforementioned continuous integration system is A version control server that manages the file structure, A CI server that requests execution machines in a group of job execution machines to execute CI jobs in response to a request from the aforementioned version control server, A ticket management server that, in response to a request from the CI server, sends ticket information to the CI server, including information about the project and information about the load of CI jobs executed during the execution of the project. The system has a group of job execution machines that execute the CI jobs in response to requests from the CI server, The information regarding the aforementioned project includes dynamic information that changes over time. The aforementioned continuous integration method is The ticket management server transmits the ticket information to the CI server in response to a request from the CI server. A continuous integration method characterized in that the CI server selects an execution machine to execute the CI job based on the ticket information.
Citation Information
Patent Citations
Application file change processing method, device and system
CN110555317A
Method for realizing remote debugging of big data development based on K8S technology
CN114741280A
Project management system and integrated process management system
JP2016062342A
Program development support system and program development support method
JP2021105866A
Continuous integration system and continuous integration method
JP2021197098A