The Linux Foundation Projects
Skip to main content
AmbassadorsBlogZowe

Streamlining the Mainframe Code Build Stage with GitHub, Jenkins, and IntelliJ IDEA

By June 11, 2024June 14th, 2024No Comments

Written by Valery Aranouski, Open Mainframe Project Ambassador and DevOps Team Lead at IBA Group

As the need to integrate the traditionally robust mainframe environment with the broader world of software development grows, mainframe developers are embracing DevOps practices and open source tools from the Open Mainframe Project, including the Zowe framework. Recognizing this shift, organizations are exploring ways to modernize and open up their mainframe systems.

 

At IBA Group, we are dedicated to helping mainframe developers adapt to this shift by contributing to the Zowe framework initiative, with a focus on integrating IntelliJ IDEA, GitHub, and Jenkins.

Why Apply DevX and Devops to the Mainframe?

Developers are increasingly adopting practices like DevOps and DevX to enhance their development processes and deliver greater business value.

One of the principles of DevOps is repository-based development. Version control systems (VCS) help application teams to manage source code changes over time. GitHub, a cloud-based variation of the Git VCS, is used for storing, tracking, and collaborating on software projects.

Still, why did GitHub appear in the mainframe world? Among the understandable reasons, we will single out only two:

  • Widely used VCS such as SCLM, Endevor are too native tools for mainframes
  • These VCS tools require learning new and unfamiliar interfaces to be used in modern popular IDEs

Most applications are cross-platform. Developers apply different programming languages for different parts of the application on the different platforms. The same style of a code repository would better suit the needs of developers.

In such an example of cross-platform development, the use of unique mainframe tools would weaken the DevX practices of the team.

DevX focuses on creating a positive experience for the developer. It brings many benefits to organizations by making the development team more motivated and productive in creating high-quality software in less time.

Another principle of DevOps is Continuous Integration (CI). Jenkins is an open-source automation tool for CI/CD. Moreover, as an option, you can use the Jenkins plugin for IntelliJ IDEA called Jenkins Control. This allows you to run builds and track progress from the IDE without opening the Jenkins UI.

Why IntelliJ IDEA?

Tools mean a lot to DevX. The tools selected by the team should be easy to access and use.

IntelliJ IDEA offers a robust, feature-rich environment tailored for Java development, making it an ideal choice for mainframe developers working with languages like COBOL and Java, or even writing scripts in Python for test automation.

Its seamless integration with Git repositories and support for various plugins enhance productivity and streamline the development process.

Developers who prefer this IDE for cross-platform development can create a GitHub project directly within the IDE.  They run all Git commands through the IDE interface.

Unique Features of the DevOps-Compatible Mainframe Code Build

If we bring GitHub, Jenkins, and IntelliJ IDEA together and let them interact with a mainframe, we will be taking our first step toward DevX for mainframes. Here, we come to an automated source code build for mainframe applications in IntelliJ IDEA.

Our solution is based on two plugins and an SDK contributed by our team to Zowe, an open-source framework for mainframe development, which is part of the Open Mainframe Project.

Mainframe developers will benefit from the following features of the automated code build:

  • It’s robust and easy to configure while requiring no paid licenses.
  • There is no need to install any additional software or build components on the z/OS side.
  • Interaction between IntelliJ IDEA and a z/OS host, as well as between Jenkins and the z/OS host, is performed using z/OSMF RESTful services.
  • We will provide a GitHub repository template for you to create your own repository easily with predefined branches, a build script, Jenkins job import files, and a sample COBOL source file.
  • Changes to the source code are committed to the repository and distributed to the mainframe development environment from there.
  • Developers have to initiate a pull request and merge a source code change from feature branches into the repository development branch, then trigger a build.
  • For each developer working on the project, a code change is maintained and not merged with the development branch unless validated.
  • The build script automatically generates artifacts to deploy source code changes to the mainframe libraries, compile, and link edit modules according to the list of sources found and the build parameters from JSON configuration files.
  • Although the described code build solution is based on Zowe, there is no need to learn Zowe frameworks or the Kotlin language to use it unless you want to.

We showcased the base build version for COBOL applications at the SHARE Orlando conference, but we have been working on additions, such as HLASM, PL/I languages, CICS, and Db2 middleware. We have more ideas for new features that we’re eager to reveal soon.

In my next article, I will tell you more about these developments and share a link to the GitHub template with our solution.

What do You Get with Automated Source Code Build?

The mainframe code build using GitHub, Jenkins, and IntelliJ IDEA is especially useful for mainframe developers as it helps them reduce development time and increase successful deployments.

They can benefit from Zowe plugins for IntelliJ IDEA since developers do not need to manage JCL jobs and datasets. Instead, they perform familiar actions with source files rather than mainframe datasets.

What they do with COBOL for mainframe sources resembles day-to-day development actions for other platforms and development languages. However, we do not exclude the possibility of editing the source code on the mainframe side. If some developers still prefer to do so, they can clone the GitHub repository to a USS folder on the mainframe, edit and commit their changes, then push the changes to the remote repository and initiate a build from the Jenkins UI.

We are confident that, by following this modern approach, the development team will:

  • Be more productive and successful in developing code that meets business requirements
  • Deliver high-quality software faster with less team effort
  • Be satisfied with the process and results of their work
  • Easily embrace the new approach and attract newcomers to the team

In addition, GitHub is not just a place for a source code. The test automation scripts and test cases, configuration files and scripts belonging to the Infrastructure as a Code (IaC) are commonly stored there too. DevOps and Software Development Engineer in Test (SDET) teams can edit and maintain all these artifacts using JetBrains IDE software products with our Zowe extensions and solutions.

The solution is scalable and extensible, allowing for the addition of more pipeline stages such as automated testing, promotion, and deployment to testing and production environments.

Final Remarks

As an Open Mainframe Project Ambassador, I am dedicated to empowering mainframe developers to thrive in today’s dynamic IT landscape.

Whether you’re curious about adopting self-service provisions, exploring modern IDEs like IntelliJ IDEA, or seeking support for multiple development languages, such as COBOL, PL/I, HLASM, and Java, we’re here to assist you every step of the way.

If you’re ready to embark on this journey towards modernization but aren’t sure where to start, don’t hesitate to reach out to us. Our team at IBA Group is dedicated to bridging the gap for COBOL developers and empowering them to thrive in today’s dynamic IT landscape.

Check out more content on the Zowe Medium blog. Or, ask a question and join the conversation on the Open Mainframe Project Slack Channel #zowe-explorer, #zowe-cli, as well as #zowe-dev, #zowe-user, #zowe-api, or #zowe-onboarding. If this is your first time using the Open Mainframe Slack Channel register here.