# 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:
test_package:
  actions:
    helloNodejs:
      function: actions/hello.js
      runtime: nodejs:6
    helloJava:
      function: actions/hello.java
