green-coding-solutions / eco-ci-energy-estimation

Eco CI Energy estimation for Github Actions Runner VMs
MIT License
48 stars 10 forks source link

does-not-run-on: Linux arm64 #79

Open doramatadora opened 3 weeks ago

doramatadora commented 3 weeks ago

It seems this action isn't compatible with linux-arm64 runners. Are there plans to support this?

Run green-coding-solutions/eco-ci-energy-estimation@main
Run if command -v python3 &>/dev/null; then
Python is already installed.
Error: Process completed with exit code [1].

Runner VM info:

  VM Image
  OS: Linux (arm64)
  Source: Marketplace
  Publisher: arm
  Offer: github_arm_linux_runner
  Plan: github_arm_linux_runner_plan
  Version: 1.0.2
ArneTR commented 3 weeks ago

That it fails on this function is a bit suprising, but to answer your question: Yes, almost architecture agnostic support is incoming!

See this PR in the making: https://github.com/green-coding-solutions/eco-ci-energy-estimation/pull/76

Can I ping you as a beta tester, as we currently have no access to ARM machines for testing? We will test it on our local dedicated ARM runners, but would need a beta tester for Githubs shared ones 😇

ArneTR commented 3 weeks ago

Also to add an ETA: We plan to have this ready for testing by end this week

doramatadora commented 3 weeks ago

@ArneTR that's good to hear, and I'm happy to be a beta tester! Please let me know how I can help.

ArneTR commented 2 weeks ago

Hey @doramatadora , the first draft is ready!

Can you try the runner by changing all mentions of green-coding-solutions/eco-ci-energy-estimation@v3 to green-coding-solutions/eco-ci-energy-estimation@pre-calculated

Everything else should be largely unchanged.

If you do let it run please also send me the debug output of the step API Base Debug and Initialize Energy Estimation as I need them to calculate the new energy models.

See example in the screenshot where to find this data

Screenshot 2024-06-14 at 8 41 53 AM
doramatadora commented 2 weeks ago

Hi @ArneTR, thank you so much for making this happen 😄

Current API Base is https://api.github.com/

and Initialize Energy Estimation:

##[debug]Evaluating condition for step: 'Initialize energy estimation'
##[debug]Evaluating: success()
##[debug]Evaluating success:
##[debug]=> true
##[debug]Result: true
##[debug]Starting: Initialize energy estimation
##[debug]Loading inputs
##[debug]Evaluating: github.ref_name
##[debug]Evaluating Index:
##[debug]..Evaluating github:
##[debug]..=> Object
##[debug]..Evaluating String:
##[debug]..=> 'ref_name'
##[debug]=> '[2](https://github.com/***/actions/runs/9545128180/job/26305423039#step:3:2)327/merge'
##[debug]Result: '2327/merge'
##[debug]Evaluating: github.api_url
##[debug]Evaluating Index:
##[debug]..Evaluating github:
##[debug]..=> Object
##[debug]..Evaluating String:
##[debug]..=> 'api_url'
##[debug]=> 'https://api.github.com'
##[debug]Result: 'https://api.github.com'
##[debug]Loading env
Run green-coding-solutions/eco-ci-energy-estimation@pre-calculated
##[debug]Evaluating condition for step: 'run'
##[debug]Evaluating: (success() && (inputs.task != 'start-measurement') && (inputs.task != 'get-measurement') && (inputs.task != 'display-results'))
##[debug]Evaluating And:
##[debug]..Evaluating success:
##[debug]..=> true
##[debug]..Evaluating NotEqual:
##[debug]....Evaluating Index:
##[debug]......Evaluating inputs:
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'task'
##[debug]....=> 'start-measurement'
##[debug]....Evaluating String:
##[debug]....=> 'start-measurement'
##[debug]..=> false
##[debug]=> false
##[debug]Expanded: (true && ('start-measurement' != 'start-measurement') && (inputs['task'] != 'get-measurement') && (inputs['task'] != 'display-results'))
##[debug]Result: false
##[debug]Evaluating condition for step: 'run'
##[debug]Evaluating: (success() && (inputs.task == 'start-measurement') && (env.ECO_CI_INIT != 'DONE'))
##[debug]Evaluating And:
##[debug]..Evaluating success:
##[debug]..=> true
##[debug]..Evaluating Equal:
##[debug]....Evaluating Index:
##[debug]......Evaluating inputs:
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'task'
##[debug]....=> 'start-measurement'
##[debug]....Evaluating String:
##[debug]....=> 'start-measurement'
##[debug]..=> true
##[debug]..Evaluating NotEqual:
##[debug]....Evaluating Index:
##[debug]......Evaluating env:
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'ECO_CI_INIT'
##[debug]....=> null
##[debug]....Evaluating String:
##[debug]....=> 'DONE'
##[debug]..=> true
##[debug]=> true
##[debug]Expanded: (true && ('start-measurement' == 'start-measurement') && (null != 'DONE'))
##[debug]Result: true
##[debug]Starting: run
##[debug]Loading inputs
##[debug]Evaluating: format('***0***/scripts/setup.sh initialize "***1***"
##[debug]', github.action_path, inputs.machine-power-data)
##[debug]Evaluating format:
##[debug]..Evaluating String:
##[debug]..=> '***0***/scripts/setup.sh initialize "***1***"
##[debug]'
##[debug]..Evaluating Index:
##[debug]....Evaluating github:
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'action_path'
##[debug]..=> '/home/runner/work/_actions/green-coding-solutions/eco-ci-energy-estimation/pre-calculated'
##[debug]..Evaluating Index:
##[debug]....Evaluating inputs:
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'machine-power-data'
##[debug]..=> 'github_EPYC_776[3](https://github.com/***/actions/runs/9545128180/job/26305423039#step:3:3)_4_CPU_shared.sh'
##[debug]=> '/home/runner/work/_actions/green-coding-solutions/eco-ci-energy-estimation/pre-calculated/scripts/setup.sh initialize "github_EPYC_7763_[4](https://github.com/***/actions/runs/9545128180/job/26305423039#step:3:4)_CPU_shared.sh"
##[debug]'
##[debug]Result: '/home/runner/work/_actions/green-coding-solutions/eco-ci-energy-estimation/pre-calculated/scripts/setup.sh initialize "github_EPYC_7763_4_CPU_shared.sh"
##[debug]'
##[debug]Loading env
Run /home/runner/work/_actions/green-coding-solutions/eco-ci-energy-estimation/pre-calculated/scripts/setup.sh initialize "github_EPYC_7763_4_CPU_shared.sh"
##[debug]/usr/bin/bash --noprofile --norc -e -o pipefail /home/runner/work/_temp/184b7f2c-87c6-463b-aa[5](https://github.com/***/actions/runs/9545128180/job/26305423039#step:3:5)3-3191f6e03768.sh
Currently running on follow CPU Model 
Full CPU Info
processor   : 0
BogoMIPS    : 50.00
Features    : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x3
CPU part    : 0xd0c
CPU revision    : 1

processor   : 1
BogoMIPS    : 50.00
Features    : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x3
CPU part    : 0xd0c
CPU revision    : 1

processor   : 2
BogoMIPS    : 50.00
Features    : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x3
CPU part    : 0xd0c
CPU revision    : 1

processor   : 3
BogoMIPS    : 50.00
Features    : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x3
CPU part    : 0xd0c
CPU revision    : 1

Full memory info
MemTotal:       1[6](https://github.com/***/actions/runs/9545128180/job/26305423039#step:3:6)348140 kB
MemFree:        14619132 kB
MemAvailable:   15499340 kB
Buffers:           52412 kB
Cached:          1004[7](https://github.com/***/actions/runs/9545128180/job/26305423039#step:3:7)72 kB
SwapCached:            0 kB
Active:           71356[8](https://github.com/***/actions/runs/9545128180/job/26305423039#step:3:8) kB
Inactive:         666636 kB
Active(anon):     337344 kB
Inactive(anon):        0 kB
Active(file):     376224 kB
Inactive(file):   666636 kB
Unevictable:       45788 kB
Mlocked:           42716 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Zswap:                 0 kB
Zswapped:              0 kB
Dirty:               4[9](https://github.com/***/actions/runs/9545128180/job/26305423039#step:3:9)2 kB
Writeback:             0 kB
AnonPages:        368856 kB
Mapped:           303296 kB
Shmem:              6924 kB
KReclaimable:      72848 kB
Slab:             [13](https://github.com/***/actions/runs/9545128180/job/26305423039#step:3:13)5204 kB
SReclaimable:      72848 kB
SUnreclaim:        62356 kB
KernelStack:        3984 kB
PageTables:         5356 kB
SecPageTables:         0 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     8174068 kB
Committed_AS:    2164616 kB
VmallocTotal:   133[14](https://github.com/***/actions/runs/9545128180/job/26305423039#step:3:14)1626880 kB
VmallocUsed:       35184 kB
VmallocChunk:          0 kB
Percpu:             [16](https://github.com/***/actions/runs/9545128180/job/26305423039#step:3:16)80 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:         0 kB
FilePmdMapped:         0 kB
CmaTotal:          32768 kB
CmaFree:           26624 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
Using github_EPYC_7763_4_CPU_shared.sh
##[debug]Finished: run
##[debug]Evaluating condition for step: 'run'
##[debug]Evaluating: (success() && (inputs.task == 'start-measurement'))
##[debug]Evaluating And:
##[debug]..Evaluating success:
##[debug]..=> true
##[debug]..Evaluating Equal:
##[debug]....Evaluating Index:
##[debug]......Evaluating inputs:
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'task'
##[debug]....=> 'start-measurement'
##[debug]....Evaluating String:
##[debug]....=> 'start-measurement'
##[debug]..=> true
##[debug]=> true
##[debug]Expanded: (true && ('start-measurement' == 'start-measurement'))
##[debug]Result: true
##[debug]Starting: run
##[debug]Loading inputs
##[debug]Evaluating: format('if ***0***; then
##[debug]  curl_response=$(curl -s -H "Authorization: ***" ***2***/repos/***3***/actions/workflows)
##[debug]  workflow_id=$(echo $curl_response | jq ''.workflows[] | select(.name == "***4***") | .id'')
##[debug]  ***5***/scripts/vars.sh add_var "WORKFLOW_ID" $workflow_id
##[debug]else
##[debug]  ***6***/scripts/vars.sh add_var "WORKFLOW_ID" ***7***
##[debug]fi
##[debug]
##[debug]***8***/scripts/setup.sh start_measurement
##[debug]echo "ECO_CI_INIT=DONE" >> $GITHUB_ENV;
##[debug]', inputs.send-data, github.token, inputs.gh-api-base, github.repository, github.workflow, github.action_path, github.action_path, github.workflow, github.action_path)
##[debug]Evaluating format:
##[debug]..Evaluating String:
##[debug]..=> 'if ***0***; then
##[debug]  curl_response=$(curl -s -H "Authorization: ***" ***2***/repos/***3***/actions/workflows)
##[debug]  workflow_id=$(echo $curl_response | jq ''.workflows[] | select(.name == "***4***") | .id'')
##[debug]  ***5***/scripts/vars.sh add_var "WORKFLOW_ID" $workflow_id
##[debug]else
##[debug]  ***6***/scripts/vars.sh add_var "WORKFLOW_ID" ***7***
##[debug]fi
##[debug]
##[debug]***8***/scripts/setup.sh start_measurement
##[debug]echo "ECO_CI_INIT=DONE" >> $GITHUB_ENV;
##[debug]'
##[debug]..Evaluating Index:
##[debug]....Evaluating inputs:
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'send-data'
##[debug]..=> 'true'
##[debug]..Evaluating Index:
##[debug]....Evaluating github:
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'token'
##[debug]..=> '***'
##[debug]..Evaluating Index:
##[debug]....Evaluating inputs:
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'gh-api-base'
##[debug]..=> 'https://api.github.com'
##[debug]..Evaluating Index:
##[debug]....Evaluating github:
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'repository'
##[debug]..=> '***'
##[debug]..Evaluating Index:
##[debug]....Evaluating github:
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'workflow'
##[debug]..=> 'CI'
##[debug]..Evaluating Index:
##[debug]....Evaluating github:
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'action_path'
##[debug]..=> '/home/runner/work/_actions/green-coding-solutions/eco-ci-energy-estimation/pre-calculated'
##[debug]..Evaluating Index:
##[debug]....Evaluating github:
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'action_path'
##[debug]..=> '/home/runner/work/_actions/green-coding-solutions/eco-ci-energy-estimation/pre-calculated'
##[debug]..Evaluating Index:
##[debug]....Evaluating github:
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'workflow'
##[debug]..=> 'CI'
##[debug]..Evaluating Index:
##[debug]....Evaluating github:
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'action_path'
##[debug]..=> '/home/runner/work/_actions/green-coding-solutions/eco-ci-energy-estimation/pre-calculated'
##[debug]=> 'if true; then
##[debug]  curl_response=$(curl -s -H "Authorization: ***" https://api.github.com/repos/***/actions/workflows)
##[debug]  workflow_id=$(echo $curl_response | jq ''.workflows[] | select(.name == "CI") | .id'')
##[debug]  /home/runner/work/_actions/green-coding-solutions/eco-ci-energy-estimation/pre-calculated/scripts/vars.sh add_var "WORKFLOW_ID" $workflow_id
##[debug]else
##[debug]  /home/runner/work/_actions/green-coding-solutions/eco-ci-energy-estimation/pre-calculated/scripts/vars.sh add_var "WORKFLOW_ID" CI
##[debug]fi
##[debug]
##[debug]/home/runner/work/_actions/green-coding-solutions/eco-ci-energy-estimation/pre-calculated/scripts/setup.sh start_measurement
##[debug]echo "ECO_CI_INIT=DONE" >> $GITHUB_ENV;
##[debug]'
##[debug]Result: 'if true; then
##[debug]  curl_response=$(curl -s -H "Authorization: ***" https://api.github.com/repos/***/actions/workflows)
##[debug]  workflow_id=$(echo $curl_response | jq ''.workflows[] | select(.name == "CI") | .id'')
##[debug]  /home/runner/work/_actions/green-coding-solutions/eco-ci-energy-estimation/pre-calculated/scripts/vars.sh add_var "WORKFLOW_ID" $workflow_id
##[debug]else
##[debug]  /home/runner/work/_actions/green-coding-solutions/eco-ci-energy-estimation/pre-calculated/scripts/vars.sh add_var "WORKFLOW_ID" CI
##[debug]fi
##[debug]
##[debug]/home/runner/work/_actions/green-coding-solutions/eco-ci-energy-estimation/pre-calculated/scripts/setup.sh start_measurement
##[debug]echo "ECO_CI_INIT=DONE" >> $GITHUB_ENV;
##[debug]'
##[debug]Loading env
Run if true; then
##[debug]/usr/bin/bash --noprofile --norc -e -o pipefail /home/runner/work/_temp/6619b[17](https://github.com/***/actions/runs/9545128180/job/26305423039#step:3:17)b-e650-4aff-991f-c433089701c0.sh
##[debug]ECO_CI_INIT='DONE'
##[debug]Finished: run
##[debug]Evaluating: github.workflow
##[debug]Evaluating Index:
##[debug]..Evaluating github:
##[debug]..=> Object
##[debug]..Evaluating String:
##[debug]..=> 'workflow'
##[debug]=> 'CI'
##[debug]Result: 'CI'
##[debug]Evaluating condition for step: 'run'
##[debug]Evaluating: (success() && (inputs.task == 'get-measurement'))
##[debug]Evaluating And:
##[debug]..Evaluating success:
##[debug]..=> true
##[debug]..Evaluating Equal:
##[debug]....Evaluating Index:
##[debug]......Evaluating inputs:
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'task'
##[debug]....=> 'start-measurement'
##[debug]....Evaluating String:
##[debug]....=> 'get-measurement'
##[debug]..=> false
##[debug]=> false
##[debug]Expanded: (true && ('start-measurement' == 'get-measurement'))
##[debug]Result: false
##[debug]Evaluating condition for step: 'run'
##[debug]Evaluating: (success() && (inputs.task == 'display-results'))
##[debug]Evaluating And:
##[debug]..Evaluating success:
##[debug]..=> true
##[debug]..Evaluating Equal:
##[debug]....Evaluating Index:
##[debug]......Evaluating inputs:
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'task'
##[debug]....=> 'start-measurement'
##[debug]....Evaluating String:
##[debug]....=> 'display-results'
##[debug]..=> false
##[debug]=> false
##[debug]Expanded: (true && ('start-measurement' == 'display-results'))
##[debug]Result: false
##[debug]Evaluating: github.event.pull_request.number
##[debug]Evaluating Index:
##[debug]..Evaluating Index:
##[debug]....Evaluating Index:
##[debug]......Evaluating github:
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'event'
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'pull_request'
##[debug]..=> Object
##[debug]..Evaluating String:
##[debug]..=> 'number'
##[debug]=> [23](https://github.com/***/actions/runs/9545128180/job/26305423039#step:3:23)27
##[debug]Result: 2327
##[debug]Evaluating condition for step: 'run'
##[debug]Evaluating: (success() && (github.event_name == 'pull_request') && (inputs.pr-comment == 'true'))
##[debug]Evaluating And:
##[debug]..Evaluating success:
##[debug]..=> true
##[debug]..Evaluating Equal:
##[debug]....Evaluating Index:
##[debug]......Evaluating github:
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'event_name'
##[debug]....=> 'pull_request'
##[debug]....Evaluating String:
##[debug]....=> 'pull_request'
##[debug]..=> true
##[debug]..Evaluating Equal:
##[debug]....Evaluating Index:
##[debug]......Evaluating inputs:
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'pr-comment'
##[debug]....=> 'false'
##[debug]....Evaluating String:
##[debug]....=> 'true'
##[debug]..=> false
##[debug]=> false
##[debug]Expanded: (true && ('pull_request' == 'pull_request') && ('false' == 'true'))
##[debug]Result: false
##[debug]Evaluating: steps.run-total-model.outputs.data-total-json
##[debug]Evaluating Index:
##[debug]..Evaluating Index:
##[debug]....Evaluating Index:
##[debug]......Evaluating steps:
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'run-total-model'
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'outputs'
##[debug]..=> Object
##[debug]..Evaluating String:
##[debug]..=> 'data-total-json'
##[debug]=> null
##[debug]Result: null
##[debug]Evaluating: steps.run-lap-model.outputs.data-lap-json
##[debug]Evaluating Index:
##[debug]..Evaluating Index:
##[debug]....Evaluating Index:
##[debug]......Evaluating steps:
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'run-lap-model'
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'outputs'
##[debug]..=> Object
##[debug]..Evaluating String:
##[debug]..=> 'data-lap-json'
##[debug]=> null
##[debug]Result: null
##[debug]Finishing: Initialize energy estimation
doramatadora commented 2 weeks ago

I am, however, still getting an error for the results step:

Could not display table as no measurement data was present!

Here is the full debug output:

##[debug]Evaluating condition for step: 'Show energy results'
##[debug]Evaluating: success()
##[debug]Evaluating success:
##[debug]=> true
##[debug]Result: true
##[debug]Starting: Show energy results
##[debug]Loading inputs
##[debug]Evaluating: github.ref_name
##[debug]Evaluating Index:
##[debug]..Evaluating github:
##[debug]..=> Object
##[debug]..Evaluating String:
##[debug]..=> 'ref_name'
##[debug]=> '2327/merge'
##[debug]Result: '2327/merge'
##[debug]Evaluating: github.api_url
##[debug]Evaluating Index:
##[debug]..Evaluating github:
##[debug]..=> Object
##[debug]..Evaluating String:
##[debug]..=> 'api_url'
##[debug]=> 'https://api.github.com'
##[debug]Result: 'https://api.github.com'
##[debug]Loading env
Run green-coding-solutions/eco-ci-energy-estimation@pre-calculated
##[debug]Evaluating condition for step: 'run'
##[debug]Evaluating: (success() && (inputs.task != 'start-measurement') && (inputs.task != 'get-measurement') && (inputs.task != 'display-results'))
##[debug]Evaluating And:
##[debug]..Evaluating success:
##[debug]..=> true
##[debug]..Evaluating NotEqual:
##[debug]....Evaluating Index:
##[debug]......Evaluating inputs:
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'task'
##[debug]....=> 'display-results'
##[debug]....Evaluating String:
##[debug]....=> 'start-measurement'
##[debug]..=> true
##[debug]..Evaluating NotEqual:
##[debug]....Evaluating Index:
##[debug]......Evaluating inputs:
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'task'
##[debug]....=> 'display-results'
##[debug]....Evaluating String:
##[debug]....=> 'get-measurement'
##[debug]..=> true
##[debug]..Evaluating NotEqual:
##[debug]....Evaluating Index:
##[debug]......Evaluating inputs:
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'task'
##[debug]....=> 'display-results'
##[debug]....Evaluating String:
##[debug]....=> 'display-results'
##[debug]..=> false
##[debug]=> false
##[debug]Expanded: (true && ('display-results' != 'start-measurement') && ('display-results' != 'get-measurement') && ('display-results' != 'display-results'))
##[debug]Result: false
##[debug]Evaluating condition for step: 'run'
##[debug]Evaluating: (success() && (inputs.task == 'start-measurement') && (env.ECO_CI_INIT != 'DONE'))
##[debug]Evaluating And:
##[debug]..Evaluating success:
##[debug]..=> true
##[debug]..Evaluating Equal:
##[debug]....Evaluating Index:
##[debug]......Evaluating inputs:
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'task'
##[debug]....=> 'display-results'
##[debug]....Evaluating String:
##[debug]....=> 'start-measurement'
##[debug]..=> false
##[debug]=> false
##[debug]Expanded: (true && ('display-results' == 'start-measurement') && (env['ECO_CI_INIT'] != 'DONE'))
##[debug]Result: false
##[debug]Evaluating condition for step: 'run'
##[debug]Evaluating: (success() && (inputs.task == 'start-measurement'))
##[debug]Evaluating And:
##[debug]..Evaluating success:
##[debug]..=> true
##[debug]..Evaluating Equal:
##[debug]....Evaluating Index:
##[debug]......Evaluating inputs:
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'task'
##[debug]....=> 'display-results'
##[debug]....Evaluating String:
##[debug]....=> 'start-measurement'
##[debug]..=> false
##[debug]=> false
##[debug]Expanded: (true && ('display-results' == 'start-measurement'))
##[debug]Result: false
##[debug]Evaluating: github.workflow
##[debug]Evaluating Index:
##[debug]..Evaluating github:
##[debug]..=> Object
##[debug]..Evaluating String:
##[debug]..=> 'workflow'
##[debug]=> 'CI'
##[debug]Result: 'CI'
##[debug]Evaluating condition for step: 'run'
##[debug]Evaluating: (success() && (inputs.task == 'get-measurement'))
##[debug]Evaluating And:
##[debug]..Evaluating success:
##[debug]..=> true
##[debug]..Evaluating Equal:
##[debug]....Evaluating Index:
##[debug]......Evaluating inputs:
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'task'
##[debug]....=> 'display-results'
##[debug]....Evaluating String:
##[debug]....=> 'get-measurement'
##[debug]..=> false
##[debug]=> false
##[debug]Expanded: (true && ('display-results' == 'get-measurement'))
##[debug]Result: false
##[debug]Evaluating condition for step: 'run'
##[debug]Evaluating: (success() && (inputs.task == 'display-results'))
##[debug]Evaluating And:
##[debug]..Evaluating success:
##[debug]..=> true
##[debug]..Evaluating Equal:
##[debug]....Evaluating Index:
##[debug]......Evaluating inputs:
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'task'
##[debug]....=> 'display-results'
##[debug]....Evaluating String:
##[debug]....=> 'display-results'
##[debug]..=> true
##[debug]=> true
##[debug]Expanded: (true && ('display-results' == 'display-results'))
##[debug]Result: true
##[debug]Starting: run
##[debug]Loading inputs
##[debug]Evaluating: format('***0***/scripts/display_results.sh -dt ***1*** -db ***2*** -b "***3***" -r ***4*** -R "***5***" -sd ***6*** -sc ***7*** -s "github"
##[debug]cat "/tmp/eco-ci/output.txt" >> $GITHUB_STEP_SUMMARY
##[debug]total_data_file="/tmp/eco-ci/total-data.json"
##[debug]echo "data-total-json=$(cat $total_data_file)" >> $GITHUB_OUTPUT
##[debug]', github.action_path, inputs.display-table, inputs.display-badge, inputs.branch, github.run_id, github.repository, inputs.send-data, inputs.show-carbon)
##[debug]Evaluating format:
##[debug]..Evaluating String:
##[debug]..=> '***0***/scripts/display_results.sh -dt ***1*** -db ***2*** -b "***3***" -r ***4*** -R "***5***" -sd ***6*** -sc ***7*** -s "github"
##[debug]cat "/tmp/eco-ci/output.txt" >> $GITHUB_STEP_SUMMARY
##[debug]total_data_file="/tmp/eco-ci/total-data.json"
##[debug]echo "data-total-json=$(cat $total_data_file)" >> $GITHUB_OUTPUT
##[debug]'
##[debug]..Evaluating Index:
##[debug]....Evaluating github:
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'action_path'
##[debug]..=> '/home/runner/work/_actions/green-coding-solutions/eco-ci-energy-estimation/pre-calculated'
##[debug]..Evaluating Index:
##[debug]....Evaluating inputs:
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'display-table'
##[debug]..=> 'true'
##[debug]..Evaluating Index:
##[debug]....Evaluating inputs:
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'display-badge'
##[debug]..=> 'true'
##[debug]..Evaluating Index:
##[debug]....Evaluating inputs:
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'branch'
##[debug]..=> '2327/merge'
##[debug]..Evaluating Index:
##[debug]....Evaluating github:
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'run_id'
##[debug]..=> '9545128180'
##[debug]..Evaluating Index:
##[debug]....Evaluating github:
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'repository'
##[debug]..=> '***'
##[debug]..Evaluating Index:
##[debug]....Evaluating inputs:
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'send-data'
##[debug]..=> 'true'
##[debug]..Evaluating Index:
##[debug]....Evaluating inputs:
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'show-carbon'
##[debug]..=> 'true'
##[debug]=> '/home/runner/work/_actions/green-coding-solutions/eco-ci-energy-estimation/pre-calculated/scripts/display_results.sh -dt true -db true -b "2327/merge" -r 9545128180 -R "***" -sd true -sc true -s "github"
##[debug]cat "/tmp/eco-ci/output.txt" >> $GITHUB_STEP_SUMMARY
##[debug]total_data_file="/tmp/eco-ci/total-data.json"
##[debug]echo "data-total-json=$(cat $total_data_file)" >> $GITHUB_OUTPUT
##[debug]'
##[debug]Result: '/home/runner/work/_actions/green-coding-solutions/eco-ci-energy-estimation/pre-calculated/scripts/display_results.sh -dt true -db true -b "2327/merge" -r 9545128180 -R "***" -sd true -sc true -s "github"
##[debug]cat "/tmp/eco-ci/output.txt" >> $GITHUB_STEP_SUMMARY
##[debug]total_data_file="/tmp/eco-ci/total-data.json"
##[debug]echo "data-total-json=$(cat $total_data_file)" >> $GITHUB_OUTPUT
##[debug]'
##[debug]Loading env
Run /home/runner/work/_actions/green-coding-solutions/eco-ci-energy-estimation/pre-calculated/scripts/display_results.sh -dt true -db true -b "2327/merge" -r 9545128180 -R "***" -sd true -sc true -s "github"
##[debug]/usr/bin/bash --noprofile --norc -e -o pipefail /home/runner/work/_temp/0a135c0b-61fb-4188-ba5a-4abd42392d2c.sh
Could not display table as no measurement data was present!
Error: Process completed with exit code 1.
##[debug]Finished: run
##[debug]Evaluating: github.event.pull_request.number
##[debug]Evaluating Index:
##[debug]..Evaluating Index:
##[debug]....Evaluating Index:
##[debug]......Evaluating github:
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'event'
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'pull_request'
##[debug]..=> Object
##[debug]..Evaluating String:
##[debug]..=> 'number'
##[debug]=> 2327
##[debug]Result: 2327
##[debug]Evaluating condition for step: 'run'
##[debug]Evaluating: (success() && (github.event_name == 'pull_request') && (inputs.pr-comment == 'true'))
##[debug]Evaluating And:
##[debug]..Evaluating success:
##[debug]..=> false
##[debug]=> false
##[debug]Expanded: (false && (github['event_name'] == 'pull_request') && (inputs['pr-comment'] == 'true'))
##[debug]Result: false
##[debug]Evaluating: steps.run-total-model.outputs.data-total-json
##[debug]Evaluating Index:
##[debug]..Evaluating Index:
##[debug]....Evaluating Index:
##[debug]......Evaluating steps:
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'run-total-model'
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'outputs'
##[debug]..=> Object
##[debug]..Evaluating String:
##[debug]..=> 'data-total-json'
##[debug]=> null
##[debug]Result: null
##[debug]Evaluating: steps.run-lap-model.outputs.data-lap-json
##[debug]Evaluating Index:
##[debug]..Evaluating Index:
##[debug]....Evaluating Index:
##[debug]......Evaluating steps:
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'run-lap-model'
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'outputs'
##[debug]..=> Object
##[debug]..Evaluating String:
##[debug]..=> 'data-lap-json'
##[debug]=> null
##[debug]Result: null
##[debug]Finishing: Show energy results
ArneTR commented 2 weeks ago

Alright, at least one step further :)

The error messsage that you are seeing comes from the fact that no measurement data was collected. This is not always an error with Eco-CI, but can also be, because your workflow is simply too short.

Is the workflow somewhere public so I can have a look? What I would be checking for is how long the steps take and how you have setup the interplay of "initialize" and "start-measurement", "start-measurement" and "display-results".

doramatadora commented 2 weeks ago

I'm afraid I don't have a public workflow I can share, but it's a rather long build job (6-7m) that calls on EcoCI twice–as a first and final step. I've copied the steps below. We recently migrated from ubuntu-latest to ARM64; energy estimation worked up until this point.

If it helps, I can try to find a public repo CI to migrate to ARM64 runners, and add the action.

First step:

 - name: Initialize energy estimation
    uses: green-coding-solutions/eco-ci-energy-estimation@pre-calculated
    with:
      task: start-measurement
    continue-on-error: true

Last step:

- name: Show energy results
  uses: green-coding-solutions/eco-ci-energy-estimation@pre-calculated
  with:
    task: display-results
  continue-on-error: true
ArneTR commented 1 week ago

Hmm, that is unfortunate. The configuration looks ok.

Without the logs I am not sure what exactly the problem is. Most likely something will file permissions, the /proc/stat file which is different on the ARM runners than on the classic Linux ones.

We tested it all on ARM machines locally, but sadly have no acces to the Github Shared Runners. I will try to ping someone with GitHub internally and ask if they can support us on this.

Stay tuned :)