InfoGrab Docs

Eco CI

요약

Eco CI는 GitLab CI/CD 파이프라인과 통합되는 서드파티 도구입니다. Eco CI는 CI/CD 파이프라인의 에너지 소비와 탄소 배출을 측정하는 오픈소스 도구입니다. 파이프라인 job의 명령어 앞뒤에 측정 스크립트를 배치합니다.

Note

Eco CI는 GitLab CI/CD 파이프라인과 통합되는 서드파티 도구입니다. GitLab은 이 도구를 유지 관리하거나 지원을 제공하지 않으며, 이 도구가 규제 또는 컴플라이언스 요구사항을 충족한다는 것을 보장하지 않습니다.

Eco CI는 CI/CD 파이프라인의 에너지 소비와 탄소 배출을 측정하는 오픈소스 도구입니다. 파이프라인 job 내에서 경량 bash 스크립트로 실행되며, 별도의 서버나 데이터베이스가 필요하지 않습니다.

파이프라인 job의 명령어 앞뒤에 측정 스크립트를 배치합니다. 이 도구는 명령어 실행 중 CPU 사용률을 모니터링하고, SPECpower 데이터베이스에서 미리 계산된 전력 곡선을 사용하여 에너지 소비를 계산합니다. 모든 측정 결과를 텍스트 파일로 저장하며, job 아티팩트로 저장하여 다운로드하고 볼 수 있습니다. 역사적 분석을 위해 외부 대시보드로 결과를 전송할 수도 있습니다.

파이프라인에 Eco CI 추가#

job 실행 중 에너지 소비와 탄소 배출을 측정하기 위해 파이프라인에 Eco CI를 추가합니다.

Eco CI는 ECO_CI_LABEL 변수를 사용하여 측정값을 식별하고 그룹화하므로, 프로젝트 또는 파이프라인 Stage를 나타내는 설명적인 이름을 선택하세요. 기본적으로 측정 데이터는 분석을 위해 Green Coding Solutions 대시보드로 전송되지만, ECO_CI_SEND_DATAfalse로 설정하여 로컬에만 결과를 저장할 수 있습니다.

사전 요구사항:

  • bash 지원이 있는 러너에서 실행되는 파이프라인 job.
  • curl, jq, awk, bash, git, coreutils 유틸리티가 있는 러너 환경.

파이프라인에 Eco CI를 추가하려면:

  1. .gitlab-ci.yml 파일에 Eco CI 템플릿을 포함하고 프로젝트 식별자를 구성합니다:

    variables:
      ECO_CI_LABEL: "my-project-pipeline"
      ECO_CI_SEND_DATA: "false"
    
    include:
      - remote: 'https://raw.githubusercontent.com/green-coding-solutions/eco-ci-energy-estimation/main/eco-ci-gitlab.yml'
    
  2. job에 측정 스크립트를 추가합니다:

    build-job:
      image: node:alpine
      before_script:
        - apk add --no-cache curl jq gawk bash git coreutils
      script:
        - !reference [.start_measurement, script]
        - npm install
        - npm run build
        - npm test
        - !reference [.get_measurement, script]
        - !reference [.display_results, script]
      artifacts:
        paths:
          - eco-ci-output.txt
          - metrics.txt
        expire_in: 1 week
    
  3. 선택 사항. 명령어를 별도로 측정하려면 각 명령어에 측정 스크립트를 사용합니다:

    build-job:
      image: node:alpine
      before_script:
        - apk add --no-cache curl jq gawk bash git coreutils
      script:
        - !reference [.start_measurement, script]
        - npm install
        - !reference [.get_measurement, script]
        - !reference [.display_results, script]
    
        - !reference [.start_measurement, script]
        - npm run build
        - !reference [.get_measurement, script]
        - !reference [.display_results, script]
    
        - !reference [.start_measurement, script]
        - npm test
        - !reference [.get_measurement, script]
        - !reference [.display_results, script]
      artifacts:
        paths:
          - eco-ci-output.txt
          - metrics.txt
        expire_in: 1 week
    

측정 결과 보기#

Eco CI는 GitLab 인터페이스를 통해 접근할 수 있는 job 아티팩트에 측정 결과를 저장합니다. 측정 결과에는 다음이 포함됩니다:

  • 에너지 소비: 줄(joule) 및 와트(watt)로 표시
  • 탄소 배출: CO₂ 환산 그램(gCO₂eq)으로 추정된 배출량
  • 지속 시간: 측정 기간의 길이(초)
  • CPU 사용률: 측정 중 평균 CPU 사용량
  • 소프트웨어 탄소 강도(SCI): 파이프라인 실행당 탄소 배출량

측정 결과를 보려면:

  1. 파이프라인으로 이동합니다.
  2. Eco CI 측정이 포함된 job을 선택합니다.
  3. job 세부 정보에서 Job artifacts 아래의 Browse를 선택합니다.
  4. eco-ci-output.txt 파일을 엽니다.

출력 예시:

"build-job: Label: my-project-pipeline: Energy Used [Joules]:" 5.82
"build-job: Label: my-project-pipeline: Avg. CPU Utilization:" 22.69
"build-job: Label: my-project-pipeline: Avg. Power [Watts]:" 1.91
"build-job: Label: my-project-pipeline: Duration [seconds]:" 3.04
----------------
"build-job: Energy [Joules]:" 5.82
"build-job: Avg. CPU Utilization:" 22.69
"build-job: Avg. Power [Watts]:" 1.91
"build-job: Duration [seconds]:" 3.04
----------------
🌳 CO2 Data:
CO₂ from energy is: 0.001944 g
CO₂ from manufacturing (embodied carbon) is: 0.000442 g
Carbon Intensity for this location: 334 gCO₂eq/kWh
SCI: 0.002386 gCO₂eq / pipeline run emitted

대시보드 통합#

ECO_CI_SEND_DATAtrue로 설정하면 측정 데이터가 자동으로 Eco CI 메트릭 대시보드로 전송됩니다. 대시보드는 과거 기록, 트렌드 분석 및 파이프라인 실행 간 비교를 제공합니다. 기본적으로 대시보드는 공개되어 있으며 누구든지 볼 수 있습니다.

시간에 따른 에너지 소비 트렌드, 탄소 배출 패턴을 확인하고, 다양한 브랜치, 커밋 또는 시간 기간에 걸친 측정값을 비교할 수 있습니다. 프로젝트의 ECO_CI_LABEL 식별자로 대시보드에 접근합니다.

프로젝트에 배지 추가#

프로젝트의 README.md 파일에 Eco CI 배지를 표시하여 에너지 소비 메트릭을 보여줄 수 있습니다.

사전 요구사항:

  • ECO_CI_SEND_DATAtrue로 설정되어 있어야 합니다.
  • Eco CI가 활성화된 상태에서 최소 하나의 파이프라인이 성공적으로 실행되었어야 합니다.

README.md 파일에 배지를 추가하려면:

  1. 다음 내용을 복사하여 README.md 파일에 붙여넣습니다:

    [![Eco CI](https://api.green-coding.io/v1/ci/badge/get?repo=<namespace>/<project>&branch=<branch>&workflow=<project-id>)](https://metrics.green-coding.io/ci.html?repo=<namespace>/<project>&branch=<branch>&workflow=<project-id>)
    
  2. 플레이스홀더를 바꿉니다:

    • <namespace>/<project>를 GitLab 프로젝트 경로로 변경합니다 (예: mygroup/myproject)
    • <branch>를 브랜치 이름으로 변경합니다 (예: main)
    • <project-id>를 GitLab 프로젝트 ID로 변경합니다 (예: 52215136)

예시:

[![Eco CI](https://api.green-coding.io/v1/ci/badge/get?repo=lyspin/eco-ci-demo&branch=main&workflow=52215136)](https://metrics.green-coding.io/ci.html?repo=lyspin/eco-ci-demo&branch=main&workflow=52215136)

문제 해결#

Eco CI를 사용할 때 다음과 같은 문제가 발생할 수 있습니다.

오류: Date has returned a timestamp that is not accurate to microseconds#

다음과 같은 오류 메시지가 발생할 수 있습니다:

ERROR: Date has returned a timestamp that is not accurate to microseconds! You may need to install `coreutils`.

이 문제는 Alpine Linux 또는 기본적으로 GNU coreutils가 포함되지 않은 다른 최소 배포판을 사용할 때 발생합니다.

이 문제를 해결하려면 coreutils를 설치하세요. 예를 들어 Alpine의 경우:

before_script:
  - apk add --no-cache coreutils

아티팩트에 측정 데이터가 나타나지 않음#

job 아티팩트에서 eco-ci-output.txt 파일이 보이지 않습니다.

이 문제는 아티팩트 구성이 누락되어 발생할 수 있으므로, job에 올바른 artifacts 구성이 포함되어 있는지 확인하세요:

artifacts:
  paths:
    - eco-ci-output.txt
    - metrics.txt

측정값이 에너지 소비량 0을 표시#

eco-ci-output.txt 파일에 Energy [Joules]: 0.00과 같은 값이 표시됩니다.

이 문제는 측정 스크립트가 잘못 배치되었을 때 발생합니다.

이 문제를 해결하려면 측정 스크립트가 CPU 집약적인 명령어를 둘러싸고 있는지 확인하세요:

script:
  - !reference [.start_measurement, script]
  - npm install  # CPU-intensive command
  - npm run build  # CPU-intensive command
  - !reference [.get_measurement, script]
  - !reference [.display_results, script]

Eco CI

Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

Eco CI는 GitLab CI/CD 파이프라인과 통합되는 서드파티 도구입니다. Eco CI는 CI/CD 파이프라인의 에너지 소비와 탄소 배출을 측정하는 오픈소스 도구입니다. 파이프라인 job의 명령어 앞뒤에 측정 스크립트를 배치합니다.

Note

Eco CI는 GitLab CI/CD 파이프라인과 통합되는 서드파티 도구입니다. GitLab은 이 도구를 유지 관리하거나 지원을 제공하지 않으며, 이 도구가 규제 또는 컴플라이언스 요구사항을 충족한다는 것을 보장하지 않습니다.

Eco CI는 CI/CD 파이프라인의 에너지 소비와 탄소 배출을 측정하는 오픈소스 도구입니다. 파이프라인 job 내에서 경량 bash 스크립트로 실행되며, 별도의 서버나 데이터베이스가 필요하지 않습니다.

파이프라인 job의 명령어 앞뒤에 측정 스크립트를 배치합니다. 이 도구는 명령어 실행 중 CPU 사용률을 모니터링하고, SPECpower 데이터베이스에서 미리 계산된 전력 곡선을 사용하여 에너지 소비를 계산합니다. 모든 측정 결과를 텍스트 파일로 저장하며, job 아티팩트로 저장하여 다운로드하고 볼 수 있습니다. 역사적 분석을 위해 외부 대시보드로 결과를 전송할 수도 있습니다.

파이프라인에 Eco CI 추가#

job 실행 중 에너지 소비와 탄소 배출을 측정하기 위해 파이프라인에 Eco CI를 추가합니다.

Eco CI는 ECO_CI_LABEL 변수를 사용하여 측정값을 식별하고 그룹화하므로, 프로젝트 또는 파이프라인 Stage를 나타내는 설명적인 이름을 선택하세요. 기본적으로 측정 데이터는 분석을 위해 Green Coding Solutions 대시보드로 전송되지만, ECO_CI_SEND_DATAfalse로 설정하여 로컬에만 결과를 저장할 수 있습니다.

사전 요구사항:

  • bash 지원이 있는 러너에서 실행되는 파이프라인 job.
  • curl, jq, awk, bash, git, coreutils 유틸리티가 있는 러너 환경.

파이프라인에 Eco CI를 추가하려면:

  1. .gitlab-ci.yml 파일에 Eco CI 템플릿을 포함하고 프로젝트 식별자를 구성합니다:

    variables:
      ECO_CI_LABEL: "my-project-pipeline"
      ECO_CI_SEND_DATA: "false"
    
    include:
      - remote: 'https://raw.githubusercontent.com/green-coding-solutions/eco-ci-energy-estimation/main/eco-ci-gitlab.yml'
    
  2. job에 측정 스크립트를 추가합니다:

    build-job:
      image: node:alpine
      before_script:
        - apk add --no-cache curl jq gawk bash git coreutils
      script:
        - !reference [.start_measurement, script]
        - npm install
        - npm run build
        - npm test
        - !reference [.get_measurement, script]
        - !reference [.display_results, script]
      artifacts:
        paths:
          - eco-ci-output.txt
          - metrics.txt
        expire_in: 1 week
    
  3. 선택 사항. 명령어를 별도로 측정하려면 각 명령어에 측정 스크립트를 사용합니다:

    build-job:
      image: node:alpine
      before_script:
        - apk add --no-cache curl jq gawk bash git coreutils
      script:
        - !reference [.start_measurement, script]
        - npm install
        - !reference [.get_measurement, script]
        - !reference [.display_results, script]
    
        - !reference [.start_measurement, script]
        - npm run build
        - !reference [.get_measurement, script]
        - !reference [.display_results, script]
    
        - !reference [.start_measurement, script]
        - npm test
        - !reference [.get_measurement, script]
        - !reference [.display_results, script]
      artifacts:
        paths:
          - eco-ci-output.txt
          - metrics.txt
        expire_in: 1 week
    

측정 결과 보기#

Eco CI는 GitLab 인터페이스를 통해 접근할 수 있는 job 아티팩트에 측정 결과를 저장합니다. 측정 결과에는 다음이 포함됩니다:

  • 에너지 소비: 줄(joule) 및 와트(watt)로 표시
  • 탄소 배출: CO₂ 환산 그램(gCO₂eq)으로 추정된 배출량
  • 지속 시간: 측정 기간의 길이(초)
  • CPU 사용률: 측정 중 평균 CPU 사용량
  • 소프트웨어 탄소 강도(SCI): 파이프라인 실행당 탄소 배출량

측정 결과를 보려면:

  1. 파이프라인으로 이동합니다.
  2. Eco CI 측정이 포함된 job을 선택합니다.
  3. job 세부 정보에서 Job artifacts 아래의 Browse를 선택합니다.
  4. eco-ci-output.txt 파일을 엽니다.

출력 예시:

"build-job: Label: my-project-pipeline: Energy Used [Joules]:" 5.82
"build-job: Label: my-project-pipeline: Avg. CPU Utilization:" 22.69
"build-job: Label: my-project-pipeline: Avg. Power [Watts]:" 1.91
"build-job: Label: my-project-pipeline: Duration [seconds]:" 3.04
----------------
"build-job: Energy [Joules]:" 5.82
"build-job: Avg. CPU Utilization:" 22.69
"build-job: Avg. Power [Watts]:" 1.91
"build-job: Duration [seconds]:" 3.04
----------------
🌳 CO2 Data:
CO₂ from energy is: 0.001944 g
CO₂ from manufacturing (embodied carbon) is: 0.000442 g
Carbon Intensity for this location: 334 gCO₂eq/kWh
SCI: 0.002386 gCO₂eq / pipeline run emitted

대시보드 통합#

ECO_CI_SEND_DATAtrue로 설정하면 측정 데이터가 자동으로 Eco CI 메트릭 대시보드로 전송됩니다. 대시보드는 과거 기록, 트렌드 분석 및 파이프라인 실행 간 비교를 제공합니다. 기본적으로 대시보드는 공개되어 있으며 누구든지 볼 수 있습니다.

시간에 따른 에너지 소비 트렌드, 탄소 배출 패턴을 확인하고, 다양한 브랜치, 커밋 또는 시간 기간에 걸친 측정값을 비교할 수 있습니다. 프로젝트의 ECO_CI_LABEL 식별자로 대시보드에 접근합니다.

프로젝트에 배지 추가#

프로젝트의 README.md 파일에 Eco CI 배지를 표시하여 에너지 소비 메트릭을 보여줄 수 있습니다.

사전 요구사항:

  • ECO_CI_SEND_DATAtrue로 설정되어 있어야 합니다.
  • Eco CI가 활성화된 상태에서 최소 하나의 파이프라인이 성공적으로 실행되었어야 합니다.

README.md 파일에 배지를 추가하려면:

  1. 다음 내용을 복사하여 README.md 파일에 붙여넣습니다:

    [![Eco CI](https://api.green-coding.io/v1/ci/badge/get?repo=<namespace>/<project>&branch=<branch>&workflow=<project-id>)](https://metrics.green-coding.io/ci.html?repo=<namespace>/<project>&branch=<branch>&workflow=<project-id>)
    
  2. 플레이스홀더를 바꿉니다:

    • <namespace>/<project>를 GitLab 프로젝트 경로로 변경합니다 (예: mygroup/myproject)
    • <branch>를 브랜치 이름으로 변경합니다 (예: main)
    • <project-id>를 GitLab 프로젝트 ID로 변경합니다 (예: 52215136)

예시:

[![Eco CI](https://api.green-coding.io/v1/ci/badge/get?repo=lyspin/eco-ci-demo&branch=main&workflow=52215136)](https://metrics.green-coding.io/ci.html?repo=lyspin/eco-ci-demo&branch=main&workflow=52215136)

문제 해결#

Eco CI를 사용할 때 다음과 같은 문제가 발생할 수 있습니다.

오류: Date has returned a timestamp that is not accurate to microseconds#

다음과 같은 오류 메시지가 발생할 수 있습니다:

ERROR: Date has returned a timestamp that is not accurate to microseconds! You may need to install `coreutils`.

이 문제는 Alpine Linux 또는 기본적으로 GNU coreutils가 포함되지 않은 다른 최소 배포판을 사용할 때 발생합니다.

이 문제를 해결하려면 coreutils를 설치하세요. 예를 들어 Alpine의 경우:

before_script:
  - apk add --no-cache coreutils

아티팩트에 측정 데이터가 나타나지 않음#

job 아티팩트에서 eco-ci-output.txt 파일이 보이지 않습니다.

이 문제는 아티팩트 구성이 누락되어 발생할 수 있으므로, job에 올바른 artifacts 구성이 포함되어 있는지 확인하세요:

artifacts:
  paths:
    - eco-ci-output.txt
    - metrics.txt

측정값이 에너지 소비량 0을 표시#

eco-ci-output.txt 파일에 Energy [Joules]: 0.00과 같은 값이 표시됩니다.

이 문제는 측정 스크립트가 잘못 배치되었을 때 발생합니다.

이 문제를 해결하려면 측정 스크립트가 CPU 집약적인 명령어를 둘러싸고 있는지 확인하세요:

script:
  - !reference [.start_measurement, script]
  - npm install  # CPU-intensive command
  - npm run build  # CPU-intensive command
  - !reference [.get_measurement, script]
  - !reference [.display_results, script]