2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

젠킨스(Jenkins) 파이프라인에서 사용할 변수의 범위는 어떻게 되나요?

_____
Q: 젠킨스 파이프라인에서 변수를 선언할 때 변수의 범위(scope)는 어떻게 되나요?

A: 젠킨스 파이프라인에서 변수의 범위는 선언 위치와 사용 방식에 따라 다릅니다. 주요 범위는 다음과 같습니다.

1. 글로벌 변수 (파이프라인 전체 범위)
- `def` 없이 파이프라인 스크립트 최상위에서 변수를 선언하면, 해당 변수가 전체 파이프라인 스테이지와 함수에서 접근 가능합니다.
- 예:
```groovy
myVar = "hello"
pipeline {
agent any
stages {
stage('Example') {
steps {
echo "${myVar}" // "hello" 출력
}
}
}
}
```
- 다만, Jenkins Pipeline Sandbox 보안 정책으로 인해 일부 방법은 제한될 수 있습니다.

2. 스테이지 내 지역 변수
- 스테이지 내 `script` 블록에서 `def` 키워드를 사용하여 변수를 선언하면, 그 변수는 해당 스크립트 블록 안에서만 유효합니다.
- 예:
```groovy
stage('Test') {
steps {
script {
def innerVar = "inside"
echo innerVar // 가능
}
// echo innerVar // 오류 발생, 범위 밖
}
}
```

3. 스크립트 블록 내 함수 변수
- `def`로 선언한 변수는 해당 함수 내에서만 유효합니다. 함수 밖에선 접근 불가합니다.

4. 환경 변수 (env)
- `env.VARIABLE_NAME` 형태로 선언하면, 해당 변수를 외부 환경변수처럼 사용할 수 있으며, 모든 스테이지에서 접근 가능합니다.
- 예:
```groovy
environment {
MY_ENV = "value"
}
```
- 또는 `script` 내에서 `env.MY_ENV = "value"`로 설정 가능하며, 파이프라인 전체에서 참조합니다.

5. 단계별 한정 변수
- `steps` 블록 내에서만 사용되는 임시 변수는 해당 블록 이후엔 사라집니다.

요약:
- `def` 키워드 없이 최상위에 선언한 변수는 파이프라인 전체에서 사용 가능 (글로벌 변수).
- `def` 키워드가 붙은 변수는 선언된 블록(스크립트, 함수) 내에서만 사용 가능한 지역 변수.
- `env` 변수를 이용한 환경 변수는 파이프라인 전체에서 접근 가능하며, 다른 도구와도 통합 가능.

참고:
젠킨스 파이프라인 스크립트는 Groovy 문법을 기반으로 하며, 변수 범위 규칙 또한 Groovy 스코프 룰을 따릅니다. 따라서 변수를 사용할 위치에 맞게 적절히 선언하는 것이 중요합니다.
Jenkins 파이프라인에서 변수의 범위(Scope)는 변수의 정의 위치에 따라 달라집니다.

다음은 Jenkins 파이프라인에서 사용할 수 있는 변수의 범위에 대한 개요입니다.

1. Groovy 변수가 사용될 수 있는 범위 : - 변수의 범위는 파이프라인 블록 내에서 정의된 위치에 따라 다릅니다.

- 예를 들어, 하나의 스텝(단계) 내부에서 정의된 로컬 변수는 해당 스텝 내부에서만 유효합니다.



2. 전역 변수 : - 파이프라인 스크립트 내에서 전역으로 정의된 변수는 파이프라인의 모든 단계 및 블록에서 접근할 수 있습니다.

- 예를 들어, `def`로 변수를 정의하고, 그 변수를 파이프라인 전체에서 사용하도록 할 수 있습니다.



3. Stage 및 Steps 내 변수 : - 각 `stage` 내부에서 정의된 변수는 해당 `stage` 안에서만 접근이 가능합니다.

- 예를 들어, `stage('Build') { def buildVar = 'Building' }`로 정의된 `buildVar`는 ‘Build’ 단계 내에서만 사용가능하고, 다른 단계에서는 사용할 수 없습니다.



4. 환경 변수 : - Jenkins의 `environment` 블록에 정의된 환경 변수는 파이프라인의 모든 스텝 및 최신 stage에서 접근할 수 있습니다.

- 예를 들어, 아래와 같이 환경 변수를 정의하면 모든 단계에서 접근 가능해집니다: ```groovy pipeline { agent any environment { MY_ENV_VAR = 'some_value' } stages { stage('Example') { steps { script { echo "${MY_ENV_VAR}" } } } } } ```

5. 스크립트 블록 : - `script` 블록 안에서 정의된 변수는 해당 `script` 블록 내에서만 유효하며, 다른 스텝이나 블록과는 공유되지 않습니다.

이러한 변수를 정의하고 사용할 때, 변수의 범위를 잘 이해하고 관리하면 복잡한 파이프라인을 보다 효과적으로 구현할 수 있습니다.

작성자: 이수아 [비회원] | 작성일자: 1년 전 2025-03-22 15:11:17
조회수: 184 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.