젠킨스(Jenkins) 파이프라인에서 사용할 변수의 범위는 어떻게 되나요?
_____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 // 오류 발생, 범위 밖
}
}
```
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 파이프라인에서 사용할 수 있는 변수의 범위에 대한 개요입니다.
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
조회수: 184 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.