Action Inputs & Outputs

Action inputs and outputs should be defined inside the action.yml first. This section can be summarized into three simple steps.

The following example shows that the action receives several input parameters.

...

inputs:
  full_name:
    description: First name
    required: true

  is_student:
    description: Education status
    required: true

  birth_year:
    description: Year of birth
    required: false

To receive these inputs from the workflow, they should be defined as the arguments of the action function in the main.py.

...

@workflow.action
def my_action(full_name: str, is_student: bool, birth_year: int) -> None:
    ...

Make sure your action function parameters are typed correctly.

PyAction uses pydantic for input validations.

To write output variables to the workflow, use the workflow.write() method.

from pyaction.workflow.stream import WorkflowContext

...

@workflow.action
def my_action() -> None:
    workflow.write(
        WorkflowContext(
            {
                "var_1": "Foo",
                "var_2": "Bar",
                ...
            }
        )
    )

You can receive them by assigning an id to the action step in the workflow.

steps:
  - name: Running My Action
    id: my_action
    uses: username/my-action@v2

  - name: Echoing The Values
    run: |
      echo ${{ steps.my_action.outputs.var_1 }} # = Foo
      echo ${{ steps.my_action.outputs.var_2 }} # = Bar
Updated on