Close

Implementation Use Case 2

Implementation Use Case 2

Integration of a digital butler in the form of a Jenkins CI.

Description of the Use Case

Because Use Case 1 was completed very quickly and successfully, the question of further automation arose immediately. Why? It is less error-prone, more precise, faster, and more robust.

The first case was to be extended by instantiating a Jenkins server in the cloud. Similar to setting up EC2 instances, Jenkins was installed in an AMI . The major difference between this instance and the instances used for testing is that this instance will run continuously.

The reason for this continuous operation: This instance is meant to monitor the connected software repository (version control) GIT for changes in the code and ongoing tests at all times.

The advantage of a Continuous Integration instance

Effective Quality Assurance through Jenkins

If a team member makes a change to a part of the software, like the Matlab/Simulink model, this change should be immediately detected and verified. Typically, in software version control, there are multiple levels.

For quality assurance, the following principle has been established: Only changes that meet the quality standard are merged into the production path. In contrast, in a development path, the development hands over the change to the version management. This is detected by Jenkins.

Now, first, quality assurance measures like our software tests should demonstrate that the change is mature enough for the production path.

If it is mature enough, it will be incorporated. If not, the change will be discarded, and the development team will receive feedback indicating that the change is causing issues. This is usually communicated through an email from Jenkins.

Benefits of Using Jenkins

  • Jenkins takes over the user’s job and can initiate tests.
  • Jenkins continuously monitors the correct execution and shuts down the instances once they are finished.
  • Operational processes can be defined arbitrarily and implemented easily.
  • Jenkins is very easy to configure.
  • Web-based user interface that allows convenient configuration and control from any computer with the appropriate access rights.
  • Seamless integration with version control systems like GitLab and GitHub through so-called webhooks.

Additionally, Jenkins offers a wide range of useful plugins, including the EC2 plugin. With its help, EC2 instances are automatically launched, monitored, and pipeline jobs (tests) are executed.

Cloud-based Testing Environment of Jenkins CI – Architecture for Use Case 2

Summary for Use Case 2

Use Case 2 was successfully implemented and represents an impressive integration of cloud services into our CI environment. The seamless integration was achieved effortlessly, thanks to the excellent documentation of the plugins used.

Security Activities

A significant portion of the work focused on security activities, such as opening inbound ports and setting up webhooks to fetch files from private repositories, and managing access using access tokens.

Communication Relationships

Additionally, communication relationships between the AWS services and the Jenkins server had to be established to enable automatic scaling through the automatic creation and connection of new instances. Thanks to this innovative solution, we were able to successfully overcome the challenges of Use Case 1.

Benefits of the Autoscaling Solution

As soon as changes are made in the Git repository, the Jenkins server automatically initiates the creation of new EC2 instances and starts the execution of the pipeline jobs.
The Jenkins server autonomously monitors the created instances and terminates them immediately once the test cases are completed and the results have been uploaded.

Current Challenges

The current solution does not automatically detect when test cases are stuck and run longer than expected, failing to terminate them in a timely manner.

Proposed Solution

Internal monitoring mechanisms, known as ‘watchdogs’, can be implemented. These watchdogs can stop test cases if they unexpectedly run for an extended period to control execution time and prevent bottlenecks.