Opendocs Logo

[Setting | Ubuntu] CI / CD 환경 구축하기 (1)

CI / CD 환경을 구축하기 위한 1단계 젠킨스 설정


> 작성일 : 2024-12-26
> OS : Ubuntu 22.04.5 LTS
> Jeknins : v2.479.2

젠킨스 설치 후 진행 - Link



<1> Jenkins 계정에 권한 추가

컨테이너에서 Jenkins 계정에 root권한을 부여

# 컨테이너 접속
sudo docker exec -it jenkins_sock /bin/bash
# 업데이트 & sudo 설치
apt-get update
apt-get install -y sudo
# 권한부여
echo 'jenkins ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers



<2> 컨테이너 내부에 Docker 설치

Docker Image로 만들기 위함

# 컨테이너 접속
sudo docker exec -it jenkins_sock /bin/bash
# 기존 설치된 패키지가 있다면 제거
apt-get remove docker docker-engine docker.io containerd runc
# 업데이트
apt-get update
# 설치
apt-get install \
 ca-certificates \
 curl \
 gnupg \
 lsb-release
mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
 "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
 $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 젠킨스 컨테이너에서도 docker 명령을 수행할 수 있게 됨



<3> 컨테이너 내부에 Private Registry 설정

내부 배포용으로 Private Registry 사용하므로 보안예외 처리함

apt-get update
apt-get install vim
vi /etc/docker/daemon.json
# Docker Private Registry 주소 추가
{
  "insecure-registries": ["192.168.123.201:5001", "127.0.0.1:5001"]
}
# 컨테이너 종료 (Ctrl + p, Ctrl + q)
# docker 재시작
systemctl restart docker



<4> 컨테이너 내부에서 배포 대상서버로의 키 발행 및 설정

젠킨스에서 배포 대상서버의 스크립트를 실행하기 위함

# Case 1. Pem 파일로 설정 (ex. AWS)
# - 키파일 복사
scp -i opendocs.pem ./*.pem ubuntu@{targetIP}:/home/ubuntu
# - jenkins 컨테이너 > 대상서버로의 접속 허용
ssh -i ../../key/sikpa.pem ubuntu@172.24.141.135
# Case 2. 직접 키발행 및 대상서버 세팅
# - jenkins 컨테이너 접근
sudo docker exec -u 0 -it jenkins_sock /bin/bash
# - 키발행
cd ~
ssh-keygen -t rsa
# - 키파일 압축 & 복사
tar zcvf /var/jenkins_home/sshkey.tar.gz ./.ssh
# - Ctrl + p, Ctrl + q 로 컨테이너 나가기
sudo su
cd /home/opendocs/jenkins
# - SCP로 대상서버에 키전송
scp ./sshKey.tar.gz {ID}@{targetIP}:/home/{ID}
# - 대상서버에서 세팅
sudo su
cd ~
tar zxvf sshkey.tar.gz
cat ./.ssh/id_rsa.pub >> ../jenkins/.ssh/authorized_keys
chown -R jenkins:jenkins /home/jenkins/.ssh
chmod 700 ../jenkins/.ssh
chmod 600 ../jenkins/.ssh/id_rsa
chmod 644 ../jenkins/.ssh/id_rsa.pub
chmod 644 ../jenkins/.ssh/authorized_keys
# - jenkins 컨테이너 접근 > 대상서버로의 접속 허용
sudo docker exec -u 0 -it jenkins_sock /bin/bash
cd ~
ssh jenkins@{targetIP} -p 22



<5> Git 관련 플러그인 설치

# Jenkins 웹 접속

IMG01

# Jenkins 관리 > Plugins > Available plugins 메뉴에서 아래 플러그인 검색하여 설치
Generic Webhook Trigger
GitHub Integration



<6> GitHub AccessToken 생성

# Github 웹 접속

IMG02

Setting > Tokens (classic) > Generate new token (classic)

IMG03

Note : JenkinsAccess
Expiration : No expiration
Select scopes : repo



<7> GitHub Credential 생성

# Jenkins 웹 접속

IMG04

# 화면 우측위 계정클릭
# Credentials

IMG05

# Stores from parent
# (global) 클릭

IMG06

# Add Credentials 클릭
# Kind : Username with password 선택
# Scope : Global
# Username : {Github계정}
# Password : {Github AccessToken}


Tags : DevOps, cicd, 깃허브 access token, 자동배포환경, 젠킨스 자동빌드, 깃허브 설정



AD
ⓒ Opendocs. All Rights Reserved.