[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 를 구성 할 수 있습니다.

chhanz's profile image

chhanz

2020-10-16

Read more posts by this author