Creating z/OS® component linked versions

You can use the linked version type to create a sequence of interconnected versions that maintains the logical progression of changes.

Before you begin

You must have performed the following tasks:
  • Installed the z/OS® agent and ensure that it is running.
  • Ensured that a valid z/OS® component is available in the server.
Note: The linked version type is currently supported for only external GIT repositories. Therefore, you must provide external repository inputs when you create a linked version.

About this task

You can create a linked version by running the buztool.sh command, which is included with the HCL DevOps Deploy (Deploy) z/OS® agent.

Procedure

Run the buztool.sh command, which is included with the z/OS® Deploy agent package.
Example commands:
  • Creating a root version
    buztool.sh createlinkedversion -v feature-1.0 -c MYCOMP -s /u/build/shiplist.xml -prop /u/version.prop -to.hash 2b1820db6bd59dd5301038cb05b8411b81732b17 
    
  • Creating a child version
    buztool.sh createlinkedversion -v feature-2.0 -c MYCOMP -s /u/build/shiplist.xml -prop /u/version.prop -from.hash 6f755de14c77c9f688fb51f3801ac1cf4744dd6e -to.hash 2b1820db6bd59dd5301038cb05b8411b81732b17
Additionally, the buztool.sh arguments required for creating a linked version are as follows:
Buztool argument Description
createlinkedversion The argument to create a linked version
-from.hash Specifies the commit from which a build tool like IBM Dependency Based Build calculates the changed files and performs a build. The system assumes that a previous version already exists for this commit, and Deploy uses that version as the parent for the new version that you create.
-to.hash Specifies the commit hash in the repository where the build runs, typically the HEAD of the branch. This commit will be mapped to the version that you are creating.
-parent.version Specifies the parent version name for the version that you are creating. This field is required only when multiple versions exist for the commit ID specified in the -from.hash argument.
-v, -version The name of the version to create. If a version is not specified, a version name is generated from the current time stamp. The version name can contain only letters, numbers, and spaces.
-s, -shiplist The location of the ship list file.
-c, -component The component name in Deploy. The component name can contain only letters, numbers, and spaces.

Results

You have created a linked version.
Important:
  • You can map a Git repository to one component only. Deploy enforces this rule by preventing you from creating a version in a component when a version for the same commit already exists in another component.
  • For linked versions, the shiplist that you use to create the version must include a non-empty deployType attribute. This attribute classifies the artifacts and enables to process different artifact types separately during deployment. For example, JCL artifacts might use a deployType value of BATCH, while DBRMartifacts might use BINDS.

  • The deployType value must not contain spaces or special characters. Significantly, the deployType determines the directory name where all packaged artifacts for the version are stored. For more information on how this directory structure affects deployment behavior, see z/OS Utility.

  • Before you begin using linked versions, you must select a consistent and meaningful naming convention for deployType to ensure proper grouping of artifacts.

Notes:
  • The resource-level deployType takes precedence over the container-level deployType in plug-in steps such as Generate Artifact Information and Multiple Generate Artifact Information.
  • You can delete only those versions that do not have child versions from the Versions tab of the component.

Example

A sample shiplist is as follows:
<?xml version="1.0" encoding="CP037"?>
<manifest type="MANIFEST_SHIPLIST">
    <container name="BLD.JCL" type="PDS" deployType="JCL">
        <resource name="BLZCPBTK" type="PDSMember"/>
    </container>
    <container name="BLD.LOAD1" type="PDS" deployType="CICSLOAD">
        <resource name="*" type="PDSMember"/>
    </container>
    <container name="BLD.LOAD2" type="PDS">
        <resource name="ORDRSET" type="PDSMember" deployType="CICSLOAD"/>
        <resource name="RDBKC01" type="PDSMember" deployType="CICSLOAD"/>
    </container>
</manifest>