Programming(219)
-
CI/CD - CI/CD를 위한 AWS
AWS의 EC2란EC2는 Elastic Compute Cloud의 약자로 AWS에서 가상 서버(인스턴스)를 필요할 때 바로 만들고, 크기와 수량을 탄력적으로(Elastic) 늘이고 줄일 수 있게 해주는 IaaS서비스이다. IaaS란IasS는 Infrastructure as a Service의 약자로 클라우드에서 가상화된 인프라(서버, 스토리지, 네트워크)를 필요한 만큼 빌려 쓰는 서비스 모델을 말하는 것으로 사용자가 하드웨어를 직접 구매하거나 설치할 필요 없이 Console이나 API로 인프라를 만들고 지우면서 운영하는 서비스를 말한다. 이 EC2에는 뭐든 올릴 수 있게 되어 있으나 보통 백엔드, 배치, 소켓/미디어 서버 같은 애플리케이션을 올리고 데이터 베이스나 정적프론트의 경우는 관리형 서비스로 분리..
2025.10.03 -
Github Actions - Cache
Cache캐시는 워크플로우 실행마다 다시 받아오거나 빌드해야하는 무거운 파일들을 저장해뒀다가 다음 실행 때에 재사용할 수 있도록 하는 저장소 같은 개념으로 프로젝트 내부의 node_modules나 pip, Gradle/Maven같은 라이브러리나 빌드 산출물과 같이 재사용 가능한 중간 결과들을 캐시해서 재사용하도록 한다. 이렇게 cache해서 사용하면 의존성의 설치, 컴파일 속도를 크게 줄여주고 러너의 사용 시간을 줄여 비용을 절감할 수 있으며 외부 레지스트리 지연 시에도 캐시로 빠르게 실행이 가능하다. 더보기여기서 나는 조금 혼동이 생겼다. 기존에는 로컬에서 서버에 필요한 라이브러리를 모두 설치하고 소스코드와 라이브러리를 포함한 형태로 빌드하여 그 산출물을 통해서 서버를 실행했었는데 github acti..
2025.10.01 -
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