11369: Add migration notes about crunchv1-to-crunchv2
[arvados.git] / doc / user / cwl / cwl-style.html.textile.liquid
index 5c6d04940f6b1928120494e8134681d956efac50..96554bfa2188ae1d54e5774c2be07841bb534597 100644 (file)
@@ -4,6 +4,8 @@ navsection: userguide
 title: Best Practices for writing CWL
 ...
 
+* To run on Arvados, a workflow should provide a @DockerRequirement@ in the @hints@ section.
+
 * Build a reusable library of components.  Share tool wrappers and subworkflows between projects.  Make use of and contribute to "community maintained workflows and tools":https://github.com/common-workflow-language/workflows and tool registries such as "Dockstore":http://dockstore.org .
 
 * When combining a parameter value with a string, such as adding a filename extension, write @$(inputs.file.basename).ext@ instead of @$(inputs.file.basename + 'ext')@.  The first form is evaluated as a simple text substitution, the second form (using the @+@ operator) is evaluated as an arbitrary Javascript expression and requires that you declare @InlineJavascriptRequirement@.
@@ -166,3 +168,8 @@ steps:
           out: [out]
           run: tool3.cwl
 </pre>
+
+* When migrating from crunch v1 API (--api=jobs) to the crunch v2 API (--api=containers) there are a few differences in behavior:
+** The tool is limited to accessing only collections which are explicitly listed in the input, and further limited to only the subdirectories of collections listed in input.  For example, given an explicit file input @/dir/subdir/file1.txt@, a tool will not be able to implicitly access the file @/dir/file2.txt@.  Use @secondaryFiles@ or a @Directory@ input to describe trees of files.
+** Files listed in @InitialWorkDirRequirement@ appear in the output directory as normal files (not symlinks) but cannot be moved, renamed or deleted.  These files will be added to the output collection but without any additional copies of the underlying data.
+** Tools are disallowed network access by default.  Tools which require network access must include @arv:APIRequirement: {}@ in their @requirements@ section.