Trying to establish a pipeline template in Azure for automated deploys on commit (to certain branch names).
Need some help with the following. (Perhaps once completed will form a base point for Azure deploys, like the Jenkins example in the NaturalOne help).
Is there a pipeline expert who might be able to help (or i’ll keep fumbling around until I can solve it).
Example:
azure-pipelines.yml
Ant Script for TripsNat deploy for committed files
trigger:
Dev
pool:
vmImage: ubuntu-latest
Use a separate repo location of resources for use in the ant script below - holds the jars required for publish
These jars are REFERENCED in the lib options for the ant script below (perhaps need to be copied to the working directory?)
script: echo Trying nat deploy to
displayName: ‘test deploy’
Use a task to download the previously created artifact (files below) from last successful run into the tripsnat main dir for Ant execution: cache_deploy.properties, history_deploy.txt, timestamp_deploy.properties
After ant execution, these files need to republished again (as modified from the Ant run)
task: DownloadPipelineArtifact@2
Copy the downloaded artifact files from previous step into the working directory
task: CopyFiles@2
Ant execution
task: Ant@1
inputs:
Here the referenced repo for the jars required is used in the ant script - these might need to reside somewhere in the working directory perhaps
NOTE As we have incremental deploys - I had to ensure the moving agent and pool was handled (hence the bash script to deal with the change in the cache properties file… ALSO azure checks out our git repo WITHOUT the name and directly to the working directory (so handled…)
We have the sysobjh uploading to the mainframe too for review and migrating to other environments as required.
Hope this helps others, enjoy.
trigger:
- Dev
pool:
name: Prod-BuildPool
## Checkout of the repo occurs by default in azure
stages:
- stage: SetupDeployNaturalMainframeModules
jobs:
## Download the last successful built artifact for Ant deploy (includes properties files and jars). This is loaded into the targetPath.
- job: performBuildAndDeployNatural
steps:
- task: DownloadPipelineArtifact@2
inputs:
buildType: 'specific'
project: '$(System.TeamProject)'
buildVersionToDownload: 'latestFromBranch'
pipeline: 'natural'
branchName: 'refs/heads/E1'
artifactName: 'natDeployProperties'
targetPath: '$(System.DefaultWorkingDirectory)'
## The following jars are required in the lib options for the ant script below (we store the jars in a local hosted nexus repo)
## https://nexus.bcz.gov.au/service/rest/repository/browse/IMMI_RAW/softwareag/november2022/ (curl commands below)
## NOTE: These are bundled in published artifacts, so no need to perform CURL these fetches again (only if version changes to republish to the trailing artifact)
# steps:
# - bash: |
# curl -o com.ibm.icu.charset_4.8.1.jar http://nexus.bcz.gov.au/repository/IMMI_RAW/softwareag/november2022/com.ibm.icu.charset_4.8.1.jar -O -J -L
# curl -o com.ibm.naturalone.icu_4.8.1.jar http://nexus.bcz.gov.au/repository/IMMI_RAW/softwareag/november2022/com.ibm.naturalone.icu_4.8.1.jar -O -J -L
# curl -o com.softwareag.natural.tools_9.2.1.0000-0304.jar http://nexus.bcz.gov.au/repository/IMMI_RAW/softwareag/november2022/com.softwareag.natural.tools_9.2.1.0000-0304.jar -O -J -L
# curl -o com.softwareag.naturalone.natural.ant_9.2.1.0000-0304.jar http://nexus.bcz.gov.au/repository/IMMI_RAW/softwareag/november2022/com.softwareag.naturalone.natural.ant_9.2.1.0000-0304.jar -O -J -L
# curl -o com.softwareag.naturalone.natural.auxiliary_9.2.1.0000-0304.jar http://nexus.bcz.gov.au/repository/IMMI_RAW/softwareag/november2022/com.softwareag.naturalone.natural.auxiliary_9.2.1.0000-0304.jar -O -J -L
# curl -o com.softwareag.naturalone.natural.ndvserveraccess_9.2.1.0000-0304.jar http://nexus.bcz.gov.au/repository/IMMI_RAW/softwareag/november2022/com.softwareag.naturalone.natural.ndvserveraccess_9.2.1.0000-0304.jar -O -J -L
## This script replaces the current user agent for the cache_deploy_.properties file so the ant script can check for module changes, formatted to match file!
- bash: |
file='$(System.DefaultWorkingDirectory)/cache_deploy_.properties'
userAgent='$(System.DefaultWorkingDirectory)'
userAgent=${userAgent//\\/\\\\}
userAgent=${userAgent//:/\\:}\\\\
echo "User agent being updated:" $userAgent
sed -i -e '2,$s/^[^s]*s\\\\/'"${userAgent//\\/\\\\}/" "$file"
name: adjustUserAgent
displayName: 'Adjust cache properties files to current user agent'
## Ant execution (Mainframe deploy magic)
- task: Ant@1
env:
JAVA_HOME: 'D:\Software-tools\JDK\Open\jdk-11' ## The jars from above require JDK 11
inputs:
## The project in Azure is checked out WITHOUT a project name, so setup Ant to run without a project name
options: '-lib $(System.DefaultWorkingDirectory) -Dnatural.ant.project.rootdir= -Dnatural.ant.project.name='
buildFile: 'deploy.xml'
publishJUnitResults: true
testResultsFiles: '**/TEST-*.xml'
## After ant execution (modifies files), these files need to published as an artifact again (as modified from the Ant run)
- task: CopyFiles@2
inputs:
SourceFolder: '$(Pipeline.Workspace)'
Contents: |
**/cache_deploy_.properties
**/history_deploy_.txt
**/timestamp_deploy_.properties
**/com.ibm.icu.charset_4.8.1.jar
**/com.ibm.naturalone.icu_4.8.1.jar
**/com.softwareag.natural.tools_9.2.1.0000-0304.jar
**/com.softwareag.naturalone.natural.ant_9.2.1.0000-0304.jar
**/com.softwareag.naturalone.natural.auxiliary_9.2.1.0000-0304.jar
**/com.softwareag.naturalone.natural.ndvserveraccess_9.2.1.0000-0304.jar
TargetFolder: '$(Build.ArtifactStagingDirectory)'
flattenFolders: true
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact properties'
inputs:
ArtifactName: natDeployProperties
### TODO These FILES could be added to a separate branch (or repo) - can checked out and committed rather than the artifact method...
# **/cache_deploy_.properties
# **/history_deploy_.txt
# **/timestamp_deploy_.properties
'''