Zowe Overview - Automation, Testing, and Orchestration

Dan Kelosky Open Mainframe Team [email protected] linkedin.com/in/dkelosky

1 1 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Agenda

● Me ● Zowe ● Modern tools - purpose, how, & why I use them ● Answer questions ● Demos ○ test ○ build & deploy ○ CI

2 2 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Mainframe Tools

● SLIP ● GTF ● HLASM (31|64, Problem|Supervisor, System key[0-7], SRB|TCB) ● Conditional Assembly ● Metal C ● Endevor ● IPCS ● ISPF ● Console commands ● IEASYSxx, PROGxx, etc ● XDC ● RDz

3 3 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Distributed Tools

● Android

● Cloud dev (firebase) apps & serverless

● Web development (JQuery, Angular, Node.js, ...)

● Scripting (Perl, Python, Ruby, JavaScript, …)

● Editor extension (Brackets, Atom, VS Code, ...)

● CI (Travis, Circle, Azure pipelines, Jenkins, TeamCity, Drone, …)

4 4 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Personal Tools

5 5 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Zowe

6 6 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Zowe

UI ML

CLI APIs

7 7 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. API

https://phpenthusiast.com/blog/what-is-rest-api

https://www.indiamart.com/proddetail/ibm-mainframe-7046896433.html

8 8 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. API ML - Catalog

9 9 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. API ML - Discovery

https://github.com/Netflix/eureka

10 10 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. API ML - Gateway

https://github.com/Netflix/zuul

(unofficial)

11 11 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. UI & CLI

12 12 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Modern Tooling - Overlap

● Node.js

● perl

● python

13 13 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Modern Tooling - Parallels

● Symbolic substitution - &SYSNAME. ● Mustache, handlebars - {{ }}

14 14 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Modern Tooling - Integrations

● RDz / Eclipse plugins

● Jenkins plugins

● CI tools

15 15 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Modern Tooling - z/OS Limitations

16 16 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Development is Complicated

● Hybrid development - TypeScript (Node.js), Spring (Java), C++, Metal C, assembler, makefile, JCL ○ source controlled via git/GitHub ○ delivered through Endevor

● Team members use different editors, tools, git clients

● CLI, scripts, and task runner are common pieces

17 17 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Scripting

● Python ● Ruby ● Perl ● JavaScript / TypeScript ● Bash / Shell scripts ● Windows Batch ● REXX ● CLIST ● Groovy ● Go ...

18 18 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Scripting Examples

19 19 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Task Runners / Encapsulation Tools

● npm / yarn ● gradle ● grunt ● gulp ● make ...

20 20 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Task Runners / Encapsulation Tools Examples

21 21 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Testing Frameworks

● JUnit

● Jest

● PyUnit

● RSpec

● Mocha.js

22 22 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Testing Frameworks Examples

23 23 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Source Control

● git ● ● svn ● ChangeMan ● ISPW ● Endevor

● GitHub ● ● GitLab ...

24 24 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Source Control Examples

25 25 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. CI/CD

Jenkins Drone Concourse TeamCity

TeamCity Travis CI CircleCI Drone Cloud ...

26 26 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. CI/CD Examples

27 27 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. CI/CD Tooling

TSLint Codecov SonarQube JCLCheck TYPERUN=SCAN ...

28 28 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. CI Tooling Examples

29 29 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Demo 0

● API ML ● Desktop UI ● Commands ● VS Code

30 30 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Demo 1 - Testing

● npm run genjcl ● npm run allocate ● npm run upload ● npm run jcl ● npm run test

31 31 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Demo 2 - CI

Drone

32 32 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Examples & Repos

● https://medium.com/@dkelosky ○ Mainframe HLASM Continuous Integration Testing with Github and Drone ○ Building Mainframe Metal C and Testing with Jest and Zowe CLI ○ How to Automate z/OS Data Set Allocation Using Zowe & JSON ○ Mainframe Assembler & Zowe: “Hello World” Example

33 33 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Repos

● https://github.com/tucker01/awesome-zowe

34 34 | Broadcom Proprietary and Confidential. Copyright © 2019 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.