Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extend Azure pipeline template with release pipelines and release deployments #208

Merged

Conversation

dennis-behm
Copy link
Member

This PR is adding additional capabilities for the Azure template:

  • Deployment to controlled test environments
  • Leverage Azure environments to document which build is deployed in which environment
  • Automated computation of release tags, and automated tagging of release candidates and the production release

Signed-off-by: Dennis Behm <dennis.behm@de.ibm.com>
Signed-off-by: Dennis Behm <dennis.behm@de.ibm.com>
Signed-off-by: Dennis Behm <dennis.behm@de.ibm.com>
Signed-off-by: Dennis Behm <dennis.behm@de.ibm.com>
Signed-off-by: Dennis Behm <dennis.behm@de.ibm.com>
Signed-off-by: Dennis Behm <dennis.behm@de.ibm.com>
@dennis-behm dennis-behm marked this pull request as ready for review February 1, 2024 15:29
Copy link
Collaborator

@M-DLB M-DLB left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @dennis-behm - I've proposed some rewording, and also a minor change for consistency in the deploy template itself.


Depending on your selected deployment technology, review the definitions and (de-)/activate the appropriate steps.

The pipeline uses the Azure concepts `Stage`, `Jobs` and `Tasks`, as well leverages Gitlab templates.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Leverages Gitlab templates" ? Isn't it Azure DevOps pipelines templates instead?


## Prerequisites

To leverages this template, access to an Azure DevOps environment and an Azure Pipeline agent that can connect to your mainframe environment is required. Please review the setup instructions of this [techdoc](https://www.ibm.com/support/pages/node/6422813).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we rephrase to:
To leverages this template, the access to an Azure DevOps environment is required, and an Azure DevOps Pipeline agent must be configured to connect to your mainframe environment.


The template leverages the [SSH Task](https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/ssh-v0?view=azure-pipelines) to invoke the [Common Backend scripts](../Common-Backend-Scripts/) via the configured ssh endpoint. Alternatively, the template can be modified to use the [CmdLine task](https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/cmd-line-v2?view=azure-pipelines) to leverage an alternative communication technology such as Zowe CLI.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we switch to uppercase 'ssh'?


The pipeline uses the Azure concepts `Stage`, `Jobs` and `Tasks`:
The backend scripts need to be configured for the selected technologies to operate correctly.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

backend scripts -> Common Backend Scripts
Not sure I fully understand this sentence, what do you mean by 'the selected technologies'?


![](images/ado_pipelineOverview.png)
The implemented tagging of important commits in the git history, leverages the Azure CLI, that needs to be available on the Azure runner. Please follow the [documentation](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) to make the Azure CLI available to all agents within the agent pool that the pipelines will use.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we rephrase to something like this?
To tag important commits in the history of the application's Git repository, the Azure CLI is used and must be available on the Azure runner. Please follow the documentation to install the Azure CLI on all the agents within the agent pool that the pipelines will use.

zosHostname | zOS - Host name (or Host IP address) for SFTP connection
zosSFTPUser | zOS - Host user for SFTP connection
azureArtifactFeedID | Feed ID of the Azure artifact for publishing the package (when publishing to Azure DevOps Artifacts)
azureArtifactVersionOption | Azure artifact version option (when publishing to Azure DevOps Artifacts)

### Supplied Azure pipeline templates

The directory [templates](templates/) contains additional [Azure pipeline templates](https://learn.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops&pivots=templates-includes#parameters-to-select-a-template-at-runtime) that implement actions that are leveraged by the core pipeline template to provide a central control over the tagging and release deployment process. Please review the templates with your Azure administrator and adjust the reference within the [azure-pipelines.yml](azure-pipelines.yml#L32) file.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we rephrase to something like:
The directory templates contains additional Azure pipeline templates that implement actions used in the main pipeline template. These actions help to keep a central control over the tagging and release deployment process.

To download files from the build workspace on z/OS Unix System Services, it requires to use a `CmdLine` task and write a script.
SSH communication from a `CmdLine` task does not use the Service Connection.
To make the agent installation independent of any configurations outside of Azure, a private SSH key is installed as part of the pipeline to connect to the z/OS system through a `CmdLine` task.
To download files from the build workspace on z/OS Unix System Services, it requires to use a `CmdLine` task and leverage a script to pull the log files from the mainframe to the Azure agent. The used SSH communication from a `CmdLine` task does not use the Service Connection. To make the agent installation independent of any configurations outside of Azure, a private SSH key is installed as part of the pipeline to connect to the z/OS system through a `CmdLine` task.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor rephrasing:
To download files from the build workspace on z/OS Unix System Services, the pipeline uses a CmdLine task and leverages a script to pull the log files from the mainframe to the Azure agent.

@@ -0,0 +1,13 @@
# README

This folder contains [Azure DevOps Templates](https://learn.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops&pivots=templates-includes) yaml configurations, that are referenced by the core Azure pipeline.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

small suggestions:
'yaml' -> 'YAML'
'core Azure pipeline' -> 'main Azure pipeline'


This folder contains [Azure DevOps Templates](https://learn.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops&pivots=templates-includes) yaml configurations, that are referenced by the core Azure pipeline.

Please work with your Azure DevOps administrators where to maintain these scripts.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'Please work with your Azure DevOps administrators where to maintain these scripts.'
'Please work with your Azure DevOps administrators to agree on how and where to maintain these scripts.'

Comment on lines 42 to 44
- deployment: DEPLOY_${{ parameters.environmentName }}
dependsOn: RetrievePackage
displayName: "Deploy-${{ parameters.environmentName }}"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we have a consistent naming convention if possible?
deployment: Deploy to ${{ parameters.environmentName }}
displayname: Deploy to ${{ parameters.environmentName }}

Copy link
Member Author

@dennis-behm dennis-behm Feb 5, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now I need to create new screenshots ;)

Signed-off-by: Dennis Behm <dennis.behm@de.ibm.com>
@dennis-behm
Copy link
Member Author

@M-DLB , please see the updates in cd1898f

Copy link
Collaborator

@M-DLB M-DLB left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, thank you @dennis-behm !

@dennis-behm dennis-behm merged commit b835585 into IBM:main Feb 6, 2024
1 check passed
@dennis-behm dennis-behm deleted the feature/azuretemplates/releasepipelines branch February 6, 2024 14:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants