반응형
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 웹 접속
# Jenkins 관리 > Plugins > Available plugins 메뉴에서 아래 플러그인 검색하여 설치
Generic Webhook Trigger
GitHub Integration
<6> GitHub AccessToken 생성
# Github 웹 접속
Setting > Tokens (classic) > Generate new token (classic)
Note : JenkinsAccess
Expiration : No expiration
Select scopes : repo
<7> GitHub Credential 생성
# Jenkins 웹 접속
# 화면 우측위 계정클릭
# Credentials
# Stores from parent
# (global) 클릭
# Add Credentials 클릭
# Kind : Username with password 선택
# Scope : Global
# Username : {Github계정}
# Password : {Github AccessToken}
반응형
'Setting' 카테고리의 다른 글
[Setting | Ubuntu] CI / CD 환경 구축하기 (3) (0) | 2025.01.01 |
---|---|
[Setting | Ubuntu] CI / CD 환경 구축하기 (2) (0) | 2024.12.27 |
[Setting | Ubuntu] Docker - Jenkins 설치 (0) | 2024.12.26 |
[Setting | Windows 11] 개발툴 설치 (0) | 2024.12.25 |
[Setting | Windows11] Docker 설치 (0) | 2024.12.25 |