[OpenShift] OpenShift 4.5 를 이용한 CI(Continuous Integration) 구성
이번 포스팅은 OpenShift 를 이용한 Continuous Integration(이하 CI)를 구성하도록 하겠습니다.
- 사전 구성 :
gogs
Continuous Integration 란?
CI는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미합니다.
CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있습니다.
참고 자료 :
- https://blog.abiatechhub.com/devops-what-is-continous-integration-all-you-need-to-know/2020/by/zaghadon/
- https://www.redhat.com/ko/topics/devops/what-is-ci-cd
gogs 계정 생성
아래 URL 로 접근하여 신규 계정을 생성합니다.
http://gogs-mushroom.apps.ocp.igts.com/
아래 내용은 Git 사용에 미숙한 사용자를 대상으로 가이드 되어 있고,
Git 사용에 능숙하다면git
커맨드를 사용하여 저장소 구성 및 소스 생성하시면 됩니다.
Git Repository 생성
새 저장소
를 눌러서 신규 저장소를 생성합니다.
저장소 이름 및 저장소 초기화 선택 후 저장소 만들기
선택 합니다.
생성된 저장소에서 파일 생성
을 선택하고 신규 파일을 생성합니다.
파일명은 index.php
이며, 내용은 아래와 같습니다.
<html>
<body>
<center>
<b>
<?php
$host=gethostname();
echo "pod name : ";
echo $host;
?>
<p> Image Version : original </p>
</b>
</center>
</body>
</html>
index.php
가 생성되었습니다.
Deploy APP
OpenShift 에서 만들어신 저장소의 주소를 입력합니다.
Builder는 PHP
로 선택합니다.
source를 이용하여 image build를 진행합니다.
original version 이 배포되었습니다.
위와 같이 source를 수정하겠습니다. (php 구문에 맞게 source를 update 하면 됩니다.)
git diff 내역은 위와 같습니다.
Start-Build
를 선택하여 Update된 source로 build를 합니다.
version 2 build 진행중
version 2 배포 완료
Webhook 을 이용하여 Build 자동화 구현
지금까지 Update에 대해 수동으로 Build를 진행했습니다.
다음 과정은 source의 update가 확인되면 자동으로 OpenShift에서 해당 내용을 감지하고 Build하는 자동화 환경을 구현하려고 합니다.
Build
메뉴에서 만들어진 build config
를 선택합니다.
위와 같이 build config
정보가 보이며,
아래 부분에 Webhook 부분의 Copy URL with Secret
을 선택하여 내용을 복사합니다.
gogs
에서 만든 php 저장소 설정에서 Webhook
> Webhook 추가
를 선택합니다.
페이로드 URL에 복사한 Copy URL with Secret
를 넣습니다. 이후 Webhook 추가
를 합니다.
만들어진 페이로드 URL을 선택합니다.
하단 부분의 전달 시험 기능을 이용하여 gogs
와 Openshift 가 정상적으로 연동 되었는지 확인합니다.
테스트 결과 정상!
위와 같이 source를 update 하겠습니다.
OpenShift를 보면 자동으로 source update를 확인하고 update version으로 build를 시작했습니다.
위와 같이 자동으로 Build가 완료된 것을 볼 수 있습니다.
마치며
이번 포스팅은 OpenShift 내부에 gogs
를 이용하여 구성하였으나, OpenShift 가 외부 도메인으로 노출이 되어 있으면 Github
or Gitlab
등에 같은 방법으로 CI 를 구성 할 수 있습니다.