17165: Update training after going back over it step-by-step
[arvados.git] / doc / user / cwl / arvados-vscode-training.html.md.liquid
1 ---
2 layout: default
3 navsection: userguide
4 title: "Developing CWL Workflows with VSCode"
5 ...
6 {% comment %}
7 Copyright (C) The Arvados Authors. All rights reserved.
8
9 SPDX-License-Identifier: CC-BY-SA-3.0
10
11 Imported from https://github.com/arvados/arvados-vscode-cwl-training
12 git hash: 0a544f917de8bc2538e1582a82af205c1000adf5
13
14 {% endcomment %}
15
16 These lessons give step by step instructions for using Visual Studio
17 Code (abbreviated "vscode") to develop CWL workflows on Arvados.
18
19 1. Set up SSH
20 1. Install vscode and necessary extensions, then use vscode to connect to an Arvados shell node for development
21 1. Register a workflow, run it on workbench, and view the log
22 1. Upload input, run a workflow on it, and view the output
23 1. Register a workflow with default inputs
24 1. Run a workflow without registering it
25
26 ## 1. SSH Setup
27
28 1. (Windows only) Install git for windows [https://git-scm.com/download/win](https://git-scm.com/download/win)
29    1. Choose "64-bit Git for Windows Setup".  It does not require admin privileges to install.
30    1. Hit "Next" a bunch of times to accept the defaults
31    1. The most important things is that "install git bash" and "install OpenSSH" are enabled.
32    1. At the end of the installation, you can launch tick a box to git bash directly.
33    1. Open "Git Bash" (installed in the "Git" folder of the start menu)
34 1. From an open bash shell
35    1. Shell: Run `ssh-keygen`
36       1. Hit enter to save to a default location
37       1. You can choose to protect the key with a password, or just hit enter for no password.
38    1. Shell: Look for a message like `Your public key has been saved in /c/Users/MyUsername/.ssh/id_rsa.pub`
39    1. Shell: Run `cat /c/Users/MyUsername/.ssh/id_rsa.pub`
40    1. Shell: Use the pointer to highlight and copy the lines starting
41       with `ssh-rsa …` up to the next blank line.  Right click and
42       select "Copy"
43 1. Open Arvados workbench 2.  If necessary, go to the user menu and
44    select "Go to Workbench 2"
45    1. Workbench: Go to `SSH keys` in the user menu
46    1. Workbench:Click `+Add new ssh key`
47    1. Workbench: Paste the key into `Public key` and enter something for `name`
48    1. Workbench: Go to `Virtual Machines` in the user menu
49    1. Workbench: Highlight and copy the value in in the `Command line` column.
50 1. At the git bash command line
51    1. Shell: paste the `ssh shell…` command line you got from workbench.
52    1. Shell: type "yes" if it asks `Are you sure you want to continue connecting`.
53    1. Note: it can take up to two minutes for the SSH key to be copied to
54       the shell node.  If you get "Permission denied" the first time, wait 60
55       seconds and try again.
56    1. Shell: You should now be logged into the Arvados shell node.
57    1. Shell: Log out by typing `exit`
58
59 ## 2. VSCode setup
60
61 1. Install [Visual Studio Code](https://code.visualstudio.com/) and start it up
62 1. Vscode: On the left sidebar, select `Extensions` ![](images/Extensions.png)
63    1. In `Search Extensions in Marketplace` enter "remote development".
64    1. Choose and install the "Remote Development" extension pack from Microsoft
65 1. Vscode: On the left sidebar, choose `Remote Explorer` ![](images/RemoteExplorer.png)
66    1. At the top of the Remote Explorer panel choose `SSH targets` ![](images/SSHTargets.png)
67    1. Click `Add New` ![](images/AddNew.png)
68    1. Enter the `ssh shell…` command line you used in the previous section, step 1.4.1
69       1. If it asks you `Select SSH configuration file to update` choose the first one in the list.
70    1. Right click the newly added ssh target in the list and select “connect to host in current window`
71    1. If it asks `Select platform of the remote host` select `Linux`.
72 1. Vscode: On the left sidebar, go back to `Extensions` ![](images/Extensions.png)
73    1. Search for "benten" and install `CWL (Rabix/Benten)`
74    1. You should see a message `Extension is enabled on 'SSH: ...' and disabled locally.`
75 1. Vscode: On the left sidebar, choose `Explorer` ![](images/Explorer.png)
76    1. Select `Clone Repository` and enter [https://github.com/arvados/arvados-vscode-cwl-training](https://github.com/arvados/arvados-vscode-cwl-training), then click `Open`
77    1. If asked `Would you like to open the cloned repository?` choose `Open`
78 1. Go to Arvados Workbench
79    1. Workbench: In the user menu, select `Current token`
80    1. Vscode: Click on the `Terminal` menu
81    1. Vscode: Click `Run Task…`
82    1. Vscode: Select `Configure Arvados`
83    1. Workbench: Copy the string following `ARVADOS_API_HOST=`
84    1. Vscode: Paste the string at the `Value for ARVADOS_API_HOST` prompt
85    1. Workbench: Copy the string following `ARVADOS_API_TOKEN=`
86    1. Vscode: Paste the string at the `Value for ARVADOS_API_TOKEN` prompt
87
88 ## 3. Register & run a workflow
89
90 1. Vscode: Click on the `lesson1/main.cwl` file
91    1. Click on the `Terminal` menu
92    1. Click `Run Task…`
93    1. Select `Register or update CWL workflow on Arvados Workbench`
94 1. Workbench: Go to `+NEW` and select `New project`
95    1. Enter a name for the project like "Lesson 1"
96    1. You should arrive at the panel for the new project
97 1. Workbench: With `Lesson 1` selected
98    1. Click on `+NEW` and select `Run a process`
99    1. Select `CWL training lesson 1` from the list and click `Next`
100    1. Enter a name for this run like `First training run`
101    1. Enter a message (under `#main/message`) like "Hello world"
102    1. Click `Run process`
103    1. This should take you to a panel showing the workflow run status
104 1. Workbench: workflow run status panel
105    1. Wait for the badge in the upper right to say `Completed`
106    1. In the lower panel, double click on the `echo` workflow step
107    1. This will take you to the status panel for the `echo` step
108    1. Click on the three vertical dots in the top-right corner next to `Completed`
109    1. Choose `Log`
110    1. This will take you to the log viewer panel
111    1. Under `Event Type` choose `stdout`
112    1. You should see your message
113
114 ## 4. Working with input and output files
115
116 1. Vscode: Click on the `lesson2/main.cwl` file
117    1. Click on the `Terminal` menu
118    1. Click `Run Task…`
119    1. Select `Register or update CWL workflow on Arvados Workbench`
120 1. Go to your desktop
121    1. Right click on the desktop, select `New > Text Document`
122    1. Name the file `message`
123    1. Enter a message like "Hello earth" and save
124 1. Workbench: Go to `+NEW` and select `New project`
125    1. Enter a name for the project like "Lesson 2"
126    1. You should arrive at the panel for the new project
127 1. Arvados workbench: With `Lesson 2` project selected
128    1. Click on +NEW and select `New collection`
129    1. For Collection Name enter "my message"
130    1. Drag and drop `message.txt` into the browser
131    1. Click `Create a collection`
132    1. The file should be uploaded and then you will be on the collection page
133 1. Workbench: Select the `Lesson 2` project
134    1. Click on `+NEW` and select `Run a process`
135    1. Select `CWL training lesson 2` from the list and click `Next`
136    1. Enter a name for this run like "Second training run"
137    1. Click on `#main/message`
138    1. A selection dialog box will appear
139    1. Navigate to the collection you created in step (4.4.4) and choose `message.txt`
140    1. Click `Run process`
141    1. This should take you to a panel showing the workflow run status
142 1. Workbench: workflow run status panel
143    1. Wait for the process to complete
144    1. Click on the dot menu
145    1. Choose `Outputs`
146    1. Right click on `reverse.txt`
147    1. Click on `Open in new tab`
148    1. The results should be visible in a new browser tab.
149
150 ## 5. Register a workflow with default inputs
151
152 The default value for the `message` parameter will taken from the `lesson3/defaults.yaml` file
153
154 1. Vscode: Click on the `lesson3/main.cwl` file
155    1. Click on the `Terminal` menu
156    1. Click `Run Task…`
157    1. Select `Register or update CWL workflow on Arvados Workbench`
158 1. Workbench: Go to `+NEW` and select `New project`
159    1. Enter a name for the project like "Lesson 3"
160    1. You should arrive at the panel for the new project
161 1. Workbench: With `Lesson 3` selected
162    1. Click on `+NEW` and select `Run a process`
163    1. Select `CWL training lesson 3` from the list and click `Next`
164    1. Enter a name for this run like "Third training run"
165    1. The `#main/message` parameter will be pre-filled with your default value.  You can choose to change it or use the default.
166    1. Click `Run process`
167    1. This should take you to the status page for this workflow
168    1. The greeting will appear in the `Log` of the `echo` task, which
169       can be found the same way as described earlier in section 3.
170
171 ## 6. Run a workflow without registering it
172
173 The `message` parameter will be taken from the file `lesson4/main-input.yaml`.  This is useful during development.
174
175 1. Workbench: Go to `+NEW` and select `New project`
176    1. Enter a name for the project like "Lesson 4"
177    1. You should arrive at the panel for the new project
178    1. Click on `Additional info` in the upper right to expand the `info` panel
179    1. Under `Project UUID` click the `Copy to clipboard` button
180 1. Vscode: Select the file `lesson4/main.cwl`
181    1. Click on the `Terminal` menu
182    1. Click `Run Task…`
183    1. Select `Set Arvados project UUID`
184    1. Paste the project UUID from workbench at the prompt
185 1. Vscode: Select the file `lesson4/main.cwl`
186    1. Click on the `Terminal` menu
187    1. Click `Run Task…`
188    1. Select `Run CWL workflow on Arvados`
189 1. Vscode: In the bottom panel select the `Terminal` tab
190    1. In the upper right corner of the Terminal tab select `Task - Run CWL Workflow` from the drop-down
191    1. Look for logging text like `submitted container_request zzzzz-xvhdp-0123456789abcde`
192    1. Highlight and copy the workflow identifier (this the string containing `-xvhdp-` in the middle)
193    1. The results of this run will appear in the terminal when the run completes.
194 1. Workbench: Paste the workflow identifier into the search box
195    1. This will take you to the status page for this workflow
196
197
198 ## Notes
199
200 If you need to change something about the environment of the user on
201 the remote host (for example, the user has been added to a new unix
202 group) you need to restart the vscode server that runs on the remote
203 host.  Do this in vscode:
204
205 ctrl+shift+p: `Remote-SSH: Kill VS Code Server on Host`
206
207 This is because the vscode server remains running on the remote host
208 even after you disconnect, so exiting/restarting vscode on the desktop
209 has no effect.