[OpenShift] OpenShift 를 이용한 CI(Continuous Integration) 구성
OpenShift 4.5에서 gogs 저장소의 PHP 소스로 이미지를 빌드·배포하고, Webhook을 연동해 소스 변경 시 자동으로 빌드되는 CI를 구성하는 방법을 소개합니다.
요약
- OpenShift에 gogs 저장소 주소를 입력하고 Builder로 PHP를 선택하면 소스로 이미지를 빌드해 앱을 배포할 수 있습니다.
- 소스를 수정한 뒤
Start-Build를 선택하면 수동으로 새 버전을 빌드하고 배포할 수 있습니다. - build config의 Webhook URL을 gogs 저장소 Webhook에 등록하면 소스 변경 시 OpenShift가 자동으로 빌드를 시작합니다.
테스트 환경 OpenShift 4.5
[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 를 구성 할 수 있습니다.
자주 묻는 질문
OpenShift에서 Git 소스가 바뀌면 자동으로 빌드하려면 어떻게 하나요?
Build 메뉴의 build config에서 Webhook의 Copy URL with Secret을 복사해 Git 저장소 Webhook의 페이로드 URL로 등록하면 됩니다. 이후 소스가 update되면 OpenShift가 이를 감지해 자동으로 build를 시작합니다.
gogs Webhook과 OpenShift 연동이 잘 됐는지 어떻게 확인하나요?
gogs에서 만든 Webhook의 페이로드 URL을 선택하고 하단의 전달 시험 기능으로 테스트하면 연동 여부를 확인할 수 있습니다.
gogs 대신 GitHub나 GitLab으로도 같은 CI를 구성할 수 있나요?
OpenShift가 외부 도메인으로 노출되어 있으면 GitHub나 GitLab에서도 같은 방법으로 CI를 구성할 수 있습니다.