# Licensed to the Apache Software Foundation (ASF) under one or more contributor
# license agreements; and to You under the Apache License, Version 2.0.

packages:
  package1:
    actions:
      helloNodejs:
        function: actions/hello.js
        runtime: nodejs:6
  package2:
    actions:
      helloPython:
        function: actions/hello.py
        runtime: python
