Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Access to the object’s property created from the JSON in the Github actions

Can somebody clarify how to access the object’s property inside the action? object.property or $object.property or ${object.property} or ${{object.property}} don’t work.

I created an object from the data from the JSON file using fromJson() method:

  - name: "Get env data"
    id: get_env_data
    run: |
      JSON=$(jq --arg inputEnv "${{ github.event.inputs.env_to_deploy }}" 'map(. | select(.deployEnv==$inputEnv) ) | .[0]' .github/workflows/test.json)
      JSON="${JSON//$'\n'/''}"
      JSON="${JSON//$'\r'/''}"
      JSON="${JSON//$'\s+'/''}"
      echo "JSON=$JSON"
      echo "::set-output name=deployment_env::$JSON"
    
  - name: "Set env data"
    run: |
      env_data=${{ fromJson(steps.get_env_data.outputs.deployment_env) }}
      echo "env_data=$env_data"
      echo $env_data.port

The JSON file is like that:

[
    {
        "env":"dev",
        "port":"8000",
        "db_host":"DEV_DB_HOST"
    },
    {
        "env":"dev2",
        "port":"8002",
        "db_host":"DEV2_DB_HOST"
    },
    {
        "env":"dev3",
        "port":"8003",
        "db_host":"DEV3_DB_HOST"
    }
]
like image 652
michael Avatar asked Sep 11 '25 15:09

michael


1 Answers

Unfortunately, I couldn't manage to solve this issue properly. I chose this way to get properties from the JSON as @GuiFalourd suggested and many examples I saw:

PORT=${{fromJson(steps.get_env_data.outputs.deployment_env).port}}
like image 161
michael Avatar answered Sep 13 '25 05:09

michael