각 작업은 자기 전용 VM을 써
작업은 하나의 러너(VM이나 컨테이너)에서 실행되는 작업 단위야. 같은 워크플로 안에 있는 작업들은 기본적으로 병렬로 돌아. 작업을 여러 개로 나누는 가장 큰 이유가 바로 이거야.
여기서 나오는 중요한 결과들:
- 각 작업은 깨끗한 작업 디렉터리에서 시작해. 한 작업에서 만든 파일은 다른 작업에서 안 보여.
upload-artifact와download-artifact를 써서 아티팩트를 명시적으로 넘겨줘야 해. - 각 작업의 러너는 새로운 VM이야. 캐시도 다시 채워야 해.
- 작업은
needs:를 선언해서 다른 작업이 끝날 때까지 기다리게 할 수 있고, 이렇게 DAG를 만들 수 있어. - 작업은
if:조건으로 컨텍스트에 따라 건너뛸 수 있어.
작업의 구성 요소
runs-on— 필수야. 러너 라벨을 적어줘(ubuntu-latest,macos-14,self-hosted등).steps— 필수야. 이 러너에서 순서대로 실행할 명령이나 액션 목록이야.needs— 옵션이야. 의존할 다른 작업을 적어줘.if— 옵션이야. 작업 전체를 실행할지 막을지 결정하는 표현식이야.strategy— 옵션이야. 매트릭스 확장을 할 때 써(나중에 다룰 거야).env— 옵션이야. 작업 범위의 환경 변수야.outputs— 옵션이야. 의존하는 작업으로 넘겨줄 출력값이야.environment— 옵션이야. 승인이 필요한 프로덕션 환경 수준의 게이트야.