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

서클CI에서 파이프라인 조건부 실행은 어떻게 하나요?

_____
Q: 서클CI에서 파이프라인 조건부 실행은 어떻게 하나요?

A: 서클CI(CircleCI)에서는 워크플로우와 잡(job) 단위로 조건부 실행을 설정할 수 있습니다. 주요 방법은 다음과 같습니다:

1. `filters` 사용하기
- 브랜치나 태그에 따라 특정 잡을 실행하거나 제외할 수 있습니다.
- 예:
```yaml
workflows:
version: 2
build_and_test:
jobs:
- build:
filters:
branches:
only: master
```
- 위 예시는 `build` 잡이 `master` 브랜치에서만 실행됨을 의미합니다.

2. `when` 속성 사용하기
- 잡의 실행 조건을 "on_success", "on_fail", "on_cancel" 등으로 설정할 수 있습니다.
- 예:
```yaml
jobs:
deploy:
docker:
- image: cimg/base:stable
steps:
- run: echo "Deploy step"
workflows:
version: 2
build_test_deploy:
jobs:
- build
- deploy:
requires:
- build
when: on_success
```
- `when` 옵션으로 이전 잡 성공시에만 배포를 실행하는 등의 조건 설정이 가능합니다.
3. 파라미터 전달 및 조건문 활용하기
- 커스텀 파라미터를 통해 잡 내부에서 조건부 스크립트를 실행할 수 있습니다.
- 예:
```yaml
jobs:
build:
parameters:
run_tests:
type: boolean
default: true
steps:
- run:
name: Run tests conditionally
command: |
if [[ << parameters.run_tests >> == true ]]; then
echo "Running tests..."
테스트 명령어 실행
else
echo "Skipping tests"
fi
workflows:
version: 2
build_and_test:
jobs:
- build:
run_tests: true
```
- 이렇게 하면 파라미터 값에 따라 잡 내에서 실행 흐름을 통제할 수 있습니다.

4. 환경 변수 활용
- 환경 변수 값을 체크해 조건적으로 스크립트를 실행하는 방법도 있습니다.
- 예: `if [ "$SKIP_DEPLOY" != "true" ]; then deploy; fi`

---

요약:
- `filters`를 이용한 브랜치/태그 필터링
- `when` 속성으로 잡 실행 시점 제어
- 파라미터와 조건문으로 세부 로직 조정
- 환경 변수를 활용한 조건부 실행

이 방식을 조합하여 원하는 조건의 파이프라인 흐름을 설계할 수 있습니다. CircleCI 공식 문서의 워크플로우 및 잡 구성을 참고하면 더욱 상세한 설정이 가능합니다.
서클CI(CircleCI)에서 파이프라인의 조건부 실행을 설정하는 방법에 대해서 설명드리겠습니다.

조건부 실행을 통해 특정 조건을 만족할 때만 특정 작업이나 단계를 실행할 수 있습니다.

CircleCI에서는 이를 환경 변수, Git 브랜치, API 응답 등을 기반으로 설정할 수 있습니다.

1. 환경 변수 기반 조건부 실행 CircleCI에서는 환경 변수를 사용하여 특정 조건 하에 작업을 실행할 수 있습니다.

예를 들어, 디폴트로 설정된 환경 변수를 사용하거나 사용자 정의 환경 변수를 이용해 다음과 같이 조건을 설정할 수 있습니다.

```yaml version:

2.1 executors: my-executor: docker: - image: circleci/python:3.7 jobs: my-job: executor: my-executor steps: - checkout - run: name: Run tests command: if [[ "${TEST_ENV}" == "true" ]]; then run_my_tests; fi workflows: version: 2 my-workflow: jobs: - my-job: filters: branches: only: - main ``` 위 예제에서는 `TEST_ENV` 환경 변수가 `true`일 경우에만 `run_my_tests` 명령이 실행됩니다.



2. Git 브랜치 조건부 실행 CircleCI는 특정 브랜치에 대해 작업을 설정할 수 있습니다.

아래의 예제에서는 `main` 브랜치에 대한 입력만 처리합니다.

```yaml workflows: version: 2 my-workflow: jobs: - my-job: filters: branches: only: - main ``` 이렇게 설정하면 `main` 브랜치에 푸시를 할 때만 `my-job`이 실행됩니다.



3. 상황에 따른 작업 실행 작업에서 특정 파일이나 디렉터리의 변경 여부에 따라 실행하고 싶으면, `when` 키워드를 사용할 수 있습니다.

```yaml jobs: test: docker: - image: circleci/python:3.7 steps: - checkout - run: name: Run tests if file changed command: | if git diff --name-only HEAD^ | grep "path/to/file"; then run_my_tests; fi workflows: version: 2 my-workflow: jobs: - test ``` 위의 예제에서는 이전 커밋과 비교하여 `path/to/file`이 변경된 경우에만 `run_my_tests` 명령이 실행됩니다.

결론 CircleCI에서 조건부 실행은 다양한 방법으로 설정할 수 있으며, 이를 통해 CI/CD 파이프라인의 효율성을 높일 수 있습니다.

환경 변수를 활용하거나, 브랜치 필터를 설정하고, 파일 변경 사항을 체크하는 등의 방법을 통해 유연한 파이프라인을 구성할 수 있습니다.

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