fbpx
spk-logo-tm-2023
0%
1-888-310-4540 (main) / 1-888-707-6150 (support) info@spkaa.com
Select Page

Optimal Continuous Integration Best Practices (Part 3)

windchill features best plm software
Written by Carlos Almeida
Published on November 4, 2021
November, 2021 As I noted in “Continuous Integration Best Practices—Part 1” and “Continuous Integration Best Practices—Part 2,” there are 10 best practice principles associated with Continuous Integration. In the previous articles, we covered the first six. In this article, we pick up where we left off and talk about principles seven and eight. For review, the full set of principles are outlined below:

1) Maintain a code repository

2) Automate the build

3) Make the build self-testing

4) Everyone commits to the baseline every day

5) Every commit (to baseline) should be built

6) Keep the build fast

7) Test in a clone of the production environment

8) Make it easy to get the latest deliverables

9) Everyone can see the results of the latest build

10) Automate deployment

Number Seven (7):  Test In A Clone Of The Production Environment

I, for one, would be very hesitant to board a new airplane that was only evaluated in a wind tunnel and had never attempted actual flight. Certainly, engineers can determine performance characteristics in the testing environment of a wind tunnel.  But, it does not subject the craft to the same conditions as the “production” environment (e.g., the sky). In the same way, complex software products are not truly “tested” if the testing environment does not replicate  the characteristics of the production environment.

The Role of the “Staging” Environment

The ideal goal is to have a pre-production or “staging” area that represents a clone of the production environment.  Then, deploy each build to this staging environment for automated testing. Having said that, this principle is another example in which the ideal is often unattainable in practice.  Therefore, the objective should be to come as close to meeting this principle as is allowed by your constraints. Rather than a one-to-one clone of production, we must usually make do with a scaled version.

Number Eight (8):  Make It Easy To Get The Latest Deliverables

When a build and test cycle is completed, artifacts are produced. These artifacts could be compiled binaries, class files, executables, documents, testing results, or reports. Principle 8 states that it should be relatively easy for authorized parties to access these deliverables.

Check-In the Deliverables

It is better to use checked-in deliverable artifacts rather than simply doing a pull of the code. Why? The artifacts generated during the testing phase are immutable. Therefore, when the artifact is pulled into a production environment, it is guaranteed that it was tested and that there haven’t been any changes since then, no matter how small. If anybody has the question, “Are we sure this is the same thing we tested?” you can generate an audit trail that proves it. There are several groups of people in a project that can benefit from using this principle. If the build is successful, non-developer stakeholders can access the product for evaluation and to provide feedback. If the build failed, having easy access to the build deliverables reduces the time required for QA to identify the root causes. Again, reduce the time it takes to get feedback.

Make it Easy = Faster Feedback

Easy access for stakeholders means faster feedback. Faster feedback accelerates the software lifecycle by allowing rapid evaluation of how closely the project is tracking against the requirements. Easy access for QA means they don’t have to waste time re-running a build in order to obtain artifacts for diagnostic purposes. If done well, easy access to deliverables can make it possible to further optimize the build process itself. By this I mean that if you are 100% certain that the current set of changes has no impact on a specific set of artifacts, you can reuse those unaffected artifacts from a previous successful build. Basically, the stakeholders don’t need to waste time rebuilding the deliverables. Therefore, the feedback loop is further shortened for the developers. Joshua Kling, Software Engineer (SPK)

Next Steps:

  1. Take stock of your current SDA process. Contact SPK to help identify potential improvements and a methodology to get there. Then enjoy faster development times, greater visibility, and more automation!
  2. Contact SPK and Associates to learn more about our continuous integration and continuous delivery services, and flexible solutions for your company’s needs.
  3. Read our White Papers & Case Studies for examples of how SPK leverages technology to advance engineering and business for our clients.
  4. Subscribe to our blog to read further about smart engineering technology solutions and development operations topics.

Latest White Papers

Accelerating Product Development the SPK Way

Accelerating Product Development the SPK Way

Developing high-quality products quickly can be a challenge without the proper tools, processes, and partners to help. Dive into this eBook to discover how partnering with SPK can help you achieve product development success.What You Will Learn In this eBook, we will...

Related Resources

Accelerating Product Development with AI-Powered GitLab Duo

Accelerating Product Development with AI-Powered GitLab Duo

Getting products designed and manufactured quickly is necessary to stay afloat in a competitive market. When working with software-driven products, this timeline can be stricter. Whether you're launching a new application or updating features for a legacy product,...

Transitioning Your Engineering Calculations to Mathcad Prime 11

Transitioning Your Engineering Calculations to Mathcad Prime 11

As the world of engineering continues to evolve, so does the need for more sophisticated tools to manage complex calculations and data.  The end-of-sale of Mathcad 15 and Mathcad Prime 1.0-6.0 marks a significant shift, as PTC moves forward with its latest offering,...

Reduce Friction in DevSecOps with Black Duck

Reduce Friction in DevSecOps with Black Duck

Modern developers are constantly under pressure to go faster.  Achieving a faster time to market, faster revenue growth, and faster innovation are the main goals of nearly every organization. However, speed without security can lead to costly setbacks. That’s where...