How to set output of the action inside a docker container?

Problem when building an action with docker, i want to set some outputs of my action but i can’t find some document about how to set output of an action inside a container.

By just send some message to stderr/stdout ? Is there some format of output that i should follow?

Please give some help! Thank you!

Hi @jonyhy96 ,

Thank you for being here!

You can refer to the doc here to check the docker action example for the output setting.

  1. In the action.yaml datameta file, define output:

    outputs:
    time: # id of output
    description: ‘The time we greeted you’

  2. In the entrypoint.sh file,  you must use a workflow command in a specific syntax: echo “::set-output name=<output name>::<value>”

    #!/bin/sh -l

    time=$(date)
    echo “::set-output name=time::$time”

Hope it helps!

Thanks for help!

I already know that we can use echo "::set-output name=\<output name\>::\<value\>" inside an entrypoint.sh to declare an output.

I wanna to know what if i don’t use entrypoint.sh but use a binary(written in golang) to handle the input. How can i set the output of the action by the binary? By execute a shell command(::set-output name=<output name>::<value>) inside my binary? What is the principle of ::set-output ?

> By execute a shell command(::set-output name=<output name>::<value>) inside my binary?

No, that’s not a shell command - that’s the parameter to echo.  By printing that string to stdout, the GitHub Actions runner will store that name/value pair in the output context for that step.  eg, in Go:

import("fmt")

fmt.Println("::set-output name=output_name::value")

> By just send some message to stderr/stdout ?

Yes, send these commands to stdout.

> Is there some format of output that i should follow?

Yes, they’re documented here: https://help.github.com/en/actions/reference/workflow-commands-for-github-actions

1 Like