> 작성일 : 2024-12-26
> OS : Ubuntu 22.04.5 LTS
> Jeknins : v2.479.2
젠킨스 설치 후 진행 - Link
컨테이너에서 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
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 명령을 수행할 수 있게 됨
내부 배포용으로 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
젠킨스에서 배포 대상서버의 스크립트를 실행하기 위함
# 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
# Jenkins 웹 접속
# Jenkins 관리 > Plugins > Available plugins 메뉴에서 아래 플러그인 검색하여 설치
Generic Webhook Trigger
GitHub Integration
# Github 웹 접속
Setting > Tokens (classic) > Generate new token (classic)
Note : JenkinsAccess
Expiration : No expiration
Select scopes : repo
# Jenkins 웹 접속
# 화면 우측위 계정클릭
# Credentials
# Stores from parent
# (global) 클릭
# Add Credentials 클릭
# Kind : Username with password 선택
# Scope : Global
# Username : {Github계정}
# Password : {Github AccessToken}
Tags : DevOps, cicd, 깃허브 access token, 자동배포환경, 젠킨스 자동빌드, 깃허브 설정