{"id":46001,"name":"Eco-CI","description":"Estimating the energy consumption of CI / CD pipelines on GitHub and GitLab.","url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation","last_synced_at":"2026-04-13T07:01:47.067Z","repository":{"id":77935693,"uuid":"589524014","full_name":"green-coding-solutions/eco-ci-energy-estimation","owner":"green-coding-solutions","description":"Eco CI Energy estimation for Github Actions, GitLab and Jenkins","archived":false,"fork":false,"pushed_at":"2026-02-27T07:21:01.000Z","size":3317,"stargazers_count":105,"open_issues_count":11,"forks_count":29,"subscribers_count":10,"default_branch":"main","last_synced_at":"2026-03-26T19:55:51.551Z","etag":null,"topics":["carbon-footprint","climate-change","co2-emissions","energy-consumption","green-coding","green-computing","green-software","metrics","power-consumption","sustainability","sustainable-software"],"latest_commit_sha":null,"homepage":"https://metrics.green-coding.io/ci-index.html","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/green-coding-solutions.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-01-16T10:21:20.000Z","updated_at":"2026-03-26T10:28:07.000Z","dependencies_parsed_at":"2023-09-21T19:29:01.212Z","dependency_job_id":"31990162-f100-4906-acc4-214e31a3beaa","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation","commit_stats":{"total_commits":209,"total_committers":14,"mean_commits":"14.928571428571429","dds":0.6076555023923444,"last_synced_commit":"86f1b2ee12db687bca0d15160a529bb64a7b60d9"},"previous_names":["green-coding-solutions/eco-ci-energy-estimation","green-coding-berlin/eco-ci-energy-estimation"],"tags_count":46,"template":false,"template_full_name":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/green-coding-solutions","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31065013,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-27T22:49:25.097Z","status":"ssl_error","status_checked_at":"2026-03-27T22:49:22.599Z","response_time":164,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"green-coding-solutions","name":"Green Coding Solutions","uuid":"97227681","kind":"organization","description":"We create open source tools to measure software energy consumption","email":null,"website":"https://www.green-coding.io","location":"Germany","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/97227681?v=4","repositories_count":47,"last_synced_at":"2024-04-16T05:54:48.943Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/green-coding-solutions","funding_links":[],"total_stars":186,"followers":61,"following":0,"created_at":"2022-11-14T07:19:18.816Z","updated_at":"2024-04-16T05:54:59.608Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/green-coding-solutions","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/green-coding-solutions/repositories"},"packages":[{"id":11772272,"name":"green-coding-solutions/eco-ci-energy-estimation","ecosystem":"actions","description":"Estimate the energy of Linux Github Actions Runner VMs via ML Model","homepage":"https://metrics.green-coding.io/ci-index.html","licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation","keywords_array":["carbon-footprint","climate-change","co2-emissions","energy-consumption","green-coding","green-computing","green-software","metrics","power-consumption","sustainability","sustainable-software"],"namespace":"green-coding-solutions","versions_count":44,"first_release_published_at":"2023-01-16T10:29:56.000Z","latest_release_published_at":"2025-12-13T01:09:45.000Z","latest_release_number":"v5.1.1","last_synced_at":"2026-03-24T07:24:38.437Z","created_at":"2025-06-07T21:20:29.007Z","updated_at":"2026-03-24T07:24:38.437Z","registry_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation","install_command":null,"documentation_url":null,"metadata":{"name":"Eco CI Energy Estimation","description":"Estimate the energy of Linux Github Actions Runner VMs via ML Model","branding":{"icon":"battery-charging","color":"green"},"inputs":{"task":{"description":"Task to be executed (start-measurement, get-measurement, display-results)","required":true},"job-id":{"description":"The unique ID of the job that is run","default":"${{ job.check_run_id }}","required":false},"branch":{"description":"Used to correctly identify this CI run for the Badge. Uses github.ref_name by default","default":"${{ github.ref_name }}","required":false},"label":{"description":"Label for the get-measurement task, to mark what this measurement correlates to in your workflow","default":null,"required":false},"machine-power-data":{"description":"The file to read the machine power data from. Default will be 4 core AMD EPYC 7763 Github Runner","default":"github_EPYC_7763_4_CPU_shared.sh","required":false},"send-data":{"description":"Send metrics data to dashboard (default: metrics.green-coding.io) to create and display badge, and see an overview of the energy of your CI runs. Set to false to send no data.","default":true,"required":false},"display-table":{"description":"Show the energy reading results in a table during display-results step","default":true,"required":false},"display-badge":{"description":"Shows the badge for the ci run during display-results step","default":true,"required":false},"pr-comment":{"description":"Add a comment to the PR with the results during display-results step","default":false,"required":false},"json-output":{"description":"Output measurement data also as JSON artifacts","default":false,"required":false},"gh-api-base":{"description":"Base URL of the Github API to send data to (including schema). Default is \"github.api_url\" (which resolves to https://api.github.com in free and many enterprise setups), but can be changed to your hostname if you have a custom hosted Github Enterprise","default":"${{ github.api_url }}","required":false},"type":{"description":"If you want filter data in the GMT Dashboard or in CarbonDB you can here manually set a type for drill-down later. Defaults to \"machine.ci\"","default":"machine.ci","required":false},"project":{"description":"If you want filter data in the GMT Dashboard or in CarbonDB you can here manually set a project for drill-down later. Defaults to \"CI/CD\"","default":"CI/CD","required":false},"machine":{"description":"If you want filter data in the GMT Dashboard or in CarbonDB you can here manually set a machine for drill-down later. Defaults to ubuntu-latest","default":"ubuntu-latest","required":false},"tags":{"description":"If you want filter data in the GMT Dashboard or in CarbonDB you can here manually set tags for drill-down later. Please supply comma separated. Tags cannot have commas itself or contain quotes. Defaults to empty","default":"","required":false},"gmt-api-token":{"description":"If you are not using the default user for the GMT API supply your auth token. We recommend to have this as a GitHub Secret","default":"","required":false},"api-endpoint-add":{"description":"When using the GMT Dashboard and / or CarbonDB specify the endpoint URL to send to. Defaults to \"https://api.green-coding.io/v3/ci/measurement/add\"","default":"https://api.green-coding.io/v3/ci/measurement/add","required":false},"api-endpoint-badge-get":{"description":"When using the GMT Dashboard and / or CarbonDB specify the endpoint URL to get the badge from to. Defaults to \"https://api.green-coding.io/v1/ci/badge/get","default":"https://api.green-coding.io/v1/ci/badge/get","required":false},"dashboard-url":{"description":"The URL for the GMT Dashboard. Punch in yours if self-hosted. Defaults to \"https://metrics.green-coding.io\"","default":"https://metrics.green-coding.io","required":false},"co2-calculation-method":{"description":"CO2 calculation can be a constant and will use a supplied fixed grid intensity. Or it can also be location based where it will use a grid intensity API provider to determine the carbon intensity value of the current machine IP.","default":"constant","required":false},"co2-grid-intensity-constant":{"description":"Constant value to be used to calculate the CO2 from the estimated energy. We use the worldwide average value from Ember compiled by The Green Web Foundation from https://github.com/thegreenwebfoundation/co2.js/blob/main/data/output/average-intensities.json#L1314 as default and update it annually.","default":472,"required":false},"co2-grid-intensity-api-token":{"description":"API token for the API of your choice regarding the grid intensity. See documentation for details","default":"","required":false}},"outputs":{"data-total-json":{"description":"Contains the data of the total measurement which is retrieved by the 'display-results' task.","value":"${{ steps.run-total-model.outputs.data-total-json }}"},"data-lap-json":{"description":"Contains the data of the most recent measurement which is retrieved by the 'get-measurement' task.","value":"${{ steps.run-lap-model.outputs.data-lap-json }}"}},"runs":{"using":"composite","steps":[{"id":"guard","if":"inputs.task != 'start-measurement' \u0026\u0026 inputs.task != 'get-measurement' \u0026\u0026 inputs.task != 'display-results'","shell":"bash","run":"echo 'Please call the Eco CI Energy Estimation with a valid task name: start-measurement, get-measurement, or display-results' \u003e\u003e $GITHUB_STEP_SUMMARY\necho \"Eco CI task was called with ${{inputs.task}} instead\" \u003e\u003e $GITHUB_STEP_SUMMARY\nfail('Invalid task name specified')\n"},{"id":"start-measurement","if":"inputs.task == 'start-measurement'","name":"Starting measurement","shell":"bash","run":"workflow_id=\"${{github.workflow}}\"\nworkflow_name=\"${{github.workflow}}\"\n\nif ${{inputs.send-data}}; then\n  workflow_id=$(curl -s -H \"Authorization: Bearer ${{github.token}}\" ${{ inputs.gh-api-base }}/repos/${{ github.repository }}/actions/runs/${{ github.run_id }} | jq -r .workflow_id)\nfi\n\nworkflow_id=${workflow_id:-\"not_set\"}\nworkflow_name=${workflow_name:-\"not_set\"}\n\n${{github.action_path}}/scripts/setup.sh start_measurement \"${{inputs.machine-power-data}}\" \"${{ github.run_id }}\" \"${{inputs.branch}}\" \"${{ github.repository }}\" \"$workflow_id\" \"$workflow_name\" \"${{ github.sha }}\" \"github\" \"${{ inputs.send-data }}\" \"${{ inputs.type }}\" \"${{ inputs.project }}\" \"${{ inputs.machine }}\" \"${{ inputs.tags }}\" \"${{ inputs.co2-calculation-method }}\" \"${{ inputs.co2-grid-intensity-constant }}\" \"${{ inputs.co2-grid-intensity-api-token }}\" \"${{ inputs.gmt-api-token }}\" \"${{ inputs.json-output }}\" \"${{ inputs.api-endpoint-add }}\" \"${{ inputs.api-endpoint-badge-get }}\" \"${{ inputs.dashboard-url }}\" \"${{ inputs.job-id }}\"\n"},{"if":"inputs.task == 'get-measurement'","id":"run-lap-model","name":"Running estimation model","env":{"NAME":"${{ github.workflow }}"},"shell":"bash","run":"label='${{ contains(inputs.label, '\"') \u0026\u0026 'No quotes allowed in labels' || inputs.label }}'\nlabel_cleaned=$(echo \"$label\" | tr -d \"$\u0026;\\'\")\necho \"Cleaned label: $label_cleaned\"\n\"${{ github.action_path }}/scripts/make_measurement.sh\" make_measurement \"$label_cleaned\"\ndata_file=\"/tmp/test.bash\"\nlap_data_file=\"/tmp/eco-ci/lap-data.json\"\nif [[ -e $lap_data_file ]]; then\n  echo \"data-lap-json=$(cat $lap_data_file)\" \u003e\u003e $GITHUB_OUTPUT\nfi\n"},{"if":"inputs.task == 'display-results'","name":"get estimation for total energy","id":"run-total-model","shell":"bash","run":"${{github.action_path}}/scripts/display_results.sh display_results \"${{inputs.display-table}}\" \"${{inputs.display-badge}}\"\ncat \"/tmp/eco-ci/output.txt\" \u003e\u003e $GITHUB_STEP_SUMMARY\ntotal_data_file=\"/tmp/eco-ci/total-data.json\"\nif [[ -e $total_data_file ]]; then\n  echo \"data-total-json=$(cat $total_data_file)\" \u003e\u003e $GITHUB_OUTPUT\nfi\necho \"Checking if PR comment is needed\"\necho \"inputs.pr-comment: ${{ inputs.pr-comment }}\"\necho \"github.event_name: ${{ github.event_name }}\"\n"},{"if":"inputs.task == 'display-results' \u0026\u0026 inputs.pr-comment == 'true' \u0026\u0026 github.event_name == 'pull_request'","name":"Minimize Old Comment and Post New Comment","id":"pr-comment","shell":"bash","env":{"PR_NUMBER":"${{ github.event.pull_request.number }}","RUN_ID":"${{ github.run_id }}"},"run":"echo 'Running PR-Comment task'\nCOMMENTS=$(curl -s -H  \"Authorization: Bearer ${{github.token}}\" \"${{ inputs.gh-api-base }}/repos/${{ github.repository }}/issues/$PR_NUMBER/comments\")\n\necho \"$COMMENTS\" | jq -c --arg username \"github-actions[bot]\" '.[] | select(.user.login == $username)' | while read -r comment; do\n\n    COMMENT_ID=$(echo \"$comment\" | jq -r '.id')\n    COMMENT_BODY=$(echo \"$comment\" | jq -r '.body')\n\n    if [[ \"$COMMENT_BODY\" != *\"Eco CI Output [RUN-ID:\"* ]]; then\n      echo 'Skipping non Eco CI comment'\n      continue\n    fi\n\n    if [[ \"$COMMENT_BODY\" == *\"Eco CI Output - Old Energy Estimation\"* ]]; then\n      echo 'Skipping already collapsed Eco CI comment'\n      continue\n    fi\n    if [[ \"$COMMENT_BODY\" == *\"Eco CI Output [RUN-ID: ${RUN_ID}]:\"* ]]; then\n      echo 'Skipping Eco CI comment from same RUN-ID'\n      continue\n    fi\n\n    ## indentation here is important, otherwise newlines are not properly sent/processed\n    PAYLOAD=$(jq --null-input --arg body \"\u003cdetails\u003e\u003csummary\u003eEco CI Output - Old Energy Estimation\u003c/summary\u003e\n\n$COMMENT_BODY\n\n\u003c/details\u003e\" '{\"body\": $body}')\n    curl -s -H \"Authorization: Bearer ${{github.token}}\" -X PATCH -d \"$PAYLOAD\" \"${{ inputs.gh-api-base }}/repos/${{ github.repository }}/issues/comments/$COMMENT_ID\"\n    echo \"Comment $COMMENT_ID collapsed.\"\ndone\n\nNEW_COMMENT=$(cat \"/tmp/eco-ci/output-pr.txt\" | jq -Rs '.')\nAPI_URL=\"${{ inputs.gh-api-base }}/repos/${{ github.repository }}/issues/${PR_NUMBER}/comments\"\ncurl -X POST -H \"Authorization: Bearer ${{github.token}}\" -d @- $API_URL \u003c\u003cEOF\n{\n  \"body\": $NEW_COMMENT\n}\nEOF\n"}]},"default_branch":"main","path":null},"repo_metadata":{"id":77935693,"uuid":"589524014","full_name":"green-coding-solutions/eco-ci-energy-estimation","owner":"green-coding-solutions","description":"Eco CI Energy estimation for Github Actions Runner VMs","archived":false,"fork":false,"pushed_at":"2025-10-21T05:13:55.000Z","size":3306,"stargazers_count":98,"open_issues_count":11,"forks_count":29,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-10-22T02:02:19.841Z","etag":null,"topics":["carbon-footprint","climate-change","co2-emissions","energy-consumption","green-coding","green-computing","green-software","metrics","power-consumption","sustainability","sustainable-software"],"latest_commit_sha":null,"homepage":"https://metrics.green-coding.io/ci-index.html","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/green-coding-solutions.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-01-16T10:21:20.000Z","updated_at":"2025-10-21T05:13:55.000Z","dependencies_parsed_at":"2023-09-21T19:29:01.212Z","dependency_job_id":"31990162-f100-4906-acc4-214e31a3beaa","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation","commit_stats":{"total_commits":209,"total_committers":14,"mean_commits":"14.928571428571429","dds":0.6076555023923444,"last_synced_commit":"86f1b2ee12db687bca0d15160a529bb64a7b60d9"},"previous_names":["green-coding-solutions/eco-ci-energy-estimation","green-coding-berlin/eco-ci-energy-estimation"],"tags_count":41,"template":false,"template_full_name":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/green-coding-solutions","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281544192,"owners_count":26519554,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-29T02:00:06.901Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"green-coding-solutions","name":"Green Coding Solutions","uuid":"97227681","kind":"organization","description":"We create open source tools to measure software energy consumption","email":null,"website":"https://www.green-coding.io","location":"Germany","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/97227681?v=4","repositories_count":47,"last_synced_at":"2024-04-16T05:54:48.943Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/green-coding-solutions","funding_links":[],"total_stars":186,"followers":61,"following":0,"created_at":"2022-11-14T07:19:18.816Z","updated_at":"2024-04-16T05:54:59.608Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/green-coding-solutions","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/green-coding-solutions/repositories"},"tags":[{"name":"v5.0.0","sha":"862050e4f01f65b1436e5eca18ba4bd85562f0de","kind":"commit","published_at":"2025-06-21T08:37:53.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v5.0.0","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v5.0.0","dependencies_parsed_at":"2025-06-24T04:48:55.670Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v5.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v5.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v5.0.0/manifests"},{"name":"v5.0","sha":"862050e4f01f65b1436e5eca18ba4bd85562f0de","kind":"commit","published_at":"2025-06-21T08:37:53.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v5.0","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v5.0","dependencies_parsed_at":"2025-06-24T04:48:56.073Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v5.0/manifests"},{"name":"v5","sha":"862050e4f01f65b1436e5eca18ba4bd85562f0de","kind":"commit","published_at":"2025-06-21T08:37:53.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v5","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v5","dependencies_parsed_at":"2025-06-24T04:48:55.516Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v5/manifests"},{"name":"v4.7","sha":"173a7c84b6d28fc44a6c2ac4985a60ed4b5b3661","kind":"commit","published_at":"2025-05-04T10:15:00.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v4.7","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v4.7","dependencies_parsed_at":"2025-05-30T16:08:49.858Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v4.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.7/manifests"},{"name":"v4.6","sha":"6359748044c3a70d7249161e099992aa11042487","kind":"commit","published_at":"2025-05-01T05:34:04.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v4.6","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v4.6","dependencies_parsed_at":"2025-05-30T16:08:49.381Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v4.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.6/manifests"},{"name":"v4.5","sha":"a2305b330063eddbf6fd758bb5a335a87c65d804","kind":"commit","published_at":"2025-04-14T08:43:38.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v4.5","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v4.5","dependencies_parsed_at":null,"dependency_job_id":"879a38da-7f24-4b0e-9120-67184710f974","purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v4.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.5/manifests"},{"name":"v4.4.1","sha":"2601fdbc7d6e39e043a9b5bd11cc40481efb1d8e","kind":"commit","published_at":"2025-02-12T10:32:35.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v4.4.1","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v4.4.1","dependencies_parsed_at":null,"dependency_job_id":"bd097131-7299-4834-b6eb-e8d263b3068e","purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v4.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.4.1/manifests"},{"name":"v4.4","sha":"7ff5628108e21227662ce881f10156eb9deab891","kind":"commit","published_at":"2025-01-25T08:51:51.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v4.4","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v4.4","dependencies_parsed_at":null,"dependency_job_id":"6416f920-f56c-4299-aff2-fc6d46ef6171","purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v4.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.4/manifests"},{"name":"v4.3.0","sha":"2c74a687e9cc4cc4579ae752404a8d54cc46a06a","kind":"commit","published_at":"2025-01-22T04:35:24.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v4.3.0","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v4.3.0","dependencies_parsed_at":"2025-02-12T06:24:52.870Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v4.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.3.0/manifests"},{"name":"v4.2.0","sha":"e79d33b08b0c47de4438c161d432730fce23f246","kind":"commit","published_at":"2025-01-13T15:09:08.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v4.2.0","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v4.2.0","dependencies_parsed_at":null,"dependency_job_id":"dd3f11b9-d65a-470c-b47f-ab5c4c1a68f4","purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v4.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.2.0/manifests"},{"name":"v4.1.0","sha":"03e21410acb1a8a37c3e652059e535b600cd1fef","kind":"commit","published_at":"2024-12-23T21:07:02.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v4.1.0","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v4.1.0","dependencies_parsed_at":null,"dependency_job_id":"a8591855-2933-4d2b-bb25-c701da728946","purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v4.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.1.0/manifests"},{"name":"v4.0.0","sha":"86f1b2ee12db687bca0d15160a529bb64a7b60d9","kind":"commit","published_at":"2024-10-24T11:08:15.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v4.0.0","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v4.0.0","dependencies_parsed_at":null,"dependency_job_id":"7ded9f31-c745-4828-9f29-7ce11ecb2283","purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v4.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.0.0/manifests"},{"name":"v4","sha":"86f1b2ee12db687bca0d15160a529bb64a7b60d9","kind":"commit","published_at":"2024-10-24T11:08:15.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v4","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v4","dependencies_parsed_at":null,"dependency_job_id":"90d689aa-ace6-40db-97c5-4bf399fb5e94","purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4/manifests"},{"name":"v4.0-rc4","sha":"19b157f08ef1a7c6a25212864ee2d122ec886f51","kind":"commit","published_at":"2024-08-07T17:39:47.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v4.0-rc4","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v4.0-rc4","dependencies_parsed_at":"2024-08-11T06:10:17.102Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v4.0-rc4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.0-rc4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.0-rc4/manifests"},{"name":"v4.0-rc3","sha":"93ceb3e78e9ca03585a1dd9ac0c490a17c98ac3b","kind":"commit","published_at":"2024-06-18T12:38:32.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v4.0-rc3","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v4.0-rc3","dependencies_parsed_at":"2024-06-22T04:05:11.855Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v4.0-rc3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.0-rc3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.0-rc3/manifests"},{"name":"v4.0-rc2","sha":"b952e65a271ad5f54205e8c629260b0495ea8e5d","kind":"commit","published_at":"2024-06-18T12:34:18.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v4.0-rc2","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v4.0-rc2","dependencies_parsed_at":"2024-06-22T04:05:12.111Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v4.0-rc2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.0-rc2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.0-rc2/manifests"},{"name":"v4.0-rc1","sha":"14cc408f6f0fbfbe09a847758e1992d173590da2","kind":"commit","published_at":"2024-06-18T10:18:45.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v4.0-rc1","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v4.0-rc1","dependencies_parsed_at":"2024-06-19T12:40:12.367Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v4.0-rc1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.0-rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v4.0-rc1/manifests"},{"name":"v3","sha":"0cf2d1ec791c0ec22ce4b43bf7f3b6fbce8e40b7","kind":"commit","published_at":"2024-04-21T17:40:59.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v3","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v3","dependencies_parsed_at":"2024-04-24T05:43:33.880Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v3/manifests"},{"name":"v3.1","sha":"e9d69f1a41ad2c943a82291a436c372a080eca7d","kind":"commit","published_at":"2024-04-21T17:17:41.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v3.1","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v3.1","dependencies_parsed_at":"2024-04-24T05:43:33.456Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v3.1/manifests"},{"name":"v3.0","sha":"cdd3d008fe69262d5640eb3163e1e240227dc467","kind":"commit","published_at":"2024-04-17T11:06:52.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v3.0","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v3.0","dependencies_parsed_at":"2024-04-23T04:42:07.621Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v3.0/manifests"},{"name":"v2.10","sha":"0092c75f09b3c3a164b63ccf12f2122a303f01c5","kind":"commit","published_at":"2024-02-23T16:32:40.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v2.10","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v2.10","dependencies_parsed_at":"2024-02-25T04:51:05.537Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v2.10","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2.10/manifests"},{"name":"v2.9","sha":"29d49afe9a6af10af7c44ae5e2474857e3e16d74","kind":"commit","published_at":"2024-02-15T13:37:53.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v2.9","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v2.9","dependencies_parsed_at":"2024-02-21T04:07:54.768Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v2.9","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2.9/manifests"},{"name":"v2.8","sha":"399740833cb5aeb6b2e1b2f372f6940ab2e1671c","kind":"commit","published_at":"2024-01-18T06:49:32.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v2.8","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v2.8","dependencies_parsed_at":"2024-01-19T18:16:07.196Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v2.8","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2.8/manifests"},{"name":"v2.7","sha":"95502084f05e13d443e9ff3c4521f8cbed59ebae","kind":"commit","published_at":"2023-12-12T14:44:16.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v2.7","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v2.7","dependencies_parsed_at":"2023-12-14T06:29:22.258Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v2.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2.7/manifests"},{"name":"v2.6","sha":"4aa956e0a9da04da63cf65ebd5c72e9f122be1de","kind":"commit","published_at":"2023-11-17T16:19:33.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v2.6","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v2.6","dependencies_parsed_at":"2023-11-23T11:06:24.675Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v2.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2.6/manifests"},{"name":"v2.5","sha":"37461fc77c3dbbe7b98643695d1f5b08d83c0f34","kind":"commit","published_at":"2023-11-02T12:56:19.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v2.5","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v2.5","dependencies_parsed_at":"2023-11-04T05:15:37.724Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v2.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2.5/manifests"},{"name":"2.4","sha":"3fd0bbfb700590ba3546ebcc545aa5a180afbf58","kind":"commit","published_at":"2023-10-06T09:24:39.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/2.4","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/2.4","dependencies_parsed_at":"2023-10-12T08:27:19.690Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@2.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/2.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/2.4/manifests"},{"name":"v2.3","sha":"b54aa91c66db1292ed35b1398cca37ab122c49ba","kind":"commit","published_at":"2023-10-02T13:10:39.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v2.3","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v2.3","dependencies_parsed_at":"2023-10-12T08:27:13.401Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v2.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2.3/manifests"},{"name":"v2.2","sha":"06837b0b3b393a04d055979e1305852bda82f044","kind":"commit","published_at":"2023-08-15T13:15:00.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v2.2","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v2.2","dependencies_parsed_at":"2023-08-17T06:16:34.449Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2.2/manifests"},{"name":"v2.1.1","sha":"f098b21a7c7868c4ac9509b439ded4c48022d5c0","kind":"commit","published_at":"2023-08-04T12:00:22.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v2.1.1","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v2.1.1","dependencies_parsed_at":"2023-08-09T05:14:02.032Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v2.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2.1.1/manifests"},{"name":"v2.1","sha":"1b0c2e9ccae258e1308d3f6ce401ae76e6e7e0ee","kind":"commit","published_at":"2023-07-07T13:24:28.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v2.1","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v2.1","dependencies_parsed_at":"2023-07-09T04:07:09.117Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2.1/manifests"},{"name":"v2","sha":"1985b2348a4d9a3991b76da2e98b233b034aaf19","kind":"commit","published_at":"2023-06-26T16:03:19.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v2","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v2","dependencies_parsed_at":"2023-07-01T04:20:01.754Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2/manifests"},{"name":"v2.0","sha":"a9b3d206ecc03046e19d6b2893251f4e862b9539","kind":"commit","published_at":"2023-06-26T12:05:13.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v2.0","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v2.0","dependencies_parsed_at":"2023-07-01T04:20:01.808Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v2.0/manifests"},{"name":"v1.4","sha":"e4f2678e25a2c9de366729ddd4ddf31af7f9c5c6","kind":"commit","published_at":"2023-06-02T14:51:29.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v1.4","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v1.4","dependencies_parsed_at":"2023-06-04T00:08:27.906Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v1.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v1.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v1.4/manifests"},{"name":"v1","sha":"f9d953dc2016ec3c94318f06731b27f5b07365f3","kind":"commit","published_at":"2023-05-15T11:33:36.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v1","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v1","dependencies_parsed_at":"2023-06-02T00:14:05.666Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v1/manifests"},{"name":"v1.3.1","sha":"2837419f2bfdaf835fa0ff3f927e9b01ecc91735","kind":"commit","published_at":"2023-04-28T10:16:45.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v1.3.1","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v1.3.1","dependencies_parsed_at":"2023-06-02T00:14:06.218Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v1.3.1/manifests"},{"name":"untagged","sha":"a3a6fe8f8af10f6acb2a716a3afb556c6b1c3874","kind":"commit","published_at":"2023-04-28T10:02:39.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/untagged","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/untagged","dependencies_parsed_at":"2023-06-02T00:14:05.588Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@untagged","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/untagged","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/untagged/manifests"},{"name":"v1.3","sha":"20c2995e97d6431266f16083b0adf0aa59c56830","kind":"commit","published_at":"2023-04-21T09:21:54.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v1.3","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v1.3","dependencies_parsed_at":"2023-06-02T00:14:06.307Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v1.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v1.3/manifests"},{"name":"v1.2.0","sha":"5ab20ee5329ae02c598a3b967f58121a4d9d8287","kind":"commit","published_at":"2023-04-04T17:51:49.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v1.2.0","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v1.2.0","dependencies_parsed_at":"2023-06-02T00:14:05.579Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v1.2.0/manifests"},{"name":"v1.1","sha":"3124c6db02cdb8158001bf9f527d49caf2a08919","kind":"commit","published_at":"2023-01-17T17:03:31.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v1.1","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v1.1","dependencies_parsed_at":"2023-06-02T00:14:04.791Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v1.1/manifests"},{"name":"v1.0","sha":"c8e7f3a1312069e65f6c22bec3e20471c8c7ea6a","kind":"commit","published_at":"2023-01-16T10:29:56.000Z","download_url":"https://codeload.github.com/green-coding-solutions/eco-ci-energy-estimation/tar.gz/v1.0","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/releases/tag/v1.0","dependencies_parsed_at":"2023-06-02T00:14:05.030Z","dependency_job_id":null,"purl":"pkg:github/green-coding-solutions/eco-ci-energy-estimation@v1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/tags/v1.0/manifests"}]},"repo_metadata_updated_at":"2025-11-06T02:08:05.069Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":34.34343434343434,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":17.17171717171717},"purl":"pkg:githubactions/green-coding-solutions/eco-ci-energy-estimation","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/actions/green-coding-solutions/eco-ci-energy-estimation","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/actions/green-coding-solutions/eco-ci-energy-estimation","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/actions/green-coding-solutions/eco-ci-energy-estimation/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-11-04T01:08:05.532Z","issues_count":32,"pull_requests_count":91,"avg_time_to_close_issue":11832546.916666666,"avg_time_to_close_pull_request":2124660.2098765434,"issues_closed_count":12,"pull_requests_closed_count":81,"pull_request_authors_count":15,"issue_authors_count":17,"avg_comments_per_issue":2.25,"avg_comments_per_pull_request":10.483516483516484,"merged_pull_requests_count":64,"bot_issues_count":0,"bot_pull_requests_count":7,"past_year_issues_count":10,"past_year_pull_requests_count":35,"past_year_avg_time_to_close_issue":3746517.0,"past_year_avg_time_to_close_pull_request":1246732.4333333333,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":30,"past_year_pull_request_authors_count":6,"past_year_issue_authors_count":7,"past_year_avg_comments_per_issue":1.4,"past_year_avg_comments_per_pull_request":16.571428571428573,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":3,"past_year_merged_pull_requests_count":26,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/issues","maintainers":[{"login":"ArneTR","count":56,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ArneTR"},{"login":"ribalba","count":11,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ribalba"}],"active_maintainers":[{"login":"ArneTR","count":26,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ArneTR"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/github%20actions/packages/green-coding-solutions%2Feco-ci-energy-estimation/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/github%20actions/packages/green-coding-solutions%2Feco-ci-energy-estimation/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/github%20actions/packages/green-coding-solutions%2Feco-ci-energy-estimation/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/github%20actions/packages/green-coding-solutions%2Feco-ci-energy-estimation/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/github%20actions/packages/green-coding-solutions%2Feco-ci-energy-estimation/codemeta","maintainers":[],"registry":{"name":"github actions","url":"https://github.com/marketplace/actions/","ecosystem":"actions","default":true,"packages_count":32532,"maintainers_count":0,"namespaces_count":20345,"keywords_count":0,"github":"actions","metadata":{"funded_packages_count":4013},"icon_url":"https://github.com/actions.png","created_at":"2023-01-03T17:16:39.185Z","updated_at":"2026-04-03T06:20:55.376Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/github%20actions/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/github%20actions/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/github%20actions/namespaces"}}],"commits":{"id":1470481,"full_name":"green-coding-solutions/eco-ci-energy-estimation","default_branch":"main","total_commits":274,"total_committers":15,"total_bot_commits":6,"total_bot_committers":1,"mean_commits":18.266666666666666,"dds":0.5437956204379562,"past_year_total_commits":47,"past_year_total_committers":5,"past_year_total_bot_commits":4,"past_year_total_bot_committers":1,"past_year_mean_commits":9.4,"past_year_dds":0.17021276595744683,"last_synced_at":"2026-04-11T06:01:44.200Z","last_synced_commit":"2a6dc54f1eca645438570ec5fa4d667dc92bdc25","created_at":"2024-02-04T18:38:34.367Z","updated_at":"2026-04-11T06:01:26.051Z","committers":[{"name":"Arne Tarara","email":"arne@datafuse.de","login":"ArneTR","count":125},{"name":"dan-mm","email":"dan@green-coding.berlin","login":"dan-mm","count":97},{"name":"Jan","email":"janreimone@gmail.com","login":"jreimone","count":29},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":6},{"name":"Didi Hoffmann","email":"39629+ribalba","login":"ribalba","count":4},{"name":"Rob Bos","email":"raj.bos@gmail.com","login":"rajbos","count":2},{"name":"nstruharova","email":"43135956+nstruharova","login":"nstruharova","count":2},{"name":"SimSon2710","email":"82225296+SimSon2710","login":"SimSon2710","count":2},{"name":"Sebastian Guillen","email":"code-schreiber","login":"code-schreiber","count":1},{"name":"Mikhail Nachinkin","email":"122356446+Lisi4ka59","login":"Lisi4ka59","count":1},{"name":"Jan Kiszka","email":"jan.kiszka@web.de","login":"jan-kiszka","count":1},{"name":"David","email":"davidkopp","login":"davidkopp","count":1},{"name":"Christoph Frenes","email":"cfrenes@animachi.de","login":"shuryoka","count":1},{"name":"Cedd Burge","email":"ceddlyburge","login":"ceddlyburge","count":1},{"name":"Anushka Trivedi","email":"21999998+opheliagame","login":"opheliagame","count":1}],"past_year_committers":[{"name":"Arne Tarara","email":"arne@datafuse.de","login":"ArneTR","count":39},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":4},{"name":"SimSon2710","email":"82225296+SimSon2710","login":"SimSon2710","count":2},{"name":"Mikhail Nachinkin","email":"122356446+Lisi4ka59","login":"Lisi4ka59","count":1},{"name":"Anushka Trivedi","email":"21999998+opheliagame","login":"opheliagame","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-13T00:00:06.408Z","repositories_count":6212931,"commits_count":904007533,"contributors_count":34943747,"owners_count":1144000,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"green-coding-solutions/eco-ci-energy-estimation","html_url":"https://github.com/green-coding-solutions/eco-ci-energy-estimation","last_synced_at":"2026-03-21T20:01:22.397Z","status":"active","issues_count":34,"pull_requests_count":97,"avg_time_to_close_issue":10973552.923076924,"avg_time_to_close_pull_request":2051430.2857142857,"issues_closed_count":13,"pull_requests_closed_count":84,"pull_request_authors_count":18,"issue_authors_count":18,"avg_comments_per_issue":2.2941176470588234,"avg_comments_per_pull_request":10.278350515463918,"merged_pull_requests_count":67,"bot_issues_count":0,"bot_pull_requests_count":8,"past_year_issues_count":7,"past_year_pull_requests_count":29,"past_year_avg_time_to_close_issue":333494.0,"past_year_avg_time_to_close_pull_request":1155720.1304347827,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":23,"past_year_pull_request_authors_count":8,"past_year_issue_authors_count":5,"past_year_avg_comments_per_issue":2.0,"past_year_avg_comments_per_pull_request":13.206896551724137,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":4,"past_year_merged_pull_requests_count":20,"created_at":"2024-02-04T18:38:37.150Z","updated_at":"2026-03-21T20:01:22.397Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/green-coding-solutions%2Feco-ci-energy-estimation/issues","issue_labels_count":{"enhancement":4,"good first issue":3,"help wanted":3},"pull_request_labels_count":{"dependencies":8,"github_actions":4},"issue_author_associations_count":{"NONE":18,"MEMBER":13,"CONTRIBUTOR":3},"pull_request_author_associations_count":{"MEMBER":56,"NONE":22,"CONTRIBUTOR":19},"issue_authors":{"ArneTR":10,"ribalba":3,"Zeitsperre":3,"rvandernoort":2,"Arif999000":2,"davidkopp":2,"michaellilltokiwa":1,"SimSon2710":1,"Freubert":1,"abdullahdevrel":1,"nstruharova":1,"marians":1,"ip2location":1,"doramatadora":1,"physikerwelt":1,"raits":1,"jan-kiszka":1,"franciscotbjr":1},"pull_request_authors":{"ArneTR":48,"dependabot[bot]":8,"ribalba":8,"davidkopp":6,"SimSon2710":4,"nstruharova":4,"yuxin1234":2,"jan-kiszka":2,"ip2location":2,"ceddlyburge":2,"KaranSinghDev":2,"DaxLynch":2,"vszakats":2,"CWallenberg":1,"liamlaverty":1,"Lisi4ka59":1,"ridaeh":1,"opheliagame":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-03-23T00:00:07.489Z","repositories_count":13887668,"issues_count":34649371,"pull_requests_count":113114480,"authors_count":11208700,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{"enhancement":2,"help wanted":2,"good first issue":1},"past_year_pull_request_labels_count":{"dependencies":4,"github_actions":4},"past_year_issue_author_associations_count":{"NONE":4,"MEMBER":2,"CONTRIBUTOR":1},"past_year_pull_request_author_associations_count":{"MEMBER":15,"CONTRIBUTOR":8,"NONE":6},"past_year_issue_authors":{"ArneTR":2,"rvandernoort":2,"davidkopp":1,"physikerwelt":1,"SimSon2710":1},"past_year_pull_request_authors":{"ArneTR":15,"dependabot[bot]":4,"SimSon2710":4,"KaranSinghDev":2,"CWallenberg":1,"Lisi4ka59":1,"opheliagame":1,"ridaeh":1},"maintainers":[{"login":"ArneTR","count":58,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ArneTR"},{"login":"ribalba","count":11,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ribalba"}],"active_maintainers":[{"login":"ArneTR","count":17,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ArneTR"}]},"events":{"total":{"ReleaseEvent":6,"DeleteEvent":17,"PullRequestEvent":47,"ForkEvent":10,"IssuesEvent":24,"WatchEvent":35,"IssueCommentEvent":381,"PushEvent":132,"PullRequestReviewEvent":43,"PullRequestReviewCommentEvent":71,"CreateEvent":28},"last_year":{"ReleaseEvent":2,"DeleteEvent":11,"PullRequestEvent":24,"ForkEvent":4,"IssuesEvent":10,"WatchEvent":7,"IssueCommentEvent":141,"PushEvent":39,"PullRequestReviewCommentEvent":10,"PullRequestReviewEvent":4,"CreateEvent":13}},"keywords":["carbon-footprint","climate-change","co2-emissions","energy-consumption","green-coding","green-computing","green-software","metrics","power-consumption","sustainability","sustainable-software"],"dependencies":[{"ecosystem":"actions","filepath":"action.yml","sha":null,"kind":"manifest","created_at":"2023-03-03T16:15:26.292Z","updated_at":"2023-03-03T16:15:26.292Z","repository_link":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/blob/main/action.yml","dependencies":[{"id":7980774797,"package_name":"actions/cache","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/data-json-test.yml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:28:58.238Z","updated_at":"2023-09-21T19:28:58.238Z","repository_link":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/blob/main/.github/workflows/data-json-test.yml","dependencies":[{"id":13856698758,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":13856698759,"package_name":"./","ecosystem":"actions","requirements":"*","direct":true,"kind":"composite","optional":false},{"id":13856698760,"package_name":"actions/setup-node","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/test.yml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:28:59.583Z","updated_at":"2023-09-21T19:28:59.583Z","repository_link":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/blob/main/.github/workflows/test.yml","dependencies":[{"id":13856698764,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":13856698765,"package_name":"./","ecosystem":"actions","requirements":"*","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/update-tag.yml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:29:00.130Z","updated_at":"2023-09-21T19:29:00.130Z","repository_link":"https://github.com/green-coding-solutions/eco-ci-energy-estimation/blob/main/.github/workflows/update-tag.yml","dependencies":[{"id":13856698785,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]}],"score":null,"created_at":"2023-09-13T08:45:05.839Z","updated_at":"2026-04-13T07:01:47.070Z","avatar_url":"https://github.com/green-coding-solutions.png","language":"Shell","category":"Consumption","sub_category":"Computation and Communication","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# Eco CI\n\nEco CI is a project aimed at estimating energy consumption in continuous integration (CI) environments. It provides functionality to calculate the energy consumption of CI jobs based on the power consumption characteristics of the underlying hardware.\n\n\n## Table of Contents\n- [Requirements / Dependencies](#requirements--dependencies)\n- [How Does It Work?](#how-does-it-work)\n- [Usage](#usage)\n  - [GitHub](#github)\n    - [GitHub Action Mandatory and Optional Variables](#github-action-mandatory-and-optional-variables)\n    - [Grid Intensity API Token](#grid-intensity-api-token)\n    - [Continuing on Errors](#continuing-on-errors)\n    - [Consuming the Measurements as JSON](#consuming-the-measurements-as-json)\n    - [Note on Private Repos](#note-on-private-repos)\n    - [Support for Dedicated Runners / Non-Standard Machines](#support-for-dedicated-runners--non-standard-machines)\n  - [GitLab](#gitlab)\n    - [Artifacts for GitLab](#artifacts-for-gitlab)\n    - [GitLab Sample File](#gitlab-sample-file)\n  - [macOS](#macos)\n  - [Local CI / Running in Docker](#local-ci--running-in-docker)\n    - [Trying out with Docker and Circle-CI image](#trying-out-with-docker-and-circle-ci-image)\n    - [Trying out with Docker and KDE pipelines](#trying-out-with-docker-and-kde-pipelines)\n  - [Jenkins](#jenkins)\n  - [Restricted Enterprise Environments](#restricted-environments)\n- [Note on the integration / Auto-Updates](#note-on-the-integration-auto-updates)\n- [Limitations / Compatibility](#limitations--compatibility)\n\n## Requirements / Dependencies\nFollowing packages are expected:\n- `curl`\n- `jq`\n- `awk`\n- `date` with microsecond support. On *alpine* and *macOS* this means installing `coreutils`\n- `bash` \u003e 4.0\n- `git` only if you use GitLab\n\n## How does it work?\n- The Eco CI at its core makes its energy estimations based on pre-calculated power curves from [Cloud Energy](https://github.com/green-coding-solutions/cloud-energy)\n- When you initialize the Eco CI, starts a small bash script to track the cpu utilization over a period of time. This tracking begins when you call the start-measurement function. Then, each time you call get-measurement, it will take the cpu-utilization data collected (either from the start, or since the last get-measurement call) and make an energy estimation based on the detected hardware and CPU utilization.\n\n## Usage\n\nEco CI supports both GitHub and GitLab as CI platforms. When you integrate it into your pipeline, you must call the start-measurement script to begin collecting power consumption data, then call the get-measurement script each time you wish to make a spot measurement. When you call get-measurment, you can also assign a label to it to more easily identify the measurement. At the end, call the display-results to see all the measurement results, overall total usage, and export the data.\n\nFollow the instructions below to integrate Eco CI into your CI pipeline.\n\n### GitHub:\nTo use Eco CI in your GitHub workflow, call it with the relevant task name (start-measurement, get-measurement, or display-results). Here is a sample workflow that runs some python tests with eco-ci integrated.\n\n```yaml\nname: Daily Tests with Energy Measurement\nrun-name: Scheduled - DEV Branch\non:\n  schedule:\n    - cron: '0 0 * * *'\n\npermissions:\n  read-all\n\njobs:\n  run-tests:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Start Measurement\n        uses: green-coding-solutions/eco-ci-energy-estimation@v5 # use hash or @vX here (See note below)\n        with:\n          task: start-measurement\n        # continue-on-error: true # recommended setting for production. See notes below.\n\n\n      - name: 'Checkout repository'\n        uses: actions/checkout@v4\n        with:\n          ref: 'dev'\n          submodules: 'true'\n\n      - name: Checkout Repo Measurement\n        uses: green-coding-solutions/eco-ci-energy-estimation@v5 # use hash or @vX here (See note below)\n        with:\n          task: get-measurement\n          label: 'repo checkout'\n        # continue-on-error: true # recommended setting for production. See notes below.\n\n      - name: setup python\n        uses: actions/setup-python@v5\n        with:\n          python-version: '3.10'\n          cache: 'pip'\n\n      - name: pip install\n        shell: bash\n        run: |\n          pip install -r requirements.txt\n\n      - name: Setup Python Measurment\n        uses: green-coding-solutions/eco-ci-energy-estimation@v5 # use hash or @vX here (See note below)\n        with:\n          task: get-measurement\n          label: 'python setup'\n        # continue-on-error: true # recommended setting for production. See notes below.\n\n      - name: Run Tests\n        shell: bash\n        run: |\n          pytest\n\n      - name: Tests measurement\n        uses: green-coding-solutions/eco-ci-energy-estimation@v5 # use hash or @vX here (See note below)\n        with:\n          task: get-measurement\n          label: 'pytest'\n        # continue-on-error: true # recommended setting for production. See notes below.\n\n      - name: Show Energy Results\n        uses: green-coding-solutions/eco-ci-energy-estimation@v5 # use hash or @vX here (See note below)\n        with:\n          task: display-results\n        # continue-on-error: true # recommended setting for production. See notes below.\n\n```\n\n#### GitHub Action Mandatory and Optional Variables:\n\n- `task`: (required) (options are `start-measurement`, `get-measurement`, `display-results`)\n    + `start-measurement`: Initialize the action and starts the measurement. This must be called, and only *once* per job. If called again data will be reset.\n        - `job-id`: (optional) (default: 'GitHub / GitLab Job ID / Jenkins Build ID')\n        - `co2-calculation-method`: (optional) (default: 'constant')\n            - Can have the options `constant` or `location-based`\n            - If you use `constant` you must also set `co2-grid-intensity-constant`\n            - if you use `location-based` you must also set `co2-grid-intensity-api-token`\n        - `co2-grid-intensity-constant`: (optional) (default: 472)\n            - Constant value to be used to calculate the CO2 from the estimated energy.\n            - We use the worldwide average value from Ember compiled by The Green Web Foundation from https://github.com/thegreenwebfoundation/co2.js/blob/main/data/output/average-intensities.json#L1314 as default and update it annually.\n        - `co2-grid-intensity-api-token`: (optional)\n            - API token for the API of your choice regarding the grid intensity. See details below under [Grid Intensity API Token](#grid-intensity-api-token) which APIs are currently supported.\n            - Note that when using an API Eco CI also needs to resolve the location of the IP. Currently implemented via https://ipapi.co/\n        - `branch`: (optional) (default: ${{ github.ref_name }})\n          - Used to correctly identify this CI run for the Badge. Especially in PRs this will be very cryptic like `merge/72` and you might want to set this to something nicer\n        - `label`: (optional) (default: 'measurement ##')\n        - `send-data`: (optional) (default: true)\n          - Send metrics data to metrics.green-coding.io to create and display badge, and see an overview of the energy of your CI runs. Set to false to send no data. The data we send are: the energy value and duration of measurement; cpu model; repository name/branch/workflow_id/run_id; commit_hash; source (GitHub or GitLab). We use this data to display in our green-metrics-tool front-end here: https://metrics.green-coding.io/ci-index.html\n        - `gh-api-base`: (optional) (default: 'api.github.com')\n            - Eco CI uses the github api to post/edit PR comments and get the workflow id\n            - set to github's default api, but can be changed if you are using github enterprise\n        - `type`: (optional)\n            - If you want filter data in the GMT Dashboard or in CarbonDB you can here manually set a type for drill-down later. Defaults to \"machine.ci\". Cannot be empty.[CarbonDB](https://www.green-coding.io/projects/carbondb/)\n        - `project`: (optional)\n            - If you want filter data in the GMT Dashboard or in CarbonDB you can here manually set a type for drill-down later. Defaults to \"CI/CD\". Cannot be empty.[CarbonDB](https://www.green-coding.io/projects/carbondb/)\n        - `machine`: (optional)\n            - If you want filter data in the GMT Dashboard or in CarbonDB you can here manually set a type for drill-down later. Defaults to \"ubuntu-latest\". Cannot be empty.[CarbonDB](https://www.green-coding.io/projects/carbondb/)\n        - `tags`: (optional)\n            - If you want filter data in the GMT Dashboard or in CarbonDB you can here manually set tags for drill-down later. Please supply comma separated. Tags cannot have commas itself or contain quotes. Defaults to empty.[CarbonDB](https://www.green-coding.io/projects/carbondb/)\n        - `gmt-api-token`: (optional)\n            - If you are not using the default user for the GMT API supply your auth token. We recommend to have this as a GitHub Secret.\n        - `api-endpoint-add`: (optional)\n            - When using the GMT Dashboard and / or CarbonDB specify the endpoint URL to send to. Defaults to \"https://api.green-coding.io/v3/ci/measurement/add\"\n        - `api-endpoint-badge-get`: (optional)\n            - When using the GMT Dashboard and / or CarbonDB specify the endpoint URL to get the badge from to. Defaults to \"https://api.green-coding.io//v1/ci/badge/get\n- `get-measurement`: Measures the energy at this point in time since either the start-measurement or last get-measurement action call.\n    - `label`: (optional) (default: 'measurement ##')\n\n- `display-results`: Outputs the energy results to the`$GITHUB_STEP_SUMMARY`. Creates a table that shows the energy results of all the `get-measurements`, and then a final row for the entire run. Displays the average cpu utilization, the total Joules used, and average wattage for each measurement+total run. This badge will always be updated to display the total energy of the most recent run of the workflow that generated this badge. The total measurement of this task is provided as output `data-total-json` in json format (see example below).\n    - `pr-comment`: (optional) (default: false)\n        - if on, will post a comment on the PR issue with the Eco CI results. only occurs if the triggering event is a pull_request\n        - remember to set `pull-requests: write` to true in your workflow file\n    - `display-table`: (optional) (default: true)\n    - `display-badge`: (optional) (default: true)\n        - used with display-results\n        - Shows the badge for the ci run during display-results step\n        - automatically false if `send-data is also false\n    - `json-output`: (optional) (default: false)\n        - will output data to JSON to `/tmp/eco-ci/lap-data.json`\n\n#### Grid Intensity API Token\nUsed to get the grid intensity for a given location.\nWe currently only support ElectricityMaps. WattTime and Entso-e are on the way! (Speed it up with a PR! ❤️)\n\n##### ElectricityMaps\nIt is free for personal use but sadly it is locked to a single zone. This means that if you get it for the Zone Germany the API will fail when requesting values for the US.\n\nThis is very problematic on GitHub Actions as the Us is comprised out of different zones and the machines come up in different zones. Either you buy a multi-zone key or you will have a lot of missing values.\n\nGet your key here: [https://api-portal.electricitymaps.com/](https://api-portal.electricitymaps.com/)\n\nAfter having obtained the token you must set it as secret and pass it in the initalization of the action (see documentation above). \nTo learn how to create a secret see the GitHub documentation: https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions\n\n##### WattTime\nTODO - (Speed it up with a PR! ❤️)\n\n##### Entso-e\nTODO - (Speed it up with a PR! ❤️)\n\n#### Continuing on Errors\n\nOnce you have initially set up Eco CI and have given it a test spin we recommend running our action\nwith `continue-on-error:true`, as energy and CO2 metrics is not critical to the success of your workflow, but rather a nice feature to have.\n\n```yaml\n      - name: Eco CI Energy Estimation\n        uses: green-coding-solutions/eco-ci-energy-estimation@v5\n        with:\n          task: final-measurement\n        continue-on-error: true\n```\n\n#### Consuming the Measurements as JSON\n\nFor both tasks `get-measurement` and `display-results` the lap measurements and total measurement can be consumed in JSON format.\nYou can use the outputs `data-lap-json` or `data-total-json` respectively.\n\nYou must set `json-output` to true in GitHub or `export ECO_CI_JSON_OUTPUT=\"true\"` for it to be active.\n\nHere is an example demonstrating how this can be achieved:\n\n```yaml\n      # ...\n      - name: 'Checkout repository'\n        uses: actions/checkout@v4\n        with:\n          ref: 'dev'\n          submodules: 'true'\n\n      - name: Checkout Repo Measurment\n        uses: green-coding-solutions/eco-ci-energy-estimation@v5\n        id: checkout-step\n        with:\n          task: get-measurement\n          label: 'repo checkout'\n\n      - name: Print checkout data\n        run: |\n          echo \"total json: ${{ steps.checkout-step.outputs.data-lap-json }}\"\n\n      - name: Show Energy Results\n        uses: green-coding-solutions/eco-ci-energy-estimation@v5\n        id: total-measurement-step\n        with:\n          task: display-results\n\n      - name: Print total data\n        run: |\n          echo \"total json: ${{ steps.total-measurement-step.outputs.data-total-json }}\"\n```\n\nNote that the steps you want to consume the measurements of need to have an `id` so that you can access the corresponding data from their outputs.\n\n#### Note on private repos\n If you are running in a private repo, you must give your job actions `read` permissions for the GITHUB_TOKEN. This  is because we make an api call to get your workflow_id which uses your `$GITHUB_TOKEN`, and it needs the correct permissions to do so:\n ```yaml\njobs:\n  test:\n    runs-on: ubuntu-latest\n    permissions:\n      actions: read\n    steps:\n      - name: Eco CI - Start Measurement\n        uses: green-coding-solutions/eco-ci-energy-estimation@v5\n        with:\n          task: start-measurement\n ```\n\n#### Support for dedicated runners / non-standard machines\n\nThis plugin is primarily designed for the [GitHub Shared Runners](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources) and comes with their energy values already pre-calculated.\n\nAll the values for supported machines are found in the [machine-power-data](https://github.com/green-coding-solutions/eco-ci-energy-estimation/tree/main/machine-power-data) folder.\n\nThe heavy work to get this values is done by [Cloud Energy](https://github.com/green-coding-solutions/cloud-energy) (See below for details).\n\nIf you want to support a custom machine you need to create one of these files and load it into Eco CI.\n\nHere is an exemplary command to create the power data for the basic **4 CPU** GitHub Shared Runner (at the time of writing 13. June 2024).\n\n`python3 xgb.py --tdp 280 --cpu-threads 128 --cpu-cores=64 --cpu-make \"amd\" --release-year=2021 --ram 512 --cpu-freq=2450 --cpu-chips=1 --vhost-ratio=0.03125 --dump-hashmap \u003e github_EPYC_7763_4_CPU_shared.sh`\n\nThe following would be the command for [Gitlab Shared Runners](https://docs.gitlab.com/ee/ci/runners/hosted_runners/linux.html) (at the time of writing 13. June 2024)\n\n`python3 xgb.py --tdp 240 --cpu-threads 128 --cpu-cores=64 --cpu-make \"amd\" --release-year=2021 --ram 512 --cpu-freq=2250 --cpu-chips=1 --vhost-ratio=0.015625 --dump-hashmap \u003e gitlab_EPYC_7B12_saas-linux-small-amd64.txt`\n\nGitlab uses an AMD EPYC 7B12 according to [our findings](https://www.green-coding.io/case-studies/cpu-utilization-usefulness/)\n\n\nYou can see how the machine specs must be supplied to [Cloud Energy](https://github.com/green-coding-solutions/cloud-energy) and also, since the runners are shared, you need to supply the splitting ratio that is used.\n\nSince GitHub for instance uses an `AMD EPYC 7763`, which only comes with 64 cores and 128 threads, and gives you **4 CPUs** the assumption is \nthat the splitting factor is `4/128 = 0.03125`. \n\nFor macOS we used for the `macos-14` M1 shared runners:\n`python3 xgb.py --tdp 10 --cpu-threads=8 --cpu-cores=8 --release-year=2020 --ram 16 --cpu-freq=3200 --cpu-chips=1 --vhost-ratio=0.3 --dump-hashmap \u003e macos-14-mac-mini-m1.sh`\n[Source for full Mac Mini power consumption](https://www.anandtech.com/show/16252/mac-mini-apple-m1-tested)\n[Source for Cores and RAM of total machine (assuming only efficiency cores used for hypervisor and performance for runners)](https://github.blog/news-insights/product-news/introducing-the-new-apple-silicon-powered-m1-macos-larger-runner-for-github-actions/) (We slightly tuned vhost-ratio to 0.3 instead of 0.4 to adapt to the measured power source from Source #1)\n\nIf you have trouble finding out the splitting factor for your system: [Open an issue!](https://github.com/green-coding-solutions/eco-ci-energy-estimation/issues) We are happy to help!!\n\nOnce you have the file ready we are happy to merge it in through a PR! In future versions we also plan to include a loading mechanism, where you can just\ningest a file from your repository without having to upstream it with us. But since this is a community open source plugin upstream is preferred, right :)\n\n##### user contributed example machines\nCommunity contributions to the `machine-power-data` directory help extend support for custom hardware setups. Below is an example of a contributed machine configuration:\n- `intel-xeon-6246_vhr_04167.sh`\n\n    \u003e For additional context and clarification around the process of creating this file, please refer to the discussion in the associated [PR #123](https://github.com/green-coding-solutions/eco-ci-energy-estimation/pull/123).\n\n  This power data file corresponds to a virtual machine running on two Intel(R) Xeon(R) Gold 6246 CPU @ 3.30GHz processors. The virtual machine is allocated 2 out of the available 48 threads. Based on this, a virtual host ratio (`--vhost-ratio`) of $0.04167$ is used.\n\n  All parameters used to generate this file with Cloud Energy are documented within the data file itself. However, for reproducibility, the exact command used is included below:\n\n  `python xgb.py --cpu-chips 2 --cpu-freq 3300 --cpu-threads 48 --cpu-cores 24 --release-year 2019 --tdp 165 --ram 384 --architecture cascadelake --cpu-make intel --vhost-ratio 0.04167 --dump-hashmap \u003e intel-xeon-6246_vhr_04167.sh`\n\n\n\n### GitLab\nTo use Eco CI in your GitLab pipeline, you must first include a reference to the eco-ci-gitlab.yml file as such:\n```\ninclude:\n  remote: 'https://raw.githubusercontent.com/green-coding-solutions/eco-ci-energy-estimation/main/eco-ci-gitlab.yml'\n```\n\nand you call the various scripts in your pipeline with call like this:\n```\n- !reference [.\u003cfunction-name\u003e, script]\n```\nwhere function name is one of the following:\n`start_measurement` - begin the measurment\n`get_measurement` - make a spot measurment here. If you wish to label the measurement, you need to set the ECO_CI_LABEL environment variable right before this call.\n`display_results` - will print all the measurement values to the jobs-output and prepare the artifacts, which must be exported in the normal GitLab way.\n\nBy default, we send data to our API, which will allow us to present you with a badge, and a front-end display to review your results. The data we send are: the energy value and duration of measurement; cpu model; repository name/branch/workflow_id/run_id; commit_hash; source (GitHub or GitLab). We use this data to display in our green-metrics-tool front-end here: https://metrics.green-coding.io/ci-index.html\n\nIf you do not wish to send us data, you can set this global variable in your pipeline:\n\n```\nvariables:\n  ECO_CI_SEND_DATA: \"false\"\n```\n\n\n#### Artifacts for GitLab\nFor each job you can export the artifacts. We currently export the pipeline data as a regular artifact, as well as make use of GitLab's [Metric Report](https://docs.gitlab.com/ee/ci/testing/metrics_reports.html) artifact (which we output to the default metrics.txt):\n\n```\nartifacts:\n    paths:\n      - eco-ci-output.txt\n    reports:\n      metrics: metrics.txt\n```\n\nBy default, metrics.txt is copied into [`$CI_PROJECT_DIR`](https://docs.gitlab.com/ci/variables/predefined_variables/#predefined-variables). If necessary, the target location of all artifacts can be adjusted in [`eco-ci-gitlab.yml`](https://github.com/green-coding-solutions/eco-ci-energy-estimation/blob/main/eco-ci-gitlab.yml) using appropriate copy commands.\n\n#### Gitlab sample file\n\nPlease look at [.gitlab-ci.yml.example](.gitlab-ci.yml.example)\n\n\n### macOS\n\n*macOS* requires the *GNU* `date` tool so it can properly create a microsecond timestamp.\n\nInstall it with the package manager of your choice and then add its binary first in the `PATH` variable, so that it precedes the *BSD* `date`.\n\nExample for using in local CI with `homebrew`:\n```bash\nbrew install coreutils\nexport PATH=\"/opt/homebrew/opt/coreutils/libexec/gnubin:/usr/local/opt/coreutils/libexec/gnubin:$PATH\"\n# then you can run:\nbash scripts/examples/local_ci.example.sh\n```\n\nExample for using in *GitHub Actions* with `homebrew`:\n```yml\n      - name: Install dependencies (macos only)\n        run: |\n          brew install coreutils\n          echo \"/opt/homebrew/opt/coreutils/libexec/gnubin:/usr/local/opt/coreutils/libexec/gnubin:$PATH\" \u003e\u003e $GITHUB_PATH\n```\n\n### Local CI / Running in docker\n\nAlthough initially designed for use in *GitHub Actions* and *GitLab Pipelines* the Eco CI tool works everywhere where `bash` works.\n\nThis means you can just use it locally by following it's general 3-step interface:\n- Start\n- Measure (optionally repeat if you want to lap multiple steps)\n- End \u0026 Display\n\nAs an example we have set up a full example pipeline in the form of a `bash` file under `local_ci.example.sh`.\n\nIn this file you find the needed calls along with some fake activity like calls to `sleep` and `ls` etc.\n\nYou just need to slice the file to you needs and bring the code that you want to encapsulate with Eco CI into the positions where currently the `sleep` and `ls` calls are.\n\n\n\n#### Trying out with Docker and Circle-CI image\n\nFor local testing you can just run in the docker container of your choice, directly from the root of the repository.\n\nHere is an example with the Circle-CI base image:\n```bash\ndocker run --network host --rm -it -v ./:/tmp/data:ro cimg/base:current bash /tmp/data/local_ci.example.sh\n```\n\nIn case you are testing with a local installation of the GMT append `--network host` to access `api.green-coding.internal`\n\n\n#### Trying out with Docker and KDE pipelines\n```bash\ndocker run --rm -it -v ./:/tmp/data:ro invent-registry.kde.org/sysadmin/ci-images/suse-qt67:latest bash /tmp/data/local_ci.example.sh\n```\n\n### Jenkins\n\nFor *Jenkins* Eco CI can be easily used in combination with the *Execute Shell* plugin.\n\nBy following Eco CI's general 3-step you need to create 3 steps in your workflow that:\n- Start\n- Measure (optionally repeat if you want to lap multiple steps)\n- End \u0026 Display\n\nYou need to have the `eco-ci-energy-estimation` repository checked out somewhere, where *Jenkins* can read it.\n\n#### Example codeblocks\n\nReplace `__PATH_WHERE_YOU_HAVE_THE_REPO__` with the actual repo location.\n\n**Start**:\n```bash\nbash __PATH_WHERE_YOU_HAVE_THE_REPO__/scripts/examples/jenkins_start.sh\n```\n\n**Measure Step**:\nYou should set a custom text label for the step, here defined with the variable `LABEL`\n\n```bash\nLABEL=\"This is the step label\"\nbash __PATH_WHERE_YOU_HAVE_THE_REPO__/scripts/examples/jenkins_measure.sh \"${LABEL}\"\n```\n\n\n**End and display data**:\nYou should set a custom text label for the step, here defined with the variable `LABEL`\n\n```bash\nLABEL=\"This is the step label\"\nbash __PATH_WHERE_YOU_HAVE_THE_REPO__/scripts/examples/jenkins_end_and_display.sh \"${LABEL}\"\n```\n\nSee a full example of a freestyle pipeline with the codeblocks here: ![Screenshot Jenkins Freestyle pipeline](/screenshots/jenkins_eco_ci_integration_freestyle_pipeline.png)\n\nThe data will then show up in the text log. See an example how this looks here: ![Screenshot Jenkins Eco CI Output](/screenshots/jenkins_eco_ci_output.png)\n\n#### Jenkins on macOS\n\nIf you use *Jenkins* on *macOS* you must have `coretuils` installed and `gdate` must replace the normal `date` function.\n\nAppend this to every step where you call Eco CI precede the linux `date` tool before the *macOS* native one:\n```bash\nset +x # if macOS to reduce noise\nexport PATH=\"/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH\" # if macOS\n```\n\n## Note on the integration / Auto-Updates\n- If you want the extension to automatically update within a version number, use the convenient @vX form. \n  + `uses: green-coding-solutions/eco-ci-energy-estimation@v5 # will pick the latest minor v4.x`\n  + In case of a major change from @v4 to @v5 you need to upgrade manually. The upside is: If you use dependabot it will create a PR for you as it understands the notation\n    \n- If you want to pin the dependency and want to audit every release we recommend using the hash notation\n  + `uses: green-coding-solutions/eco-ci-energy-estimation@06837b0b3b393a04d055979e1305852bda82f044 #resolves to v2.2`\n  + Note that this hash is just an example. You find the latest current hash under [Tags](https://github.com/green-coding-solutions/eco-ci-energy-estimation/tags)\n  + Dependabot also understands this notation so it will create an update with the changelog for you\n- If you want the bleeding edge features use the @main notation.\n  + `uses: green-coding-solutions/eco-ci-energy-estimation@main`\n  + We do **not** recommend this as it might contain beta features. We recommend using the releases and tagged versions only\n\n\n## Restricted Environments\nIf you are running in restricted environments, such as an enterprise with a heavily constrained network, you can tell Eco CI to not make any outbound requests.\n\nSet:\n- `send-data` to `false`\n    - Otherwise data will be sent to the API endpoint configured in `api-endpoint-add`\n- `co2-calculation-method` to `constant`\n    - Otherwise the IP will be resolved to a location\n\n## Limitations / Compatibility\n- At the moment this will only work with linux based pipelines, mainly tested on ubuntu images.\n  + The plugin is tested on:\n  + GitHub\n      + `ubuntu-latest` (GitHub - 22.04 at the time of writing)\n      + `ubuntu-24.04` (GitHub)\n      + `ubuntu-20.04` (GitHub)\n      + [Autoscaling Github Runners](https://docs.github.com/en/actions/using-github-hosted-runners/about-larger-runners/managing-larger-runners#configuring-autoscaling-for-larger-runners) are not supported\n      + The plugin technically supports large runners, but they will need extra pre-calculated power curved. Contact us if you need them and we are happy to bring them in!\n  + GitLab\n      + `saas-linux-small-amd64` (GitLab)\n  + Generic\n      + `alpine` (Install dependencies before - See above)\n  + *macOS* is working on our local test machines (see install details below). \n      + Runners on GitHub are untested, but should work. You need to create a power profile though (see Cloud Energy below). We are happy for beta testers! contact us :)\n  + Windows is currently only supported with WSL2\n\n- If you use Alpine, you must install coreutils so that time logging with date is possible with an accuracy of microseconds (`apk add coreutils`)\n\n- If you have your pipelines split over multiple VM's (often the case with many jobs) ,you have to treat each VM as a seperate machine for the purposes of measuring and setting up Eco CI.\n\n- The underlying [Cloud Energy](https://github.com/green-coding-solutions/cloud-energy) model requires the CPU to have a fixed frequency setting. This is typical for cloud testing and is the case for instance on GitHub, but not always the case in different CIs.\n\nSee also our [work on analysing fixed frequency in Cloud Providers and CI/CD](https://www.green-coding.io/case-studies/cpu-utilization-usefulness/)\n\n- The Cloud Energy model data is trained via the [SPECpower](https://www.spec.org/power_ssj2008/results/) database, which was mostly collected on compute machines. Results will be off for non big cloud servers and also for machines that are memory heavy or machines which rely more heavily on their GPU's for computations.\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["carbon-emissions","carbon-measurement","co2-footprint","co2-measurement","energy-consumption-analysis","power-consumption-measurement","carbon-footprint-calculator","carbon-footprint-estimation","climate-change-mitigation","green-energy"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/46001","html_url":"https://ost.ecosyste.ms/projects/46001"}