* 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.
러닝 깃허브 액션
브렌트 레스터 지음
정의형, 정한결 옮김
러닝 깃허브 액션
개발 생산성을 극대화하는 깃허브 액션 종합 가이드...
m.hanbit.co.kr
간단 서평
CI/CD는 소프트웨어 개발은 물론 최근 몇 년간 급부상한 MLOps에서도 매우 중요한 개념이다. 모델의 학습부터 배포 밒 서빙에 이르기까지 CI/CD는 적재적소에 중요하게 사용되며 개발의 효율성을 끌어올린다.
하지만 젠킨스, ArgoCD와 같은 기존의 CI/CD를 위한 프로그램은 물론 좋지만, 사실 ML 엔지니어들에게는 '이것까지 쓸 필요가 있나?'라는 생각을 하게 만들었다(나만 그랬을지도..). 깃과 깃허브 환경 외부로까지 나가야 하고, 비교적 중요도가 떨어지는(중요하지만, 약간은 우선순위가 떨어지는) 단순 작업을 위해 여러 가지 툴을 난잡하게 써야 한다는 인식을 지울 수 없었던 것 같다. 그러던 와중에 깃허브 액션을 통해서도 그 기능들을 모두 구현할 수 있음을 알게 되었고, 이를 배워야겠다고 마음먹게 되었다.
이 책은 나와 같이, 깃허브 액션의 장점을 느끼고 배워보고자 하는 사람들에게 좋은 책이다. 아주 간단한 깃허브 액션 사용법부터 문법과 로직, 그리고 보안이나 고급 워크플로까지를 전부 다루고 있기 때문에 목차를 차근차근 따라가다보면 어느새 복잡한 툴을 사용해서 수행하던 인프라 관리를 깃허브 액션만으로 할 수 있게 된 것을 발견할 수 있다. 심지어, 기존에 애져 파이프라인이나 젠킨스 등에서 사용하던 인프라 관리 코드를 깃허브 액션으로 마이그레이션 하는 방법까지 다루고 있기 때문에, 새로운 툴을 도입하는 데에 있어 드는 리소스 또한 줄일 수 있었다.
처음에는 문법이 익숙치 않고 indentation 같은 것들이 조금 헷갈릴 수 있지만, 일단 꾹 참고 따라가다 보면 조금씩 트일 것이다. 사소한 것 하나하나 다 잡아가려고 하지 말고, 전반적으로 쭉 훑어본다는 생각으로 접근한 후에 필요한 부분만 자세히 보는 것을 추천한다.
목차
PART 1 깃허브 액션의 기초
CHAPTER 1 기본 사항
_1.1 깃허브 액션
__1.1.1 자동화 플랫폼
__1.1.2 프레임워크
_1.2 깃허브 액션의 사용 사례
__1.2.1 스타터 워크플로
__1.2.2 액션 마켓플레이스
_1.3 이용 요금
__1.3.1 무료 모델
__1.3.2 유료 모델
_1.4 깃허브 액션 이전 체크리스트
__1.4.1 깃허브 사용량
__1.4.2 공개 액션
__1.4.3 자체 제작 액션
__1.4.4 아티팩트 관리
__1.4.5 액션 관리
_1.5 결론
CHAPTER 2 액션의 작동 원리
_2.1 개요
_2.2 워크플로 발동
_2.3 컴포넌트
__2.3.1 스텝
__2.3.2 러너
__2.3.3 잡
__2.3.4 워크플로
_2.4 워크플로 실행
_2.5 결론
CHAPTER 3 잡 구현
_3.1 액션의 구조
_3.2 액션과의 상호작용
_3.3 액션 사용법
_3.4 공개 액션과 마켓플레이스
_3.5 결론
CHAPTER 4 워크플로 사용법
_4.1 리포지터리에서 만드는 워크플로 생성
_4.2 워크플로 커밋
_4.3 VS 코드용 깃허브 액션 확장 기능 사용
_4.4 결론
CHAPTER 5 러너
_5.1 깃허브 호스팅 러너
__5.1.1 러너 이미지 내 지원 소프트웨어
__5.1.2 러너에 소프트웨어 추가
_5.2 자체 호스팅 러너
__5.2.1 자체 호스팅 러너 시스템의 요구 사항
__5.2.2 자체 호스팅 러너의 제한 사항
__5.2.3 자체 호스팅 러너 보안 고려 사항
__5.2.4 자체 호스팅 러너 설정
__5.2.5 자체 호스팅 러너 사용
__5.2.6 자체 호스팅 러너와 레이블 사용
__5.2.7 자체 호스팅 러너 트러블슈팅
__5.2.8 자체 호스팅 러너 제거
_5.3 자체 호스팅된 러너 오토스케일링
_5.4 저스트 인 타임 러너
_5.5 결론
PART 2 깃허브 액션의 구성 요소
CHAPTER 6 워크플로 환경 관리
_6.1 워크플로 이름과 워크플로 실행 이름
_6.2 컨텍스트
_6.3 환경 변수
__6.3.1 기본 환경 변수
_6.4 비밀 변수 및 구성 변수
_6.5 워크플로 권한 관리
_6.6 배포 환경
_6.7 결론
CHAPTER 7 워크플로에서의 데이터 관리
_7.1 워크플로의 입출력 사용
__7.1.1 워크플로의 입력 정의 및 참조
__7.1.2 스텝에서 출력 확인
__7.1.3 잡의 출력 확인
__7.1.4 스텝에서 캡처하는 액션의 출력
_7.2 아티팩트 정의
_7.3 아티팩트 업로드 및 다운로드
__7.3.1 매개변수 추가
_7.4 깃허브 액션에서 캐시 사용
__7.4.1 명시적 캐시 액션 사용
__7.4.2 캐시 모니터링
__7.4.3 설정 액션에 캐시 활성화
_7.5 결론
CHAPTER 8 워크플로 실행 관리
_8.1 고급 변경 사항 트리거
__8.1.1 활동 유형에 따른 트리거
__8.1.2 필터를 활용한 트리거 구체화
_8.2 변경 없는 워크플로 트리거
_8.3 동시성 처리
_8.4 매트릭스로 워크플로 실행
_8.5 워크플로 전용 함수
__8.5.1 조건부 및 상태 함수
_8.6 결론
PART 3 보안과 모니터링
CHAPTER 9 액션과 보안
_9.1 설정을 통한 보안
__9.1.1 풀 리퀘스트에서 워크플로 실행 관리
__9.1.2 워크플로 권한 허가
__9.1.3 CODEOWNERS 파일
__9.1.4 보호된 태그
__9.1.5 보호된 브랜치
__9.1.6 리포지터리 규칙
_9.2 설계를 통한 보안
__9.2.1 비밀 변수
__9.2.2 비밀 변수 보호
__9.2.3 토큰
__9.2.4 신뢰할 수 없는 입력 처리
__9.2.5 종속성 보안
_9.3 모니터링을 통한 보안
__9.3.1 스캔
__9.3.2 풀 리퀘스트의 안전한 처리
__9.3.3 풀 리퀘스트 내 워크플로의 취약점
__9.3.4 풀 리퀘스트 내 소스 코드의 취약점
__9.3.5 풀 리퀘스트 유효성 검사 스크립트 추가
__9.3.6 안전한 풀 리퀘스트 처리
_9.4 결론
CHAPTER 10 모니터링, 로깅 및 디버깅
_10.1 가시성 향상
__10.1.1 고수준에서의 상태 이해
__10.1.2 워크플로용 상태 배지
_10.2 이전 버전의 상태 작업
__10.2.1 워크플로 버전을 실행에 연결
__10.2.2 워크플로에서 잡 재실행
_10.3 워크플로 디버깅
__10.3.1 스텝별 디버그 로깅
__10.3.2 러너 환경 디버깅
__10.3.3 디버깅 활성화
_10.4 로깅 확장 및 커스터마이징
__10.4.1 로그에 나만의 메시지 추가
__10.4.2 추가적인 로그 커스터마이징
__10.4.3 사용자 맞춤형 잡 요약
_10.5 결론
PART 4 심화 주제
CHAPTER 11 커스텀 액션
_11.1 액션 구조 해부
_11.2 액션 유형
__11.2.1 복합 액션
__11.2.2 도커 컨테이너 액션
__11.2.3 자바스크립트 액션
_11.3 액션 생성 마무리
_11.4 깃허브 마켓플레이스에 액션 게시
__11.4.1 마켓플레이스에서 액션 업데이트
__11.4.2 마켓플레이스에서 액션 제거
_11.5 액션 툴킷
__11.5.1 툴킷에서 워크플로 명령어 사용
_11.6 로컬 액션
_11.7 결론
CHAPTER 12 고급 워크플로
_12.1 나만의 스타터 워크플로
__12.1.1 스타터 워크플로 영역
__12.1.2 스타터 워크플로 파일
__12.1.3 보조적 조각 추가
__12.1.4 새 스타터 워크플로 사용
_12.2 재사용 가능한 워크플로
__12.2.1 입력 및 비밀 변수
__12.2.2 출력
__12.2.3 제한 사항
_12.3 필수 워크플로
__12.3.1 제약 조건
__12.3.2 예시
__12.3.3 실행
_12.4 결론
CHAPTER 13 고급 워크플로 기술
_13.1 워크플로에서 깃허브 활용
__13.1.1 깃허브 CLI 사용
__13.1.2 스크립트
__13.1.3 깃허브 API 호출
_13.2 매트릭스를 활용한 잡 자동 생성
__13.2.1 1차원 매트릭스
__13.2.2 다차원 매트릭스
__13.2.3 추가 값 포함
__13.2.4 값 제외
__13.2.5 실패 사례 처리
__13.2.6 잡 동시성 최댓값 정의
_13.3 워크플로에서 컨테이너 사용
__13.3.1 컨테이너를 잡 실행 환경으로 사용
__13.3.2 스텝 수준에서 컨테이너 사용
__13.3.3 잡에서 컨테이너를 서비스로 실행
_13.4 결론
CHAPTER 14 깃허브 액션으로 마이그레이션
_14.1 준비
__14.1.1 소스 코드
__14.1.2 자동화
__14.1.3 인프라
__14.1.4 사용자
_14.2 애져 파이프라인
_14.3 CircleCI
_14.4 깃랩 CI/CD
_14.5 젠킨스
_14.6 트래비스 CI
_14.7 깃허브 액션 임포터
__14.7.1 인증
__14.7.2 계획
__14.7.3 빌드 스텝 관련 사항
__14.7.4 수동으로 할 일
__14.7.5 파일 매니페스트
__14.7.6 예측
__14.7.7 드라이 런 수행
__14.7.8 임포터를 위한 커스텀 트랜스포머
__14.7.9 실제 마이그레이션
_14.8 결론
'리뷰 > 도서, 강의 리뷰' 카테고리의 다른 글
[도서 리뷰] AI 트루스 (6) | 2024.09.29 |
---|---|
[도서 리뷰] AI 딥다이브 (0) | 2024.08.25 |
[리뷰] 개발자를 위한 커리어 관리 핸드북 (0) | 2024.05.24 |
[리뷰] 챗GPT API를 활용한 챗봇 만들기 (1) | 2024.04.27 |
[글또 X Udemy] 랭체인 - LangChain 으로 LLM 기반 애플리케이션 개발하기 (0) | 2024.04.26 |
댓글