조건부 실행 및 작업 의존성
GitHub Actions 워크플로에서 if 조건, needs 키워드, 표현식, 상태 확인 함수를 사용해 단계와 작업이 실행되는 시점을 제어해 보세요.
조건부 실행 및 작업 의존성은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
조건이 중요한 이유
모든 단계가 매번 실행되어야 하는 것은 아닙니다. main 브랜치에서만 배포 단계를 실행하거나, 무언가 실패했을 때만 알림 단계를 실행할 수 있습니다.
GitHub 작업에서는 모든 단계나 작업에 조건을 연결하여 실행 여부를 제어할 수 있습니다.
조건 키
단계에 if: 키를 추가하십시오. 식의 결과가 참일 때만 단계가 실행됩니다.
if 안의 식에는 ${{ }}로 감싸는 구문이 필요하지 않지만, 사용해도 됩니다.
steps:
- name: Deploy
if: github.ref == 'refs/heads/main'
run: ./deploy.sh컨텍스트 객체
조건은 실행을 설명하는 컨텍스트 객체에서 읽어 옵니다:
github— 이벤트, 참조, 실행자, 커밋 해시env— 환경 변수job및steps— 이전 작업의 상태runner— OS 및 아키텍처
예를 들어 github.event_name은 푸시 또는 풀 리퀘스트가 실행을 시작했는지 알려 줍니다.
상태 확인 함수
기본적으로 이전 단계가 실패하면 단계가 건너뛰어집니다. 이를 재정의하려면 상태 함수를 사용하십시오:
success()— 이전 단계가 하나도 실패하지 않았으면 참입니다 (기본값)failure()— 이전 단계 중 하나라도 실패했으면 참입니다always()— 어떤 상황에서도 실행됩니다cancelled()— 실행이 취소되었으면 참입니다
- name: Notify on failure
if: failure()
run: echo 'Build failed, sending alert'정리 작업 항상 실행
일반적인 패턴은 앞 단계가 실패해도 반드시 실행되어야 하는 정리 단계입니다. if: always()를 사용하십시오.
이렇게 하면 결과와 관계없이 임시 리소스, 컨테이너 또는 테스트 보고서가 처리됩니다.
- name: Upload logs
if: always()
uses: actions/upload-artifact@v4
with:
name: logs
path: ./logs필요 항목을 사용한 작업 의존성
needs 키워드는 한 작업이 다른 작업이 끝날 때까지 기다리게 합니다. 이를 지정하지 않으면 작업은 병렬로 실행됩니다.
needs에 나열된 작업은 의존하는 작업이 시작되기 전에 성공적으로 완료되어야 합니다.
jobs:
test:
runs-on: ubuntu-latest
steps:
- run: npm test
deploy:
needs: test
runs-on: ubuntu-latest
steps:
- run: ./deploy.sh여러 의존성
needs에 목록을 전달하면 한 작업이 여러 작업에 의존하도록 만들 수 있습니다. 해당 작업은 모든 작업이 끝날 때까지 기다립니다.
이렇게 하면 병렬 작업이 모두 성공한 후에만 최종 작업이 실행되는 팬인 패턴을 구성할 수 있습니다.
release:
needs: [lint, test, build]
runs-on: ubuntu-latest
steps:
- run: echo 'all checks passed'조건부 작업
if 키는 단계뿐 아니라 작업에도 사용할 수 있습니다. 작업 수준의 조건에 따라 전체 작업을 실행할지 결정합니다.
여기서는 테스트에 계속 의존하면서도 기본 브랜치로 푸시된 경우에만 배포 작업이 실행됩니다.
deploy:
needs: test
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- run: ./deploy.sh작업 출력 사용
작업은 outputs를 통해 후속 작업에 데이터를 전달할 수 있습니다. 의존하는 작업은 needs 컨텍스트를 통해 해당 데이터를 읽습니다.
따라서 버전이 변경되었는지와 같이 앞에서 계산한 값에 따라 조건을 결정할 수 있습니다.
check:
runs-on: ubuntu-latest
outputs:
changed: ${{ steps.diff.outputs.changed }}
steps:
- id: diff
run: echo 'changed=true' >> $GITHUB_OUTPUT조건 결합
&& (그리고), || (또는), ! (아님)를 사용하여 표현식을 결합할 수 있습니다.
이 예제는 성공적으로 기본 브랜치에 푸시되었고 포크가 아닌 경우에만 실행됩니다.
if: success() && github.ref == 'refs/heads/main' && github.event_name == 'push'항상 실행하는 조건과 필요 항목
주의하십시오. 의존성이 있는 작업은 종속 작업이 실패하면 건너뛰어집니다. 최종 보고 작업을 어떤 경우에도 실행하려면 needs와 if: always()를 함께 사용하십시오.
작업 내부에서 needs.<job>.result를 확인하여 보고할 내용을 결정할 수 있습니다.
report:
needs: [test, build]
if: always()
runs-on: ubuntu-latest
steps:
- run: echo ${{ needs.test.result }}간단 확인
조건부 실행에 대한 이해도를 확인해 보십시오.
복습
조건과 의존성으로 워크플로 흐름을 제어하는 방법을 배웠습니다.
if는 표현식에 따라 단계와 작업의 실행 여부를 결정합니다failure()및always()와 같은 상태 함수는 실패 시 건너뛰는 기본 동작을 재정의합니다needs는 실행 순서와 팬인 패턴을 만듭니다- 작업의
outputs는 이후 조건에 값을 전달합니다
이러한 기본 요소를 사용하면 정밀하고 효율적인 파이프라인을 구성할 수 있습니다.
자주 묻는 질문
“조건부 실행 및 작업 의존성” 강의는 무료인가요?
네 — “조건부 실행 및 작업 의존성” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
“조건부 실행 및 작업 의존성”에서 뭘 배우나요?
GitHub Actions 워크플로에서 if 조건, needs 키워드, 표현식, 상태 확인 함수를 사용해 단계와 작업이 실행되는 시점을 제어해 보세요. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“조건부 실행 및 작업 의존성” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 여러 환경을 위한 매트릭스 빌드
- 속도 향상을 위한 종속 항목 캐싱
- 재사용 가능한 워크플로 및 Actions
- 조건부 실행 및 작업 의존성