Github Actions
개발자들의 workflows를 자동화 하기 위한 플랫폼
workflow
- 자동화된 전체 프로세스
- 하나 이상의 job으로 구성되고, event에 의해 예약 되거나 트리거 될 수 있는 자동화 된 절차를 말함.
- workflow 파일은 YAML으로 작성되고, github Repository의 .github/workflows 폴더 아래에 저장 된다.
- github 에게 YAML파일로 정의한 자동화 동작을 전달하면, gitHub Actions는 해당 파일을 기반으로 그대로 실행시킴
러너(runners)
Github 액션 러너 애플리케이션이 설치된 서버이다. Github에서 호스팅 하는 러너를 사용할 수도 있고 직접 호스팅 할 수도 있다. Github에서 호스팅 하는 러너는 Ubuntu Linux, Windows, macOS 환경을 기반으로 하며 워크 플로우의 각 작업은 새로운 가상 환경에서 실행된다.
작업(jobs)
워크플로우의 기본 단위라고 보면 되며 다시 더 작은 단위인 스텝(step)으로 이루어져 있다.
기본적으로 워크 플로우는 여러 작업을 병렬적으로 실행하며 순차적으로 실행하도록 설정할 수도 있다. 예를 들어 빌드와 테스트 코드의 수행인 두 작업을 순차적으로 실행할 수도 있으며 이 경우에는 빌드 작업이 실패하면 테스트 작업은 실행되지 않는다.
스텝(steps)
작업에서 커맨드를 실행하는 독립적인 단위이다. 한 작업(job)의 각 스텝들은 동일한 러너에서 실행되므로 해당 작업의 액션들은 서로 데이터를 공유한다.
액션(actions)
워크 플로우의 가장 작은 요소로 직접 만들어 사용할 수도 있고 마켓에 등록된 이미 만들어진 것을 가져와 사용할 수도 있다.
YAML파일이란??
- 데이터 표현 양식의 한종류
- 가장 간소화된 포맷 형식
- -(hypen)을 통해 array 임을 알 수 있음
- 작성하기도 보기에도 가장 편해 보편적으로 쓰이는 파일 형식
jenkins란?
- github 내용을 자동 반영해줌
- 소스코드 일관성을 유지할 수 있다는 장점이 있음.
- 자동빌드, 시간별 빌드가능
- 자동 테스팅 가능 -> 빌드 과정에서 테스트를 넣어두면 자동 테스팅 가능
- jenkins file을 이용해 job 혹은 파이프 라인을 정의할 수 있다.]
Scripted Pipeline
- jenkins관련 구조를 자세히 가지지 않고 프로그램의 흐름을 javadhk dbtkgks groovy라는 동적 객체 지향 프로ㅓ그래밍 언어를 이용해 관리 되었음
- 매우 유연하지만 시작하기 어려움
jenkins file 이란?
- jenkins file을 이용하여 일반 소스코드르르 다루는 github 업로드 , vscode 로 수정하는 것으로 파일 이용가능.
- 기본적으로 jenkinsfile 을 통해 젠킨스를 실행함.
JenkinsGitHub Actions 비교
서버 설치가 필요 | 클라우드에서 동작하므로 어떤 설치도 필요 없음 |
작업이 동기적으로 일어나므로, 제품을 시장까지 배포하는 데에 더 많은 시간이 소요됨 | 비동기 CI/CD 가능함 |
계정과 트리거에 기반하고 있으며 GitHub 이벤트를 처리할 수 없음 | 모든 GitHub 이벤트에 대해 GitHub Actions를 제공하고 있으며 많은 언어와 프레임워크도 지원함 |
환경 호환성을 위해 Docker 이미지에서 동작해야 함 | 모든 환경에 호환됨 |
캐싱 기법을 위해 플러그인을 제공하고 있음. | 캐싱이 필요하다면 직접 캐싱 메커니즘을 작성해야 함 |
공유할 수 있는 기능을 제공하고 있지 않음 | GitHub 마켓플레이스를 통해 공유할 수 있음 |
장표 참조 : https://wookiist.dev/155
'Infra > MLops' 카테고리의 다른 글
1!!!!![jenkins][Gitlab] flask project cicd _ 1 (0) | 2022.01.25 |
---|---|
[Monitoring]Prometheus & Grafana (0) | 2022.01.25 |
[Docker][Flask]flask web docker image,container만들어 배포하기. (0) | 2022.01.20 |
????[MLops][Flask] ml model serving 구현하기_(1) (0) | 2022.01.20 |
[MLops] Model Serving 이란? (0) | 2022.01.20 |