0% found this document useful (0 votes)
82 views

GitlabCI DBB UCD

This document discusses building a CI/CD pipeline with GitLab CI, IBM Dependency Base Build (DBB), and IBM UrbanCode Deploy (UCD). It provides an overview of how these tools can be integrated to automate building, testing, and deploying code changes. The pipeline would include steps for code analysis, building artifacts, running tests, and deploying changes. References are also provided on tutorials for building pipelines with these tools.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
82 views

GitlabCI DBB UCD

This document discusses building a CI/CD pipeline with GitLab CI, IBM Dependency Base Build (DBB), and IBM UrbanCode Deploy (UCD). It provides an overview of how these tools can be integrated to automate building, testing, and deploying code changes. The pipeline would include steps for code analysis, building artifacts, running tests, and deploying changes. References are also provided on tutorials for building pipelines with these tools.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

{% endif %}

CI/CD - Building a pipeline with


Gitlab CI, DBB, and UCD

2021-11-09
Jean-Yves BAUDY
[email protected]

1
Eclipse, VS Code, Eclipse Dependency Base Build (IDzEE) IBM Z Development and
End to end Che (BYOI) zUnit (IDzEE) Test Enviroment (zD&T)
IBM Optim Test Data
Managament
IBM Developer for z/OS IBM Wazi Virtual Test Platform
DevOps Enterprise Edition (IDzEE) UrbanCode Build
IBM Wazi Workspaces
(Sandbox)
IBM Rational Test
Workbench
The IBM way IBM Wazi Workspaces
(Code)
IBM z/OS Cloudbroker
Open and
Flexible https://galasa.dev/

Code Build Provision Deploy Test

CI/CD Pipeline

Nexus

Analyze Plan Monitor Release

LEGEND

Analyze

Feedback,
approvals IBM Application IBM Engineering Workflow IBM Z APM Connect
Discovery and Delivery Management OMEGAMON
Note: Starting from the upper Intelligence
Operational Insights
left, products and significant
capabilities appear once, the
first time they are used in the
pipeline. Products and
capabilities are used at 2
multiple points.
Integrating IBM Z DevOps solutions with GitLab

Analyze IDE SCM Build Package Deployment

Wazi Analyze IDz, Wazi Code DBB UCD UCD, Ansible

SCM

3
Increase development velocity with built-in quality in your
pipeline
The DevOps pipeline is about automation and embedding quality into the CI/CD pipeline with reusable building blocks.

Dependency-Based Build (DBB) IDz Code Review UrbanCode Deploy (UCD)


A syntax-checking feature to A complete solution for managing
A generic factory to build all your packages, application deployments
integrate quality gates in the
software artifacts on z/OS and environments
pipeline

zAppBuild
A sample framework to define the
compile & link steps for z/OS source
code Wazi Analyze
A container-based analyzer to
understand relationships between
IDz zUnit z/OS artifacts
An integrated platform for Unit
Testing on z/OS
4
GitLab - A major component: the project

§ The project is the atomic component in GitLab’s philosophy:


− Contains a Git central repository
− Has an associated CI/CD configuration

§ Projects can be grouped into Groups:


− To share some properties or features
• Epics, Issues, Milestones
• Package Registry, Wiki, Snippets
− And/Or to be managed as sub-components of a large application
− Some Project properties can be promoted to the Group

§ Some features provide project-level and group-level information


− Security Dashboards (Ultimate version), VSM, Issues/Milestones

5
GitLab - The SCM part

6
GitLab - Issues, Issues Board and Milestone

7
A brief overview of GitLab CI/CD - Pipeline orchestration
§ For each GitLab project, a CI/CD context is created:
− The CI/CD pipeline is configured in a YAML file (.gitlab-ci.yml), which is stored in the repository
− AutoDevOps triggers the pipeline after each commit or merge request in the repository
− While it is tightly coupled to a project, a pipeline can be configured to trigger other pipelines (multi-project pipeline)

§ GitLab CI/CD Architecture components:


− The GitLab server manages the execution of the pipelines
− Runners execute the pipelines (specialized with Executors: SSH, Shell, Docker, Kubernetes, Custom, ...)
• Runner is not (yet officially) available on z/OS. You can use the SSH runner as a relay to z/OS.
Additional resources: https://www.ibm.com/support/pages/node/6355819

GitLab Server GitLab Runner BASH


(SSH executor)
Linux/Win/MacOS Linux/Win/MacOS/zLinux/zCX z/OS (USS)

• Work in progress for the GitLab runner port on z/OS: https://gitlab.com/gitlab-org/gitlab-runner/-/issues/27526


• Benefits:
• We can upload build result and zUnit report from the jobs

GitLab Server GitLab Runner BASH


(Shell executor)
Linux/Win/MacOS z/OS (USS)

8
GitLab CI - Pipelines’ capabilities

§ GitLab CI pipelines includes several facilities:


− Out-of-the-box Git clone/fetch
− Download/Upload of artifacts (could be used for logs, Unit testing reports, …)
− Inline scripting

§ Pipelines are made of stages, which contain jobs:


− 3 default phases in the pipeline (Build, Test, Deploy) but this can be customized
− Directed acyclic graphs can help to optimize the throughput of jobs
− Artefacts can be attached to pipelines (Test results, Code Coverage, compile listings, …) and potentially
reused over jobs

9
GitLab CI - Multi-project pipelines
§ As Mainframe applications are highly intertwined, the build workspace must contain all the artifacts from
other repositories. All dependencies of other applications must be cloned to USS.
§ Used to trigger pipelines of other projects
zAppBuild-Update:
stage: .pre
trigger:
project: development/dbb-zappbuild
strategy: depend

GenApp-Build:
stage: build
script:
- cd /u/mdalbin/${CI_BUILDS_DIR}/${CI_RUNNER_SHORT_TOKEN}/${CI_CONCURRENT_ID}/development/dbb-zappbuild/
- /usr/lpp/dbb/v1r0/bin/groovyz -Djava.library.path=/usr/lpp/dbb/v1r0/lib:/usr/lib/java_runtime64 build.groovy --
workspace /u/mdalbin/${CI_BUILDS_DIR}/${CI_RUNNER_SHORT_TOKEN}/${CI_CONCURRENT_ID}/development/genapp --application genapp --
workDir /u/mdalbin/${CI_PROJECT_DIR} --outDir /tmp --hlq MDALBIN.PROG.MORTV2GL --logEncoding UTF-8 --impactBuild --verbose

stages:
- .pre
- build

10
GitLab CI - Job pipeline output

11
References

§ Build a pipeline with GitLab CI, IBM Dependency Based Build, and IBM UrbanCode Deploy
− https://developer.ibm.com/tutorials/build-a-pipeline-with-gitlab-ci-dbb-and-ucd/

§ Build a pipeline with Jenkins, Dependency Based Build, and UrbanCode Deploy
− https://developer.ibm.com/tutorials/build-a-pipeline-with-jenkins-dependency-based-build-and-urbancode-deploy/

§ GitHub Repository Samples:


− https://github.com/ibm/dbb-pipeline

12
Demontration
13

You might also like