|
| 1 | +--- |
| 2 | +title: Deploying using individual actions |
| 3 | +tags: [getting_started] |
| 4 | +keywords: |
| 5 | +summary: "The following steps take you through the individual actions to deploy a Node.js application in CICS." |
| 6 | +sidebar: cdp_sidebar |
| 7 | +permalink: cdp-Deploying-using-individual-actions.html |
| 8 | +folder: cdp |
| 9 | +toc: false |
| 10 | +--- |
| 11 | + |
| 12 | +The `zowe cics-deploy push bundle` command performs a set of actions to deploy applications to CICS, as can be seen in [Deploying your first app](cdp-cdp-Deploying-your-first-app). The main actions include: |
| 13 | + |
| 14 | +* undeploy the old version of the CICS bundle in CICS |
| 15 | +* upload the new version of the CICS bundle to z/OS |
| 16 | +* run `npm install` on z/OS to resolve Node.js application dependencies |
| 17 | +* deploy the CICS bundle in CICS. |
| 18 | + |
| 19 | +However, there may be situations where you need more control of these actions or perform alternate actions. The following sections describe how each of these actions can be performed independently, enabling you to form a sequence of commands to achieve your needs. |
| 20 | + |
| 21 | +### Undeploy a CICS bundle |
| 22 | + |
| 23 | +Undeploying a CICS bundle disables the CICS bundle resource (BUNDLE) in CICS. Disabling the CICS bundle causes the resources defined in it to also be disabled. For Node.js applications, CICS sends a SIGTERM signal that can be handled in the application to stop in a controlled manner, such as stopping new requests and completing existing requests. Once the CICS bundle has been disabled it is then discarded in CICS. |
| 24 | + |
| 25 | +```console |
| 26 | +zowe cics-deploy undeploy bundle --name Express |
| 27 | +``` |
| 28 | + |
| 29 | +Alternatively, if you want to disable the CICS bundle, but to not discard it: |
| 30 | + |
| 31 | +```console |
| 32 | +zowe cics-deploy undeploy bundle --name Express --target-state disabled |
| 33 | +``` |
| 34 | + |
| 35 | +{% include note.html content="This command does not remove the CICS bundle from the z/OS directory." %} |
| 36 | + |
| 37 | +### Upload a CICS bundle to z/OS |
| 38 | + |
| 39 | +Before uploading the CICS bundle to z/OS, you need to ensure the target directory is empty in order to prevent merging with a previously deployed version of the CICS bundle. |
| 40 | + |
| 41 | +There are several ways to run shell commands and scripts on z/OS, such as SSH, batch jobs, and Zowe. When using Zowe, an SSH connection is established using information in the Zowe ssh profile, and then the shell .profile for the user will be run to setup the environment. The command is then run in the directory specified by the `--cwd` option. The return code from the Zowe CLI will be the same as that returned by the command run on z/OS, enabling you to take action in your script in error scenarios. |
| 42 | + |
| 43 | +For example, to remove the target directory: |
| 44 | + |
| 45 | +```console |
| 46 | +zowe zos-uss issue ssh "rm -Rv *" --cwd "/var/cicsts/bundles/myexpressapp_1.0.0" && echo RC=$? |
| 47 | +``` |
| 48 | + |
| 49 | +{% include tip.html content="You can run several commands in one request using the syntax described in [sh — Invoke a shell](https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.bpxa500/sh.htm)." %} |
| 50 | + |
| 51 | +Typically you will need to upload some files as binary, some as text, and exclude others that are not required to run the application. In addition, it is best practice to tag files on z/OS as binary or with their text codepage to allow for correct codepage translation by editors and environments such as Node.js. You can specify these requirements in a `.zosattributes` file and use the Zowe CLI to upload and tag files in a single command. |
| 52 | + |
| 53 | +For example, create file **~/myExpressApp/.zosattributes** in the CICS bundle: |
| 54 | + |
| 55 | +```properties |
| 56 | +# Don't upload node_modules |
| 57 | +node_modules - |
| 58 | + |
| 59 | +# Don't upload things that start with dots |
| 60 | +.* - |
| 61 | + |
| 62 | +# Upload the following file types in binary |
| 63 | +*.jpg binary binary |
| 64 | +*.png binary binary |
| 65 | +*.gif binary binary |
| 66 | +*.zip binary binary |
| 67 | +*.eot binary binary |
| 68 | +*.svg binary binary |
| 69 | +*.ttf binary binary |
| 70 | +*.woff binary binary |
| 71 | + |
| 72 | +# Convert CICS Node.js profiles to EBCDIC |
| 73 | +*.profile ISO8859-1 IBM-1047 |
| 74 | +``` |
| 75 | + |
| 76 | +Then upload the CICS bundle to z/OS: |
| 77 | + |
| 78 | +```console |
| 79 | +zowe zos-files upload dir-to-uss ~/myExpressApp/ /var/cicsts/bundles/myexpressapp_1.0.0 --recursive --attributes ~/myExpressApp/.zosattributes |
| 80 | +``` |
| 81 | + |
| 82 | +### Run npm on z/OS |
| 83 | + |
| 84 | +A Node.js application typically depends on packages that are described in `package.json`. The dependencies can be installed by running `npm install` in the z/OS directory containing `package.json`, for example: |
| 85 | + |
| 86 | +```console |
| 87 | +zowe zos-uss issue ssh "npm install" --cwd "/var/cicsts/bundles/myexpressapp_1.0.0" |
| 88 | +``` |
| 89 | + |
| 90 | +### Deploy a CICS bundle |
| 91 | + |
| 92 | +Deploying a CICS bundle defines a CICS bundle resource (BUNDLE), then installs it, and finally enables it. When the CICS bundle is enabled, the Node.js application is started. For example: |
| 93 | + |
| 94 | +```console |
| 95 | +zowe cics-deploy deploy bundle --name Express --bundle-directory /var/cicsts/bundles/myexpressapp_1.0.0 |
| 96 | +``` |
| 97 | + |
| 98 | +Alternatively, to define and install the BUNDLE but not enable it: |
| 99 | + |
| 100 | +```console |
| 101 | +zowe cics-deploy deploy bundle --name Express --bundle-directory /var/cicsts/bundles/myexpressapp_1.0.0 --target-state disabled |
| 102 | +``` |
0 commit comments