Release Containers with Generate Impacts
Contents
- Getting Started with SCM – BMC AMI DevX Code Pipeline
- Release Management and Generate Impacts
- Assignment #1
- Assignment #2
- Assignment #3
- Assignment #4
Getting Started with SCM – BMC AMI DevX Code Pipeline
The goal of this Test Drive section is to provide you with experience using Agile Source Code Management, Deployment, and Release Automation on a mainframe platform. BMC AMI DevX Code Pipeline enables developers to quickly and safely build, test and deploy mainframe code.
This Test Drive will take you through the following activities:
- Creating Containers, both Assignments and a Release Container
- Checking out copy books
- Using a special LINK type
- Adding to Release Container
- Generating Impacts 2 different ways
- Promoting to Production
- Closing Containers
Instructions:
- This guide contains many screenshots to provide a visual reference
- Please note each place that you must enter your own specific ID or number
- You must complete each step before proceeding to the next to successfully follow the guide
If at any point during your experience the host connection times out, you may need to log back in to the Test Drive host connection.
In this Test Drive the screen shots provided have used specific values that may differ from your assigned values. These were provided in your email notice.
Release Management and Generate Impacts
Four developers are in 4 different assignments and are making changes for the Q4 Corporate Release. They check out various tasks into their individual assignments, and share them with the Release Container, they will use Generate Impacts to gather the impacted components and then the Release Coordinator will promote the entire Release to PRD.
The Repository View lists the COPY Components for your application.
Assignment #1
Let's create a Release Container named TDRELnn, where nn is your assigned number.
The Release Container should now appear in the Containers View. Note the Type is Release as opposed to Assignment. When you create your assignments, you should be able to use this Release name and also put the tasks into the Release container at the same time you add them to the Assignment container.
Now we want to change 2 copybooks and then find out what programs are using the copybooks, add these to the assignment, recompile, and promote them to Production with the copybooks.
This will take you to the Add New Assignment dialog to create the assignment for your 2 Copybooks.
A message will be displayed providing you with your new Assignment name. Make note of it for the Assignment #1.
Two tasks were checked out to your Assignment.
You should end up in the Assignment View. If not,
We need to do this to make sure that all the programs that use these copy books have the new version of the copy books before they are promoted to Production. By selecting Generate Impacts, we will get the list of programs and the option to recompile them in the Assignment Container so that we pick up the new copy books.
The Generate Impacts view opens and you will see TPROG04 and TSUBR04. These 2 programs use the TCPYA04 and TCPYB04 copybooks, which means that they are impacted by the copybook changes.
The message below will appear asking if you want to process the remaining list of impacts in the Generate Impacts view. This will pick up the other program.
You want to add these programs to your assignment and generate them. They will be recompiled using the Production source. No need to check out the source since nothing has changed in it. We are only regenerating to pick up the new copybooks.
The Enter Values to Add and/ or Generate window appears.
The Generate Impacts process is complete. The Generate is then attempted.
You will see that the Program Tasks have been added to your Assignment and Generated. The Action shows as Compile only, which means that the program was generated using the next highest source found in the path.
These are the same tasks that are in Assignment #1. This is because you selected TDRELnn for your release when creating Assignment #1 and this related the 2 containers together.
Your Code Pipeline Administrator has configured this promotion path to also allow for the deployment of the tasks to any or all of three different environments for QA testing. This is called Selective Deployment, and is covered in detail in another BMC Test Drive script.
You will see the promote completed message; four tasks have been promoted to QA2.
Assignment #2
In this section we will show how Code Pipeline supports standard mainframe types like COB, JCL, etc., as well as 2 special types.
In Code Pipeline, the LKED type is used to supply the link-edit control cards to a generate process. The LKED task must have the same name as the program, and it must exist at the same level or a higher level (including Prod) to be useable by a generate of the program.
The LINK type also contains link-edit control cards, but it is not associated with a program. It is a stand-alone type which is generated. The control cards will name the load module. The generate process will not do any pre-compile or compile steps. The generate JCL will contain a LKED step only. This step will use the LINK type's control cards to build the load module and name it and the resulting load module will be a generate part associated with the LINK task, just like a load module is a part to a COB type.
Let's browse this member.
This member (MAINCOB) is used when linking program MAINCOB as part of the generate process. It includes 4 subroutines and, if you notice, it changes the name of the load module from MAINCOB to MAINLOAD. The LKED MAINCOB module exists in PRD and will be found during the generate as long as it is in the same path that you are currently working in.
This brings up the SUPRLINK component.
Let's browse this member.
This SUPRLINK component provides the include cards for building the load module and well as the load entry point and the name of the load module.
This will be Assignment 2.
You will see a message saying Assignment was successfully created (screenshot not shown).
You will see a message saying that 2 tasks were checked out to the assignment.
This will bring up a list of all programs that are calling these 2 copy books.
The Generate View will open. Here we see MAINCOB and SUPRLINK are using the 2 copybooks TCPYAA and TCPYBA.
Code Pipeline will ask you if you want to process the remaining list.
This will add your programs to your assignment to regenerate them.
You should receive messages like these.
You will see a list of your 2 source components (program and link control cards) and 2 copybooks. The programs have been generated with an Action of Compile only. This means they were compiled using the Production source in this case and this source was not checked out. The source had no changes and the compile was to pick up the new copybooks so no need to check out the source.
This will promote everything to the QA2 level. Once the promotion is complete you will get a promotion completed message (screenshot not shown).
Assignment #3
Let's continue to Developer #3. We need to create an Assignment and Add with checkout the copybook TCPYSBA.
You should get a message saying your assignment was successfully created (screenshot not shown).
Task was checked out to assignment.
This will take you to the Generate Impacts (GI) View.
This will add and generate all these components into your Assignment.
The following message should appear.
A generate attempted message should also appear.
We now need to promote these to the next level.
You should receive the following warning message. We have already promoted MAINCOB and SUPRLINK to QA2 in another Assignment, but our warning is a good overlay – we are based on version 1, so we can replace version 1.
This will move the MAINCOB and SUPRLINK versions into the warehouse at the QA2 level. Our new versions will become the live versions at the QA2 level.
Once the promotion is complete you will get a promotion completed message (screenshot not shown). At this point you can also look inside the Release Container and see all the tasks from the 3 Assignment containers if you wish.
Assignment #4
Let's move on to the final Assignment container. Next, we will be looking for all the programs that call the program DATERTN, and then recompiling them to make sure they pick up the new version of DATERTN. First we check out DATERTN, and then we will perform a Generate Impacts to locate all of the calling programs.
Let's make a change but don't break the program.
We must now generate DATERTN.
Now we need to Generate Impacts; this will bring up a list of all the tasks that call DATERTN.
This will take you to the Generate Impacts View. The view shows the programs that call DATERTN.
You should see the following 2 messages.
Once the promotion is complete you will get a promotion completed message (screenshot not shown).
Let's view our Release container.
You now see which assignments are part of this Release container.
Once the promotion is complete you will get a promotion completed message (screenshot not shown).
You should see everything is in STG except for the 2 programs that were overlaid and moved to the warehouse. These are the 2 tasks in your Assignment and Release which show as inactive at the QA2 level. The promotion to Production can be done individually and thus separately in each of the 4 Assignments or all together from the Release. In this case you want all these tasks to move together so you will choose the promotion from the Release Container.
A notification will appear in the lower right of the DevX Workbench indicating the application has been configured to require an approval for the promotion to PRD. The Tasks are locked in a SET for a Promote process, but the SET needs approval before the promote can proceed.
This will approve the Release, and everything will promote to Production, as shown in the Life Cycle view below.
Now we will close the 4 Assignments and then the Release Container. What follows is the order in which they must be processed.
For audit purposes, Closed Assignments, Sets, and Releases are never deleted from Code Pipeline. They are just filtered out of the standard day-to-day filtering. Once an Assignment, Set, or Release is closed it is removed from the standard filtered list, but it is still part of Code Pipeline history and can be viewed at any time.
You are done! Your job was to create 4 assignment containers, check out copy books into them, create a Release container, and perform Generate Impacts to pull in and recompile the associated programs. As a part of this exercise, you have been able to use BMC AMI DevX Workbench for Eclipse and Code Pipeline to execute a workflow:
- Created Containers, both Assignments and a Release Container
- Checked out copy books, and programs with a Release Container selected
- Used the special LKED and LINK types
- Generated Impacts 2 different ways – by task or by Assignment Container
- Handled overlay warnings due to concurrent development
- Promoted to Production from a Release Container instead of individual Assignment Containers
- Closed Assignment Container
- Closed Release Container
Congratulations! This completes the Code Pipeline tutorial for BMC Test Drive.