Toolchain

Getting Started

To get started building your own mainframe DevOps pipeline, we have provided pipeline examples and setup instructions using Jenkins. To implement a pipeline using other tools, refer to Mainframe CI using alternatives Jenkins.

Example code and documentation are provided for:

WARNING

The code published serves as example code, using Compuware example applications and environments. It needs to be adjusted to site specific needs and requirements.

Note

The descriptions and tutorials assume a certain level of familiarity with using Jenkins, Topaz for Total Test and other Compuware tools. The required level of knowledge expected, is not too high. E.g. it helps to know, how to define a new job in Jenkins.

Code examples

Code examples are stored in this GitHub repository https://github.com/cpwr-devops/DevOps-Examples/ (opens new window).

Pipeline examples

We have published several examples of "complete" pipelines which show different process steps and techniques in Jenkins.

  • Mainframe-CI-Example-pipeline - (jenkinsfile (opens new window)) - a scripted pipeline using parameters. This is a simple approach to a DevOps pipeline that allows you to get up and going quickly, but may not be the best when scaling pipelines across your enterprise. The job is intended to be triggered after promoting code within ISPW

    Note

    This pipeline serves as the model for most of the other pipelines examples. Meaning, other pipelines follow the same structure, implementing bascially the process and just differing in nuances, e.g. the types of test being executed at different stages of the development process, and demonstrating certain techniques that prove to be helpful.

  • Mainframe_CI_Pipeline_from_Shared_Lib - (groovy (opens new window)) - a pipeline loaded from a Jenkins shared library. Shared Libraries are a useful approach to scale pipelines across an enterprise since it moves the bulk of the pipeline logic to shared components that individual pipelines can reference as steps. This allows organizations to develop pipelines in a more standard way. The job is also intended to be triggered after promoting code within ISPW.

    Note

    Older versions of this pipeline made use helper classes to encapsulate some of the complexity and make the flow of the job easier to folow. Thanks to the changes in the Compuware CLI and plugins the complexity of the code required to implement such a pipeline has been reduced so much that the use of these classes does not seem to be necessary anymore.

  • Combined Pipeline: The following two pipeline definitions are part of a more elaborate process. They are called by a Jenkins job "distrubuting" the work to either of the scripts based on the ISPW operation (generat or promote) triggering the webhook and Jenkins job.

    Note

    Also using the Shared Library technique, these two example show how Shared Library scripts can be used for modularization and re-use of existing code to implement such more elaborate processes.

  • Git/ISPW pipeline:

Other Code examples

Next to the pipeline examples, we also publishe code snippets and short Jenkins jobs that demonstrate individual features and use cases of the Compuware plugins or CLIs.

The GitHub repository is organized as follows:

What has changed in April 2021

Over the recent few releases of Topaz for Total Test, the Topaz CLI, ISPW, the ISPW CLI and the corresponding Jenkins plugins, integration between different tools has been greatly improved, moving much of the complexity of implementing certain requirements from the code of the scripts into functionality provided by the plugins/CLI. Therefore, many of the example pipelines will have become far simpler, compared to the older versions, while providing the same flexibility and functionality as before. For customers this means that the coding effort and complexity of the resulting pipeline scripts has been reduced considerably.

Tools Used

The example pipelines use a development scenario based on:

Instructions for configuring the various tools can be found in the Configuration section of this site.

The code repository folder structure

Based on the description above and due to the requirements for the use of Pipeline Shared Libraries (opens new window) in Jenkins, the folder structure of the DevOps-Examples repository is as follows:

    (root)
    +- resources                                            # Configuration files used by the pipelines
    +- src                                                  # (Groovy) source files
    |   +- Jenkinsfile                                      # "simple" example job scripts
    |   +- misc-examples                                    # non Jenkins related (non Groovy) code examples
    |       +- AzureDevOps
    |           +- PipelineYAML                             # YAML file(s) describing Azure DevOps pipelines (builds or releases)
    |           +- Powershell                               # Powershell scripts being used by an Azure DevOps example pipeline
    +- vars                                                 # Shared Library Pipeline Examples