1. Jenkins 설치
해당 실습은 Docker로 jenkins를 설치하는 방식으로 진행했습니다.
#!/bin/bash
# Update package index and install required packages for Docker
sudo yum update -y
sudo yum install -y tree
sudo yum install -y docker
# Start Docker service
sudo service docker start
# Add the current user to the docker group
sudo usermod -aG docker root
sudo usermod -aG docker ec2-user
# Restart Docker service to apply changes
sudo service docker restart
sudo docker run -d \
-p 8888:8080 \
-v ~/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
--name jenkins \
-u root \
jenkins/jenkins:lts
# Jenkins 주소 확인
curl -s ipinfo.io/ip | awk '{ print "jenkins = http://"$1":8888" }'
#docker exec <CONTAINER_NAME> cat /var/jenkins_home/secrets/initialAdminPassword
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
Jenkins 웹사이트 - JDK 세팅
# jenkins:lts의 java버전, 설치경로, JAVA_HOME 확인
docker exec jenkins java -version
docker exec jenkins which java
docker exec jenkins /bin/bash -c 'echo $JAVA_HOME'
- 첫번째 Item(Project) 생성
- 새로운 Item 클릭 → Name : First-Project , Freestyle project ⇒ 하단 OK 클릭
Build Steps → Add build step ⇒ Execute shell 클릭
echo "Aws Workshop Study"
java -version
whoami
touch hello.txt
- 지금 빌드 클릭
2. Jenkins SCM - Git 연동
Github > https://github.com/gasida/aews-cicd.git 포크
Jenkins > Item > Freestyle 프로젝트 생성
Freestyle 프로젝트 > Configure > General > This project is parameterized
String Parameter
- 빌드 매개변수 : String
- 변수명(VERSION), Default Vault(v1.0.0)
- 변수명(NICK), Default Vault(<자신의 계정명>)
SCM > Git
- Repo URL : https://github.com/<자신의 계정명>/aews-cicd
- Branch : */main
- Additional Behaviours → Sparse Checkout paths (Path) : 1
Build Triggers
- 빌드 유발 : Poll SCM (* * * * *)
Build Steps
- Build Steps : Execute shell
cd /var/lib/jenkins/myweb2
rm -rf Dockerfile
wget <https://raw.githubusercontent.com/$NICK/aews-cicd/main/1/Dockerfile>
- Add build Steps : Execute shell
cd /var/lib/jenkins/myweb2
docker build -t myweb:$VERSION .
docker run -d -p 80:80 --rm --name myweb myweb:$VERSION
Github - 소스코드 수정
Jenkins #1 빌드 - 실패
원인 - 폴더가 없는데 cd로 이동하다 발생한 에러
Jenkins #2 빌드 - 실패
도커로 설치된 Jenkins에 wget이 설치되지 않아서 발생한 에러
- curl 명령어로 변경, docker image 수정, docker exec로 직접 설치
docker exec -it jeknins /bin/bash
apt-get update
apt-get install -y wget
# docker ce도 설치
apt-get update && \
apt-get -y install apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common && \
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && \
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
$(lsb_release -cs) \
stable" && \
apt-get update && \
apt-get -y install docker-ce
groupadd -f docker
usermod -aG docker jenkins
chown root:docker /var/run/docker.sock
Jenkins:lts 이미지에 wget, docker.sock 세팅하기
FROM jenkins/jenkins:lts
USER root
# Install wget
RUN apt-get update && \
apt-get install -y wget
# Install Docker
RUN apt-get update && \
apt-get -y install apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common && \
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey && apt-key add /tmp/dkey && \
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
$(lsb_release -cs) \
stable" && \
apt-get update && \
apt-get -y install docker-ce
# Add jenkins user to docker group
RUN groupadd -f docker && \
usermod -aG docker jenkins && \
chown root:docker /var/run/docker.sock
USER jenkins
docker build -t dudrl0944/myjenkins:1.0.0 .
docker push dudrl0944/myjenkins:1.0.0
빌드 성공