- [실습] Jenkins & Dockerfile2024년 04월 20일
- yeongki0944
- 작성자
- 2024.04.20.:35
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
빌드 성공
다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)