Sample pipeline scripts for Azure DevOps


(BMC.DB2.SPE2407)

The sample pipelines are located in AMI DevOps Sample Folder in the Azure DevOps directory, which is the directory to which the BMC-AMI-DevOps-Version-13.1.00-for-Db2-UC.zip file is downloaded and extracted. For example:

C:\Users\userName\Downloads\BMC-AMI-DevOps-Version-13.1.00-for-Db2-UC\BMC AMI DevOps Version 13.1.00 for Db2 - UC\Azure DevOps\AMI DevOps Sample Folder

Sample pipeline script for File Transmission

The following figure represents a sample pipeline script for File Transmission:

(BMC.DB2.SPE2307)

###
### Pipeline_File_Transmission_Sample.yml (for Azure DevOps)
###
# The sample pipeline performs Authentication + File Transmission steps using application defined command step.
# The sample pipeline script is defined to use various items like below:
#  a) References to variables added through Azure DevOps pipeline variable.
#  b) Use of Linux based sed command to replace input as variable name by variable definition from pipeline.    
#  c) Use of configuration file (Config_File_Transmission.yml), that is maintained in default root folder.
#     Example of properties of authentication step is taken from Config_File_Transmission.yml file:
#            step authentication Config_File_Transmission.yml
#     Note: If pipeline executes with default configuration file name config.yml, that is maintained in root folder, then file name is not required in step command.
#     Example of properties of authentication step is taken from default file name config.yml maintained in root folder:
#            step authentication
###

trigger:
- none           #manual trigger of the pipeline

resources:
  containers:
  - container: my_container
    image:attach:xwiki:Mainframe.Data-for-Db2.BMC-AMI-DevOps-for-Db2.AMA13100.Command-and-syntax-reference.Universal-Connector-samples-in-BMC-AMI-DevOps.Sample-pipeline-scripts-for-Azure-DevOps.WebHome@filename <Image location>/devopsuc:13.01.00.0003-GA
    options: -u root       #run the container as root user

pool: <name of the agent pool>     #name of the agent pool

container: my_container

steps:
# For certBased Authentication, uncomment the following task to download the client certificate stored
# under Azure Pipelines --> Library --> Secure files
# - task: DownloadSecureFile@1
#   name: clientCertificate
#   displayName: 'Download p12 client certificate'
#   inputs:
#     secureFile: '<clientCertificateName>.p12'

# Perform various initialization functions using Linux based command sed
- script: |
    echo "Replace variables defined in Config_File_Transmission.yml file"
    # Linux command sed is used to replace the config file variables with Azure DevOps pipeline variables
    sed -i "s/USER_ID_AUTH/$(user_id)/" Config_File_Transmission.yml
    sed -i "s/USER_PASS_AUTH/$(user_pass)/" Config_File_Transmission.yml
    # For certBased Authentication, uncomment the following 2 sed commands
    # sed -i "s|CERT_PATH_AUTH|$(clientCertificate.secureFilePath)|" Config_File_Transmission.yml
    # sed -i "s/CERT_PASS_AUTH/$(cert_pass)/" Config_File_Transmission.yml
    # Use syntax \<var name\> to find and replace the exact matching word
    sed -i "s/\<JOB_ID\>/$(job_id)/" Config_File_Transmission.yml
    sed -i "s/DDL_FILE_FT_UPLOAD/$(ddl_file)/" Config_File_Transmission.yml
    # Use Azure DevOps environment variables to fetch pipeline name, run number, run by and run mode of the executing pipeline
    sed -i "s/PIPELINENAME_VALUE/$(Build.DefinitionName)/" Config_File_Transmission.yml
    sed -i "s/RUNNUMBER_VALUE/$(Build.BuildNumber)/" Config_File_Transmission.yml
    sed -i "s/RUNBY_VALUE/$(Build.RequestedFor)/" Config_File_Transmission.yml
    sed -i "s/RUNMODE_VALUE/$(Build.Reason)/" Config_File_Transmission.yml
    echo "-   Config_File_Transmission.yml file is updated -"
  displayName: 'Initialization'

# Execute application step - authentication
- script: |
    step authentication Config_File_Transmission.yml
  displayName: 'Authentication'

# Execute application step - fileUpload (local_to_mainframe)
- script: |
    step local_to_mainframe Config_File_Transmission.yml
  displayName: 'File Transmission'

Sample pipeline script for Schema Migration

The following figure represents a sample pipeline script for Schema Migration:

(BMC.DB2.SPE2307)

###
### Pipeline_Schema Migration_Sample.yml (for Azure DevOps)
###
# The sample pipeline performs Authentication + File Transmission + Local Cat to DDL + Output Transmission + JCL Exec steps.
# The sample pipeline script is defined to use various items like below:
#  a) References to variables added in Variable group.
#  b) Use of Linux based sed command to replace input as variable name by variable definition from pipeline.    
#  c) Use of configuration file (Config_Schema_Migration_CompareDDL.yml), that resides in directory (non-root folder).
#     Example of properties of authentication step is taken from config file "Config_Schema_Migration_CompareDDL.yml", that is
#       maintained inside folders "Azure/SAMPLE/MAA/configFiles":
#            step authentication Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_CompareDDL.yml
#  d) Azure DevOps based condition command or bash script based IF... ELSE...FI is used.     
###

trigger:
- none         #manual trigger of the pipeline

resources:
  containers:
  - container: my_container
    image:attach:xwiki:Mainframe.Data-for-Db2.BMC-AMI-DevOps-for-Db2.AMA13100.Command-and-syntax-reference.Universal-Connector-samples-in-BMC-AMI-DevOps.Sample-pipeline-scripts-for-Azure-DevOps.WebHome@filename <Image location>/devopsuc:13.01.00.0003-GA
    options: -u root           #run the container as root user

variables:
- group: AA_SAMPLE            #name of the Variable group
- name:  job_id               #name of global variable
  value: AA121222             #value of global variable

pool:
  name: <name of the agent pool>     # name of the agent pool

stages:
- stage: 'Implement_Schema_Changes'
  displayName: 'Implement Schema Changes'
  jobs:
  - job: 'schema_change'     
    displayName: 'Schema Change Job'
    container: my_container
    steps:
    # For certBased Authentication, uncomment the following task to download the client certificate
    # stored under Azure Pipelines --> Library --> Secure files
    # - task: DownloadSecureFile@1
    #   name: clientCertificate
    #   displayName: 'Download p12 client certificate'
    #   inputs:
    #     secureFile: '<clientCertificateName>.p12'

    # Perform various initialization functions using Linux based command sed
    - script: |
        echo "Replace variables defined in Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_CompareDDL.yml file"
        # Linux command sed is used to replace the config file variables with variables defined in Variable group
        sed -i "s/USER_ID_AUTH/$(user_id)/" Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_CompareDDL.yml
        sed -i "s/USER_PASS_AUTH/$(user_pass)/" Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_CompareDDL.yml
        # For certBased Authentication, uncomment the following 2 sed commands
        # sed -i "s|CERT_PATH_AUTH|$(clientCertificate.secureFilePath)|" Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_CompareDDL.yml
        # sed -i "s/CERT_PASS_AUTH/$(cert_pass)/" Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_CompareDDL.yml
        # Use syntax \<var name\> to find and replace the exact matching word
        sed -i "s/\<JOB_ID\>/$(job_id)/" Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_CompareDDL.yml
        sed -i "s/DDL_FILE_FT_UPLOAD/$(ddl_file)/" Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_CompareDDL.yml
        # Use Azure DevOps environment variables to fetch pipeline name, run number, run by and run mode of the executing pipeline
        sed -i "s/PIPELINENAME_VALUE/$(Build.DefinitionName)/" Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_CompareDDL.yml
        sed -i "s/RUNNUMBER_VALUE/$(Build.BuildNumber)/" Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_CompareDDL.yml
        sed -i "s/RUNBY_VALUE/$(Build.RequestedFor)/" Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_CompareDDL.yml
        sed -i "s/RUNMODE_VALUE/$(Build.Reason)/" Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_CompareDDL.yml
        echo "-   Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_CompareDDL.yml file is updated -"
      displayName: 'Initialization'

    # Execute application step - authentication
    - script: |
        step authentication Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_CompareDDL.yml
      displayName: 'Authentication'

    # Execute application step - fileUpload (local_to_mainframe)
    - script: |
        step local_to_mainframe Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_CompareDDL.yml
      displayName: 'Transfer DDL to mainframe'

    # Execute application step - localCatToDDL (localCat_to_DDL)
    - script: |
        step localCat_to_DDL Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_CompareDDL.yml
      displayName: 'Schema Migration-Local Cat to DDL'

    # Fetch the return code from output file output_local_cat_ddl.properties
    # and set in output variable to use it later  
    - script: |
        source output_local_cat_ddl.properties    #read and fetch the return code from output file
        echo "##vso[task.setvariable variable=retCode]$compareRC"   #set the return code in output var  
      displayName: 'Return Code-Local Cat to DDL'##

    # Execute application step - outputTransmission (download_output)
    - script: |
        step download_output Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_CompareDDL.yml
      displayName: 'Download Files - CDL/WL/EXECJCL/IR'

    ###
    # Execute application step - jclExecutionUsingPDSMember (jclExecutionPDS)  
    # Method-1: Using Azure DevOps based condition keyword- Run step only if condition is satisfied.
    ###
    - script: |
        step jclExecutionPDS Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_CompareDDL.yml
      condition: and(succeeded(), le(variables['retCode'], '0004'))
      displayName: 'Run JCL to Implement Schema Change'  
    ###
    # Execute application step - jclExecutionUsingPDSMember (jclExecutionPDS)  
    # Method-2: Using bash script based IF...ELSE---FI keyword- Run step only if condition is satisfied.
    --##--#
    # - script: |
    #     if [ "$(retCode)" -le "0004" ]; then
    #       step jclExecutionPDS Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_CompareDDL.yml
    #     else
    #       echo "Condition is not satisfied, hence skip the run"
    #     fi
    #   displayName: 'Run JCL to Implement Schema Change'--

Sample pipeline script of Schema Migration and Schema Standards

(BMC.DB2.SPE2310)

The following figure represents a sample pipeline script of Schema Migration and Schema Standards:

###
### Pipeline_Schema_Migration_Schema_Standards_Sample.yml (for Azure DevOps)
###
# The sample pipeline performs Authentication + Local Cat to DDL + Schema Standards (schema type-CDL) steps using application defined command step.
# The sample pipeline script is defined to use various items like below:
#  a) References to variables added in Variable group.
#  b) Use of Linux based sed command to replace input as variable name by variable definition from pipeline.    
#  c) Use of configuration file (Config_Schema_Migration_Schema_Standards.yml), that resides in directory (non-root folder).
#     Example of properties of authentication step is taken from config file "Config_Schema_Migration_Schema_Standards.yml", that is
#       maintained inside folders "Azure/SAMPLE/MAA/configFiles":
#            step authentication Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_Schema_Standards.yml
#  d) Azure DevOps based condition command or bash script based IF... ELSE...FI is used.
###

trigger:
- none           #manual trigger of the pipeline

resources:
  containers:
  - container: my_container
    image:attach:xwiki:Mainframe.Data-for-Db2.BMC-AMI-DevOps-for-Db2.AMA13100.Command-and-syntax-reference.Universal-Connector-samples-in-BMC-AMI-DevOps.Sample-pipeline-scripts-for-Azure-DevOps.WebHome@filename <Image location>/devopsuc:13.01.00.0003-GA
    options: -u root       #run the container as root user

variables:
  - group: SS_SAMPLE            #name of the Variable group
  - name:  job_id               #name of global variable
    value: SS121222             #value of global variable

pool: <name of the agent pool>     #name of the agent pool

stages:
- stage: 'Schema_Migration_Schema_Standards'
  displayName: 'Schema Migration and Schema Standards'
  jobs:
  - job: 'schema_standards_cdl'
    displayName: 'Schema Standards-CDL Job'
    container: my_container
    steps:
    # For certBased Authentication, uncomment the following task to download the client certificate
    # stored under Azure Pipelines --> Library --> Secure files
    # - task: DownloadSecureFile@1
    #   name: clientCertificate
    #   displayName: 'Download p12 client certificate'
    #   inputs:
    #     secureFile: '<clientCertificateName>.p12'

    # Perform various initialization functions using Linux based command sed
    - script: |
        echo "Replace variables defined in Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_Schema_Standards.yml file"
        # Linux command sed is used to replace the config file variables with variables defined in Variable group
        sed -i "s/USER_ID_AUTH/$(user_id)/" Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_Schema_Standards.yml
        sed -i "s/USER_PASS_AUTH/$(user_pass)/" Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_Schema_Standards.yml
        # For certBased Authentication, uncomment the following 2 sed commands
        # sed -i "s|CERT_PATH_AUTH|$(clientCertificate.secureFilePath)|" Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_Schema_Standards.yml
        # sed -i "s/CERT_PASS_AUTH/$(cert_pass)/" Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_Schema_Standards.yml
        # Use syntax \<var name\> to find and replace the exact matching word
        sed -i "s/\<JOB_ID\>/$(job_id)/" Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_Schema_Standards.yml
        # Use Azure DevOps environment variables to fetch pipeline name, run number, run by and run mode of the executing pipeline
        sed -i "s/PIPELINENAME_VALUE/$(Build.DefinitionName)/" Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_Schema_Standards.yml
        sed -i "s/RUNNUMBER_VALUE/$(Build.BuildNumber)/" Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_Schema_Standards.yml
        sed -i "s/RUNBY_VALUE/$(Build.RequestedFor)/" Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_Schema_Standards.yml
        sed -i "s/RUNMODE_VALUE/$(Build.Reason)/" Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_Schema_Standards.yml
        echo "-   Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_Schema_Standards.yml file is updated -"
      displayName: 'Initialization'

    # Execute application step - authentication
    - script: |
        step authentication Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_Schema_Standards.yml
      displayName: 'Authentication'

    # Execute application step - localCatToDDL (localCat_to_DDL)
    - script: |
        step localCat_to_DDL Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_Schema_Standards.yml
      displayName: 'Schema Migration - Local Cat to DDL'

    # Fetch the return code from output file output_local_cat_ddl.properties
    # and set in output variable to use it later
    - script: |
        source output_local_cat_ddl.properties    #read and fetch the return code from output file
        echo "##vso[task.setvariable variable=retCode]$compareRC"   #set the return code in output var
      displayName: 'Return Code - Local Cat to DDL'##

    ###
    # Execute application step - schemaStandards (schema_standards_cdl)
    # Method-1: Using Azure DevOps based condition keyword- Run step only if $compareRC condition is satisfied.
    ###
    - script: |
        step schema_standards_cdl Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_Schema_Standards.yml
      condition: and(succeeded(), le(variables['retCode'], '0004'))
      displayName: 'Schema Standards – Analyze CDL'
    ###
    # Execute application step - schemaStandards (schema_standards_cdl)
    # Method-2: Using bash script based IF...ELSE---FI keyword- Run step only if $compareRC condition is satisfied.
    --##--#
    # - script: |
    #     if [ "$(retCode)" -le "0004" ]; then
    #       step schema_standards_cdl Azure/SAMPLE/MAA/configFiles/Config_Schema_Migration_Schema_Standards.yml
    #     else
    #       echo "Condition is not satisfied, hence skip the run"
    #     fi
    #   displayName: 'Run JCL to Analyze CDL'--

Sample pipeline script of Schema Standards for DDL type

(BMC.DB2.SPE2310)

The following figure represents a sample pipeline script of Schema Standards for DDL type:

###
### Pipeline_Schema_Standards_Schema_Type_DDL_Sample.yml (for Azure DevOps)
###
# The sample pipeline performs Authentication + Schema Standards (schema type-DDL) steps using application defined command step.
# The sample pipeline script is defined to use various items like below:
#  a) References to variables added through Azure DevOps pipeline variable.
#  b) Use of Linux based sed command to replace input as variable name by variable definition from pipeline.    
#  c) Use of configuration file (Config_Schema_Standards_Schema_Type_DDL.yml), that is maintained in default root folder.
#     Example of properties of authentication step is taken from Config_Schema_Standards_Schema_Type_DDL.yml file:
#            step authentication Config_Schema_Standards_Schema_Type_DDL.yml
#     Note: If pipeline executes with default configuration file name config.yml, that is maintained in root folder, then file name is not required in step command.
#     Example of properties of authentication step is taken from default file name config.yml maintained in root folder:
#            step authentication
###

trigger:
- none           #manual trigger of the pipeline

resources:
  containers:
  - container: my_container
    image:attach:xwiki:Mainframe.Data-for-Db2.BMC-AMI-DevOps-for-Db2.AMA13100.Command-and-syntax-reference.Universal-Connector-samples-in-BMC-AMI-DevOps.Sample-pipeline-scripts-for-Azure-DevOps.WebHome@filename <Image location>/devopsuc:13.01.00.0003-GA
    options: -u root       #run the container as root user

pool: <name of the agent pool>     #name of the agent pool

container: my_container

steps:
# For certBased Authentication, uncomment the following task to download the client certificate stored
# under Azure Pipelines --> Library --> Secure files
# - task: DownloadSecureFile@1
#   name: clientCertificate
#   displayName: 'Download p12 client certificate'
#   inputs:
#     secureFile: '<clientCertificateName>.p12'

# Perform various initialization functions using Linux based command sed
- script: |
    echo "Replace variables defined in Config_Schema_Standards_Schema_Type_DDL.yml file"
    # Linux command sed is used to replace the config file variables with Azure DevOps pipeline variables
    sed -i "s/USER_ID_AUTH/$(user_id)/" Config_Schema_Standards_Schema_Type_DDL.yml
    sed -i "s/USER_PASS_AUTH/$(user_pass)/" Config_Schema_Standards_Schema_Type_DDL.yml
    # For certBased Authentication, uncomment the following 2 sed commands
    # sed -i "s|CERT_PATH_AUTH|$(clientCertificate.secureFilePath)|" Config_Schema_Standards_Schema_Type_DDL.yml
    # sed -i "s/CERT_PASS_AUTH/$(cert_pass)/" Config_Schema_Standards_Schema_Type_DDL.yml
    # Use Azure DevOps environment variables to fetch pipeline name, run number, run by and run mode of the executing pipeline
    sed -i "s/PIPELINENAME_VALUE/$(Build.DefinitionName)/" Config_Schema_Standards_Schema_Type_DDL.yml
    sed -i "s/RUNNUMBER_VALUE/$(Build.BuildNumber)/" Config_Schema_Standards_Schema_Type_DDL.yml
    sed -i "s/RUNBY_VALUE/$(Build.RequestedFor)/" Config_Schema_Standards_Schema_Type_DDL.yml
    sed -i "s/RUNMODE_VALUE/$(Build.Reason)/" Config_Schema_Standards_Schema_Type_DDL.yml
    echo "-   Config_Schema_Standards_Schema_Type_DDL.yml file is updated -"
  displayName: 'Initialization'

# Execute application step - authentication
- script: |
    step authentication Config_Schema_Standards_Schema_Type_DDL.yml
  displayName: 'Authentication'

# Execute application step - schemaStandards (schema_standards_ddl)
- script: |
    step schema_standards_ddl Config_Schema_Standards_Schema_Type_DDL.yml
  displayName: 'Schema Standards – Analyze DDL'

 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*