OpenWhisk рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ, рднрд╛рдЧ 3


рдпрд╣ рд▓реЗрдЦ рдкреНрд░реАрддрд┐ рджреЗрд╕рд╛рдИ рджреНрд╡рд╛рд░рд╛ рдУрдкрдирд╡рд┐рд╕реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдиреЛрдЯреНрд╕ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЬрд╛рд░реА рд╣реИред рдЖрдЬ рд╣рдо рдЬрд╝рд┐рдк рдлрд╝рдВрдХреНрд╢рдВрд╕, GitHub рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ, рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ OpenWhisk рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗред


рдЬрд┐рдк рдХрд╛рд░реНрдп


OpenWhisk рдПрдХрд▓ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ [рдкрд╣рд▓реЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛] ()ред рдпрд╣ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреИрдХреЗрдЬ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдЬрд┐рд╕ рдкрд░ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдПрдХ рдЬрд╝рд┐рдк рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪрд▓реЛ wskdeploy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЬрд╝рд┐рдк рдлрд╝рдВрдХреНрд╢рди рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред


рдкрд╣рд▓рд╛ рдХрджрдо


рдПрдХ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:


 packages: zipaction: actions: my-zip-action: function: actions/my-zip-action runtime: nodejs:6 inputs: name: Amy 

рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ my-zip-action рдореЗрдВ рдРрд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ:


 $ ls actions/my-zip-action index.js package.json 

Index.js рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА:


 function helloworld(params) { var format = require('string-format'); var name = params.name || 'Stranger'; payload = format('Hello, {}!', name) return { message: payload }; } exports.main = helloworld; 

Package.json рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА:


 { "name": "my-zip-action", "description": "Node OpenWhisk zip action to demo Whisk Deploy", "license": "Apache-2.0", "version": "1.0.0", "main": "index.js", "dependencies": { "string-format": "0.5.0" } } 

рджреВрд╕рд░рд╛ рдХрджрдо


рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдк рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП npm рд╕реНрдерд╛рдкрд┐рдд рд░рди:


 cd actions/my-action npm install --production 

рдЪрд░рдг рддреАрди


рдЬрд╝рд┐рдк рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ:


 ./wskdeploy -i -p actions/my-zip-action/ ____ ___ _ _ _ _ _ /\ \ / _ \ _ __ ___ _ __ | | | | |__ (_)___| | __ /\ /__\ \ | | | | '_ \ / _ \ '_ \| | | | '_ \| / __| |/ / / \____ \ / | |_| | |_) | __/ | | | |/\| | | | | \__ \ < \ \ / \/ \___/| .__/ \___|_| |_|__/\__|_| |_|_|___/_|\_\ \___\/ |_| Packages: Name: zipaction bindings: * action: my-zip-action bindings: - name: name value: Amy Do you really want to deploy this? (y/N): y Deployment completed successfully. 

рд╣рдордиреЗ рдбрд┐рдкреЗрдВрдбреЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ string-format рд╕рд╛рде рдЬрд┐рдк рдлрдВрдХреНрд╢рди рдорд╛рдп-рдЬрд┐рдк-рдПрдХреНрд╢рди рдХреЛ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рд╣реИред function рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдкреНрд░рдХрдЯ рдореЗрдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╕рдордп, рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдПрдХ рдЬрд╝рд┐рдк рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рднреА рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЗрд╕реЗ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рддреИрдирд╛рддреА рдХреЗ рдмрд╛рдж, рдЖрдк рдирдП рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рдеред


рдЬрд╝рд┐рдк рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ рдФрд░ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░реЗрдВ


OpenWhisk рдЖрдкрдХреЛ рдПрдХ рдЬрд╝рд┐рдк рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдлрд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЙрд╕рдХреЗ рд╕рднреА рд╡реНрдпрд╕рдиреЛрдВред рдХрд╛рд░реНрдп рдХреЛ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ function рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рдлрд╝рд╛рдЗрд▓ рд╕рдорд╛рд╡реЗрд╢рди


рдкрд╣рд▓реЗ, рдЗрд╕рдореЗрдВ include рдХреБрдВрдЬреА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛, рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ import рдХреЗ рд╕рдорд╛рди рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдХрд╛рд░реНрдп:


 $ cd actions/ $ ls -1 ./ common/ greeting1/ greeting2/ manifest.yaml $ ls -1 common/ utils.js $ ls -1 greeting1/ index.js package.json $ ls -1 greeting2/ index.js package.json 

рдЖрдк index.js рдлрд╝рд╛рдЗрд▓ рдХреЛ utils.js рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА utils.js рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдПрдХ рдФрд░ utils.js , рдФрд░ рджреЛрдиреЛрдВ utils.js рдХреЛ рджреЗрдЦреЗрдВред


Index.js рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА actions/greeting1/ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ:


 /** * Return a simple greeting message for someone. * * @param name A person's name. * @param place Where the person is from. */ var common = require('./common/utils.js') function main(params) { var name = params.name || params.payload || 'stranger'; var place = params.place || 'somewhere'; var hello = common.hello || 'Good Morning'; return {payload: hello + ', ' + name + ' from ' + place + '!'}; } exports.main = main; 

Index.js рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА actions/greeting2/ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ:


 /** * Return a simple greeting message for someone. * * @param name A person's name. * @param place Where the person is from. */ var common = require('./common/utils.js') function main(params) { var name = params.name || params.payload || 'stranger'; var place = params.place || 'somewhere'; var hello = common.hello || 'Good Evening'; return {payload: hello + ', ' + name + ' from ' + place + '!'}; } exports.main = main; 

рдЕрдВрджрд░ include рдХреБрдВрдЬреА рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдпрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реЛрддреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рд╕реВрдЪреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдореЗрдВ source рдФрд░ \ рдпрд╛ destination рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:


 include: - [source] - [source, destination] 

рдЯрд┐рдкреНрдкрдгреА:


  • source рдореЗрдВ manimanifest.yaml рдпреБрдХреНрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкрде рд╢рд╛рдорд┐рд▓ рд╣реИред destination рддрд╛рддреНрдкрд░реНрдп рдлрд╝рдВрдХреНрд╢рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рд╕реЗ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП actions/greeting1 рдФрд░ actions/greeting2 рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВред
  • рдпрджрд┐ destination рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ source рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧрд╛ред

рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА:


 packages: zipactionwithinclude: actions: greeting1: function: actions/greeting1 runtime: nodejs:6 include: - ["actions/common/utils.js", "common/utils.js"] greeting2: function: actions/greeting2 runtime: nodejs:6 include: - ["actions/common/utils.js", "common/utils.js"] 

source рдФрд░ destination рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп include :


  • рдмрд╕ source :

 include: - [actions/common/utils.js] 

рдЗрд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд╕рд╛рде, utils.js рдХреЛ actions/greeting/actions/common/utils.js рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ index.js рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 var utils = require('./actions/common/utils.js') 

  • рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд╕рд╛рде include рдХрд░реЗрдВ:

 include: - ["actions/common/utils.js", "./common/myUtils.js"] 

рдЗрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде, utils.js рдХреЛ рдкрде actions/greeting/common/myUtils.js рд╕рд╛рде рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ index.js рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдВрдЧреЗ:


 var utils = require('./common/myUtils.js') 

  • рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ:

 include: - ["actions/common/utils.js", "./common/utility/utils.js"] 

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, utils.js рдХреЛ actions/greeting/common/utility/utils.js рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ index.js рд▓рд┐рдВрдХ рд╣реЛрдЧрд╛:


 var utils = require('./common/utility/utils.js') 

  • рдкреНрд░рддреАрдХ рдХреЗ рд╕рд╛рде include рдХрд░реЗрдВ * :

 include: - ["actions/common/*.js", "./common/"] 

рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, utils.js рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде utils.js .js рдХреЛ actions/greeting/common/ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ index.js рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛:


 var utils = require('./common/utils.js') 

рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдорд╛рд╡реЗрд╢


рдЗрд╕рдореЗрдВ include рдЖрдк рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реНрдерд╛рди рдкрд░ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, libs`` ,


 $ cd actions/ $ ls -1 libs/ greeting3/ manifest.yaml $ ls -1 libs/ lib1/ lib2/ lib3/ $ ls -1 libs/lib1/ utils.js $ ls -1 libs/lib2/ utils.js $ ls -1 libs/lib3/ utils.js $ ls -1 greeting3/ index.js package.json 

Index.js рдХреА рд╕рд╛рдордЧреНрд░реА actions/greeting3/ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛:


 /** * Return a simple greeting message for someone. * * @param name A person's name. * @param place Where the person is from. */ var lib1 = require('./libs/lib1/utils.js') var lib2 = require('./libs/lib2/utils.js') var lib3 = require('./libs/lib3/utils.js') function main(params) { var name = params.name || params.payload || 'stranger'; var place = params.place || 'somewhere'; var hello = lib1.hello || lib2.hello || lib3.hello || 'Hello'; return {payload: hello + ', ' + name + ' from ' + place + '!'}; } exports.main = main; 

рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА:


 packages: zipactionwithinclude: actions: greeting3: function: actions/greeting3 runtime: nodejs:6 include: - ["actions/libs/*", "libs/"] 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, libs рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдкреВрд░реА рддрд░рд╣ рд╕реЗ actions/greeting3/libs/ рдирдХрд▓ рдХреА рдЬрд╛рддреА рд╣реИред


рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдкреНрд░рддреАрдХ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ * :


  • рдЙрджрд╛рд╣рд░рдг 1:

 include: - ["actions/libs/*/utils.js", "libs/"] 

рдЗрд╕ рд▓реЗрдЦрди рдХреЗ рд╕рд╛рде рд╕рднреА рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ рдЬрд┐рдирдореЗрдВ utils.js рдХреЛ utils.js рд╕реЗ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред index.js рд▓рд┐рдВрдХ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдВрдЧреЗ:


 var lib1 = require('./libs/lib1/utils.js') var lib2 = require('./libs/lib2/utils.js') var lib3 = require('./libs/lib3/utils.js') 

  • рдЙрджрд╛рд╣рд░рдг 2:

 include: - ["actions/*/*/utils.js"] 

рдЗрд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд╕рд╛рде, рдореБрдЦреМрдЯрд╛ рдФрд░ utils.js рдорд┐рд▓рд╛рди рд╡рд╛рд▓реЗ рд╕рднреА рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ рдХреЙрдкреА рдХреА рдЬрд╛рдПрдВрдЧреАред index.js рд╕реЗ рдкрд╣реБрдВрдЪ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧреА:


 var lib1 = require('./actions/libs/lib1/utils.js') var lib2 = require('./actions/libs/lib2/utils.js') var lib3 = require('./actions/libs/lib3/utils.js') 

  • рдЙрджрд╛рд╣рд░рдг 3:

 include: - ["actions/*/*/utils.js", "actions/"] 

рдпрд╣ рдЙрджрд╛рд╣рд░рдг рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╣рд╛рдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред index.js рд╕реЗ рдкрд╣реБрдВрдЪ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧреАред


рдЕрдкрд╡рд╛рдж


exclude рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕реЗ * рдЪрд░рд┐рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:


 exclude: - actions/common/*.js - actions/libs/*/utils.js 

рд╕рд╛рдЭрд╛ include рдФрд░ exclude рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрджрд╛рд╣рд░рдг рд╣реИ:


 packages: zipactionwithexclude: actions: greeting1: function: actions runtime: nodejs:6 exclude: - actions/* include: - ["actions/common/utils.js", "common/utils.js"] - ["actions/index.js", "index.js"] - ["actions/package.json", "package.json"] 

GitHub рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп


OpenWhisk рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЕрдиреНрдп OpenWhisk рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЗрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде, OpenWhisk рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рд░реНрднрд░ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рднреА рддреИрдирд╛рдд рдХрд░реЗрдЧрд╛ред manifest.yaml рдФрд░ \ рдпрд╛ deployment.yaml рд╕рд╛рде рдХреЛрдИ рднреА рдкреИрдХреЗрдЬред deployment.yaml рдХреЛ рдПрдХ рдЖрд╢реНрд░рд┐рдд рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдкреНрд░рдХрдЯрди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк dependencies рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдкреНрд░рдХрдЯ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 packages: RootProject: dependencies: helloworlds: location: github.com/apache/incubator-openwhisk-test/packages/helloworlds triggers: trigger1: trigger2: rules: rule1: trigger: trigger1 action: helloworlds/hello-js rule2: trigger: trigger2 action: helloworlds/helloworld-js 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, helloworlds рдПрдХ рдмрд╛рд╣рд░реА рдкреИрдХреЗрдЬ рд╣реИ рдЬрд┐рд╕реЗ GitHub рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ https://github.com/apache/incubator-openwhisk-test рдкрд░ рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬрдм рдЖрдк рд╣рдорд╛рд░реЗ RootProject рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рддреИрдирд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ RootProject packages/helloworlds рдореЗрдВ рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрд╢реНрд░рд┐рдд рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ChildProject рдмрдЬрд╛рдп helloworlds ChildProject рд╕реЗрдЯ ChildProject :


 packages: RootProject: dependencies: ChildProject: location: github.com/apache/incubator-openwhisk-test/packages/helloworlds triggers: trigger1: trigger2: rules: rule1: trigger: trigger1 action: ChildProject/hello-js rule2: trigger: trigger2 action: ChildProject/helloworld-js 

рдЖрдк рдХрдИ рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рдХрдИ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:


 packages: RootProject: dependencies: ChildProject1: location: github.com/apache/incubator-openwhisk-test/packages/helloworlds ChildProject2: location: github.com/apache/incubator-openwhisk-test/packages/hellowhisk sequences: ChildProject1-series: actions: ChildProject1/hello-js, ChildProject1/helloworld-js ChildProject2-series: actions: ChildProject2/greeting, ChildProject2/httpGet triggers: trigger1: trigger2: rules: rule1: trigger: trigger1 action: ChildProject1-series rule2: trigger: trigger2 action: ChildProject2-series 

рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ OpenWhisk рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИ


рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди managed deployment рдореЛрдб рдореЗрдВ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдореЛрдб рдореЗрдВ, OpenWhisk рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреНрд░рдХрдЯ рд╕реЗ рд╣рдЯрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╡рд┐рд╡рд░рдг рднреА рд╕рдВрд▓рдЧреНрди рдХрд░рддрд╛ рд╣реИ, рддрдерд╛рдХрдерд┐рдд managed ред рдпрд╣ рд╡рд┐рд╡рд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


 managed: __OW_PROJECT_NAME: MyProjectName __OW_PROJECT_HASH: SHA1("OpenWhisk " + <size_of_manifest_file> + "\0" + <contents_of_manifest_file>) __OW_FILE: Absolute path of manifest file on file system 

рдпрд╣рд╛рдБ, OpenWhisk рдПрдХ рдирд┐рд░рдВрддрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ, рдФрд░ "\ 0" NULL рд╡рд░реНрдг рд╣реИред size_of_manifest_file рдФрд░ content_of_manifest_file рдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрднрд░ рд╣реИрдВред managed deployment рдореЛрдб рдореЗрдВ рдЙрд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдЕрдиреБрдХреНрд░рдо рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП __OW_PROJECT_HASH рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдЙрд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ __OW_PROJECT_HASH рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред рдиреАрдЪреЗ рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред


рд╡рд┐рдХрд▓реНрдк 1 : рдпрджрд┐ __OW_PROJECT_HASH рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрджрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдУрд░ рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡реИрд╕рд╛ рд╣реА рд░рд╣рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ deployment.yaml рдореЗрдВ рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рд╕реЗ wskdeploy рдирдИ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ deployment.yaml рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ред


рд╡рд┐рдХрд▓реНрдк 2 : рдпрджрд┐ __OW_PROJECT_HASH рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛, рдЕрд░реНрдерд╛рдд рдпрджрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрдХреНрд╖ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ wskdeploy рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рд╕реЗ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ wskdeploy , рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ __OW_PROJECT_HASH рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред wskdeploy рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рднреА wskdeploy : рдЬрд┐рд╕рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди, рдЕрдиреБрдХреНрд░рдо рдФрд░ рд╕рд╢рд░реНрдд __OW_PROJECT_NAME рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕рдорд╛рди __OW_PROJECT_NAME , рдЕрд░реНрдерд╛рдд рдПрдХ рд╣реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ __OW_PROJECT_HASH рд╣реЛрдиреЗ рдХреЗ __OW_PROJECT_HASH , рдЙрдиреНрд╣реЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ:


 project: name: MyProjectName packages: package1: .... 

OpenWhisk рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдЯреВрд▓ рдпрд╛ рдСрдЯреЛрдореЗрд╢рди рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреИрдирд╛рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрдм рд╡реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдмрд╛рд╣рд░реА рд╡рд╕реНрддреБ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдРрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ wskdeploy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ wskdeploy рдХрд░ рд╕рдХрддреЗ wskdeploy , рдЗрд╕реЗ рдкреНрд░рдХрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░ wskdeploy , рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд╛рдо рд╣реИ:


 project: name: MyProjectName 

рдЖрдЗрдП managed deployment рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдореВрдирд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рджреЗрдЦреЗрдВред рдЗрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ, рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдШреЛрд╖рдгрд╛рдкрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ managed deployment рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред


рдкрд╣рд▓рд╛ рдХрджрдо


managed deployment рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ MyFirstManagedProject managed deployment рдХрд░реЗрдВ:


 $wskdeploy -m tests/src/integration/managed-deployment/manifest.yaml --managed Deployment completed successfully. 


рдПрдХ OpenWhisk рд╕рд░реНрд╡рд░ рдкрд░ рддреИрдирд╛рдд рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА



рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рд╡рд┐рд╡рд░рдг


рджреВрд╕рд░рд╛ рдХрджрдо


рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ - рд╣рдо ManagedPackage-2 рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ:


 ./wskdeploy -m tests/src/integration/managed-deployment/00-manifest-minus-second-package.yaml --managed Deployment completed successfully. 


MyFirstManagedProject рдореЗрдВ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА


рдЪрд░рдг рддреАрди


рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ - рд╣рдо ManagedSequence-2 рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ:


 ./wskdeploy -m tests/src/integration/managed-deployment/01-manifest-minus-sequence-2.yaml --managed Deployment completed successfully. 


рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА


рдЪреМрдерд╛ рдЪрд░рдг


Helloworld-3 рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╣рдЯрд╛рдПрдБ:


 ./wskdeploy -m tests/src/integration/managed-deployment/02-manifest-minus-action-3.yaml --managed Deployment completed successfully. 


рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА


рдкрд╛рдВрдЪрд╡рд╛рдВ рдЪрд░рдг


ManagedPackage-1 рдХреЛ рд╣рдЯрд╛рдПрдВ:


 ./wskdeploy -m tests/src/integration/managed-deployment/04-manifest-minus-package.yaml --managed Deployment completed successfully. 


MyFirstManagedProject рдореЗрдВ рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ


рдЕрдиреНрдп рдЪрдХреНрд░ рд▓реЗрдЦ


OpenWhisk рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ, рднрд╛рдЧ 1
OpenWhisk рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ, рднрд╛рдЧ 2
OpenWhisk рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ, рднрд╛рдЧ 3
рд╕рд░реНрд╡рд░рд▓реЗрд╕ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ OpenWhisk, рднрд╛рдЧ 4 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ

Source: https://habr.com/ru/post/hi479492/


All Articles