CI\CD(27)
-
Github Actions - Timeout
Timeout특정 시간 이상 실행되면 job / step을 자동으로 중단시키는 안전장치로 아무 설정이 없으면 360분(6시간)에 워크플로우(정확하게는 job이)가 강제로 종료된다. 사용하는 이유는 아래와 같다 무한대기/행(hang) 방지 :외부 서비스 지연, 네트워크 이슈, 데드락 등으로 run이 무한으로 돌아가는 상황을 차단한다비용 / 러너 자원 보호 : 불필요한 시간소요와 러너 점유로 큐가 막히는 문제를 예방한다피드백 가속 : 빨리 실패하게하여 문제를 조기에 감지 및 리턴한다.이 타임 아웃은 Job 단위로 사용하는데 필요시에는 Step 단위로 상세하게 적용하기도 한다. Job 단위 Timeout먼저 job 단위로 timeout을 거는 방법에 대해서 살펴보자.파일을 하나 생성해주고name을 생성해주고 ..
2025.10.01 -
Github Actions - Filter
Filter필터란 언제 무엇을 실행할지 걸러낼지를 지정하는 규칙을 의미한다.크게 두가지로 나뉘는데 이벤트 트리거 필터(workflow 수준) : 워크 플로우 자체를 아예 시작할지말지를 결정한다조건식 필터(Job / Step 수준) : 워크 플로우가 시작된 후 각 job/step을 실행할지 말지를 결정한다이벤트 트리거 필터이벤트 트리거 필터는 워크 플로우가 돌지를 결정하는 것으로 on 아래에 설정하며, 대표적으로 branches / tags / paths가 있다.on: push: branches: [ main, 'release/*' ] # 이 브랜치에 푸시될 때만 tags: [ 'v*' ] # v로 시작하는 태그 푸시일 때만 paths: [ 'a..
2025.10.01 -
Github Actions - Context
ContextContext란 workflow 실행 중에 github, run , job, step, 환경, secret 등의 상태 및 값을 담은 읽기 전용 객체이다.Context를 쓰기 위해서는 표현식 구문 ${{}}의 내부에 작성해서 사용한다.${{github.sha}}${{runner.os}}${{matrix.node}} 대표적인 Context1) githubrepo, branch, commit, event의 정보를 담고 있다# 현재 워크플로우를 실행하는 저장소 명github.repository# 워크플로우를 트리거한 Git 참조(Reference) # 또는 branch(refs/heads/main) 또는 태그(ref/tags/v1.0.0)경로github.ref# 워크플로우를 트리거한 최신 커밋의 S..
2025.09.30 -
Github Actions - Checkout
이전에 re-run에서도 봤던 checkout에 대해서 한번 알아보도록 하자 Checkoutcheckout은 github의 저장소에서 파일을 빌드 머신(러너)로 내려 받는 동작을 말한다.Github Actions가 실행되면 러너는 빈 상태의 컴퓨터로 테스트, 빌드, 패키징, 배포등의 작업을 수행하려면 실제 이 러너안에 레포지토리의 파일이 존재해야 실행이 가능하다.그렇기에 대부분의 job에서는 첫 단계로 checkout을 실행해 파일을 내려받는다. checkout의 작업은 먼저 이번 실행 시점에 어떤 커밋(SHA)을 봐야할지를 확인하고, 그 커밋의 파일 스냅샷을 러너의 작업 폴더려 내려 받는데, 이 때 옵션을 전달하는 것에 따라서 서브모듈, Git LFS 파일도 같이 내려받을 수 있다.(self-hoste..
2025.09.30 -
Github Actions - re-run
re-runre-run은 같은 커밋(SHA), 같은 워크플로우 정의로 실패, 취소(혹은 조건에 의해 스킵)된 잡을 다시 돌려보는 것이다.워크플로우를 새로 돌리는게 아니라 같은 Run ID로 시도 번호만 증가하게 된다. 먼저 re-run하기 위해서 워크플로우를 하나 생성해보자.그리고 push 이벤트에 반응 하는 workflow를 만들어주자.이제 job을 만들텐데 job은 현재 워크플로우가 보고 있는 커밋을 기준으로 데이터를 가져오는 checkout을 사용해주도록 하자이때는 run이 아니라 uses를 사용하고 use에 actions/checkout@v4를 사용한다.이건 내 저장소의 파일들을 러너가 활동하는 환경(빌드 머신)으로 내려받는다라는 명령어이다.깃허브 액션이 실행될 때 러너가 활동하는 환경은 아예 아..
2025.09.30 -
Github Actions - needs
workflow를 실행하다 보면 job들은 모두 병렬로 돌아간다고 얘기했던 적이 있었다.근데 job 중에서는 서로 의존 관계를 가지는 경우들이 존재한다.예를 들면 build → test → deploy 와 같이 서로 의존 관계를 가지는 형태의 job이 생성될 수 있는데 job이 병렬로 실행되면 순서의 보장이 되지 않고, 앞 단계가 실패하더라도 다른 단계들이 병렬로 시작되어 러너와 시간의 낭비가 생긴다.또한 아티팩트(빌드 산출물)이 먼저 만들어져야 하는데 다른 잡이 먼저 돌아 건너 뛰는 상황이 발생하기도 한다. 이때 이를 해결해 줄 수 있는데 needs이다 needsneeds는 병렬로 수행되는 job의 실행 순서를 명시해서 그래프로 묶어 선행 성공 후에만 후행 실행하고 실패하면 기본적으로 스킵한다.이를 통..
2025.09.30