[SCM/GIT] 폐쇄망/내부망 GitLab Jenkins CICD 파이프라인 구축

    728x90
    반응형

    GitLab

    What is GitLab?

    소프트웨어 개발과 관련된 다양한 기능을 제공하는 웹 기반의 DevOps 플랫폼

    Git을 사용하는 버전 관리 시스템을 기반

    소스 코드 관리, CI/CD, 프로젝트 관리, 코드 리뷰, 이슈 추적, 보안 스캔 등 기능을 제공


    Install GitLab

    폐쇄망 GitLab 설치

    root계정을 사용해야한다

    Linux버전에 맞게 설치파일을 준비한다

     

    #yum명령어를 사용해 GitLab을 설치
    [root@]$ yum install gitlab-ce-16.10.6-ce.0.el9.x86_64

     

    #GitLab의 접속정보를 수정
    [root@]$ vi /etc/gitlab/gitlab.rb
    [root@]$ external_url '접속URL:PORT' // 포트도 같이 써준다

     

    #수정된 접속정보의 설정을 저장하고 재기동한다.
    [root@]$ gitlabctl reconfigure // 설정 저장 및 재기동
    [root@]$ gitlab-ctl reconfigure // 설정 저장 및 재기동(버전에 따라 명령어가 다르다)

     

    GitLab이 정상적으로 설치가 되었는지 확인한다

    Url External_url
    ID root
    PW /etc/gitlab/initial_root_password 에서 확인


    Jenkins

    What is Jenkins?

    오픈 소스 자동화 서버. 소프트웨어 개발에서 CI/CD 프로세스를 자동화하는 데 사용됨

    유연성과 플러그인 시스템 덕분에 많은 기업과 개발 팀에서 널리 사용되고 있음


    Install Jenkins

    폐쇄망 Jenkins 설치

    WAS계정 또는 빌드 및 배포시 사용하는 계정과 Jenkins설치 계정이 다르면 권한문제가 발생하므로 같은 계정 또는 root계정을 사용하도록 한다

     

    #wget 명령어를 사용해 jenkins.repo라는 이름으로 설치파일 다운로드
    [root@]$ sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

     

    #rpm 명령어를 사용해 Jenkins 저장소의 공개 키 파일을 import
    [root@]$ sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key

     

    #yum 명령어를 사용해 Jenkins 설치
    [root@]$ yum install jenkins

     

    Jenkins가 정상적으로 설치되었는지 확인한다


    Jenkins Plugin Install

    폐쇄망 Jenkins Plugin 설치

    Jenkins 플러그인은 외부 인터넷이 되는 PC 또는 서버에서 플러그인을 설치한 후, 해당 파일을 반입해야한다

     

    필요한 플러그인을 설치한다

     

     

    $JENKINS_HOME/plugins에 설치된 플러그인 파일을 폐쇄망의 JENKINS_HOME/plugins로 옮긴 후 Jenkins를 재기동한다

    #Jenkins 플러그인 설치파일경로
    [root@]$ pwd
    /home/user/jenkins/jenkins-home/plugins
    [root@]$ ll
    total 100816
    drwxr-xr-x. 4 root root       56 May 30 16:24 ant
    -rw-r--r--. 1 root root    84632 May 30 16:24 ant.hpi
    drwxr-xr-x. 4 root root       56 May 30 16:24 antisamy-markup-formatter
    -rw-r--r--. 1 root root   244008 May 30 16:24 antisamy-markup-formatter.hpi
    drwxr-xr-x. 4 root root       56 May 30 16:24 apache-httpcomponents-client-4-api
    -rw-r--r--. 1 root root  1774757 May 30 16:24 apache-httpcomponents-client-4-api.hpi
    drwxr-xr-x. 6 root root       77 May 30 16:24 bootstrap5-api
    -rw-r--r--. 1 root root   746529 May 30 16:24 bootstrap5-api.hpi
    drwxr-xr-x. 4 root root       56 May 30 16:24 bouncycastle-api
    -rw-r--r--. 1 root root  8920882 May 30 16:24 bouncycastle-api.hpi

     

    폐쇄망 Jenkins에 플러그인이 정상적으로 설치가 되었는지 확인한다


    GitLab Access Token 발급

    Whiat is GitLab Access Token?

    GitLab API에 접근하거나 GitLab 에서 작업을 수행하기 위해 사용하는 인증 수단이다
    토큰을 발급해 GitLab Repository Push를 트리거로 설정해 빌드 및 배포를 실행한다

     

    토큰을 발급한다

    계정 설정 > Preferences > Access Tokens > Add New Token

     

    GitLab과 Jenkins가 같은 서버에 존재할 경우, Outbound를 설정해준다

    127.0.0.1
    1:0:0:0:0:0:0:1
    127.0.0.0/8
    1:0:0:0:0:0:0:0/124
    [1:0:0:0:0:0:0:1]:8080
    127.0.0.1:8080

     

    Jenkins에 GitLab 커넥션을 생성한다

    Jenkins관리 > System > GitLab > Add Credentials


    Jenkins 빌드 프로젝트 생성

    What is Jenkins Project?

    Jenkins에서 관리되는 작업 단위를 말하며, 특정 소스 코드의 빌드 및 배포 작업을 정의합니다. 일반적으로 Git 리포지토리와 연결되어있다

     

    빌드 프로젝트를 생성한다

    새로운 Item > Freestyle Project

     

    미리 등록한 GitLab 커넥션을 추가한다

    등록된 Access Token으로 GitLab과 정상적으로 연동이 되었는지 확인
    General > GitLab Connection

     

     

    GitLab의 Repository Url 및 Branch명을 입력해 WorkSpace를 구성한다

     

    GitLab Repository에 접근하기 위한 인증정보를 입력한다

    소스 코드 관리 > Git > Repositories > Add > Jenkins

     

    빌드를 실행할 트리거를 설정한다

    webhook URL은 GitLab Webhook 설정을 위해 따로 보관해둔다

     

    GitLab의 WebHook과 연동할 Jenkins Project의 Sercret Token을 발급한다

    발급된 토큰은 GitLab Webhook 설정을 위해 따로 보관해둔다

    빌드 유발 > 고급 > Secret Token > Generate


    GitLab Webhook

    What is Webhook?

    GitLab에서 발생한 이벤트(commit, merge 등)를 외부 서비스로 전송하는 방법이다
    Webhook을 설정해 GitLab의 Repository에 형상이 수정되면 Jenkins의 빌드 프로젝트를 호출한다

     

    Webhook을 추가한다

    Settings > Webhooks > Add new webhook

     

    Webhook 테스트로 Jenkins 빌드 프로젝트와 연동이 정상적으로 되었는지 확인한다

     

    Jenkins에서 빌드가 실행되었는지 확인한다


    728x90
    반응형

    '형상관리' 카테고리의 다른 글

    [GitLab] Group Access Token  (0) 2024.11.11
    [Git] Svn To Git 마이그레이션 샘플소스  (1) 2024.10.10
    [SCM/GIT] GitHub Personal Access Token  (0) 2023.06.17

    댓글