들어가며
2019년 새해가 밝았는데, 몬가 새해엔 좀 더 블로그를 열심히 해 보자는 다짐과 함께, 깃헙에서 좋은 소식들이 연달아 오면서 겸사겸사 새해 첫 블로그 포스트를 작성 해 보았다. (-,.-;)
작년 말쯤에 Github Actions 라는 깃헙에서 나온 CI/CD를 위한 워크플로우 기능을 제공하기 위해 베타테스터를 모집한다는 글을 보았다.
당시에 한번 써 보고 싶어서 냅다 신청했는데, 며칠전에 베타테스터에 당첨되었다는 메일을 받고, 당장 적용 해 보았다.
얼마전부터 심심한 여가시간을 보내기 위해 개인 프로젝트를 해 보고자 뉴스 크롤러를 만들어 보고 있다. [Ashon/newscrawler]
그 프로젝트에 CI를 설정해서 쓰고 싶어서 bitbucket에 프로젝트를 파서 개발 중이었는데, 마침 깃헙에서 프라이빗 레포를 지원한다는 소식과 깃헙 액션 당첨소식을 듣고 겸사겸사 프로젝트 저장소를 깃헙으로 옮기고 뉴스 크롤러 프로젝트에 대한 CI를 구성해 보았다.
Github Actions - UI
"Actions" 버튼을 클릭을 해 보면, 워크플로우를 구성할 수 있는 화면이 나오고, UI를 통해 등록할 수 있도록 해 놓았다.
(나중에 패치되면 아이콘 배치가 어디에 있을 지 모르겠지만,
일단은 풀리퀘 버튼 옆에 위치해 있다.)
(UI를 통해서만 등록할 수 있는 줄 알았는데, HCL문법으로 워크플로우 작성이 가능했다.)
이런 기능은 UI보다는 코드를 직접 보는게 좋겠다 싶어서 예제로 등록만 해 두고 직접 코드를 작성해 보았다.
수많은 삽질.. 끝에 CI 워크플로우를 완성하게 되었고, GitHub Actions UI를 통해 해당 워크플로우 코드를 열게 되면 UI로 예쁘게 나온다.
워크플로우의 실행 결과들은 Actions 탭에 가서 볼 수 있다.
(중간에 Invalid Workflow로 실패한 건,
워크플로우 스크립트에 오류가 있을 경우 보이게 된다.)
Github Actions - Workflow
Github Actions의 각 action 오브젝트는 'use' 패러미터로 들어가는 도커를 기반으로 'args' 를 인자로 받아 엔트리포인트에서 실행 가능하게 해 준다.
나는 깃헙이 기본으로 제공중인 도커 컨테이너만 사용하면 되었기 때문에 기본 이미지만을 사용해서 CI 워크플로우를 구성했다. 개발자 가이드를 보면서 필요한 부분들을 하나씩 메꿔가면서 워크플로우를 작성 해 나가면 된다. 액션에 사용할 스 있는 컨테이너는 https://github.com/actions 이곳에서 확인할 수 있다.
아래는 gist로 공유한 개인프로젝트의 CI 코드다.
위 내용에는 포함되지 않았지만 공식 컨테이너 말고도 저장소에 자신이 직접 액션에 사용 할 컨테이너를 만들어서 사용할 수도 있는데, 그때는 저장소 하위에 디렉토리 단위로 컨테이너 소스를 정의 해 주면 된다.
마무리
'Software Development' 카테고리의 다른 글
Kubernetes 공부 - pod에서 pause 컨테이너는 왜 생기는지.. (0) | 2018.01.24 |
---|---|
장난감 CoreOS 클러스터 근황, 소소한 삽질기 공유 (2) | 2017.10.29 |
알아두면 좋은 Ansible (0) | 2017.09.09 |
Docker Rex-ray 볼륨 드라이버 플러그인 소개 (0) | 2017.08.26 |
Vagrant, Openstack, Jenkins, Ansible을 활용한 통합 테스팅 환경 CI-CD 환경 구축 (0) | 2016.08.10 |