Jenkins란
- 모든 언어의 조합과 소스 코드 레포지토리에 대한 CI/CD 환경을 구축하기 위한 도구
- 빌드: 서버에 올릴 수 있는 상태로 만드는 것
- 배포: 서버에 올려 사용자가 사용할 수 있게 하는 것
- 기능: 컴파일 오류 검출, 자동화 테스트 수행, 정적 코드 분석으로 인한 코딩 규약 준수 여부 체크, 성능 변화 감시 등..
EC2에 Jenkins 설치
- EC2 생성 후 서버 접속(ssh, TCP 8080 뚫어주기)
- 아래의 스크립트 실행
#!/bin/bash
# this script is only tested on ubuntu focal 20.04 (LTS)
# install docker
sudo apt-get update
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
systemctl enable docker
systemctl start docker
usermod -aG docker ubuntu
# run jenkins
mkdir -p /var/jenkins_home
chown -R 1000:1000 /var/jenkins_home/
docker run -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -d --name jenkins jenkins/jenkins:lts
# show endpoint
echo 'Jenkins installed'
echo 'You should now be able to access jenkins at: http://'$(curl -4 -s ifconfig.co)':8080'
- http://<EC2-ip>:8080 접속해서 Jenkins 들어가면 됨...
Jenkins 프로젝트(nodejs) 빌드 테스트
- 원하는 프로젝트 이름 설정
- 소스코드 추가 - git 주소 적으면 됨
- 빌드 스텝 추가
- NodeJS 설정을 위한 Jenkins 관리 - Tools 설정
- 빌드 환경 설정
- 지금 빌드 클릭
[확인]
Docker로 애플리케이션 배포
- Jenkins Plugin: CloudBees Docker Build and Publish 설치
- Jenkins Docker: Jenkins 컨테이너가 Docker API와 통신할 수 있는 Docker socket에 접근할 수 있게..
- 이미 Jenkins는 Docker container로 돌고 있고, 이 컨테이너 안에서 또 Docker를 올려 명령어 수행 해야하니까..
- 참고: https://github.com/wardviaene/jenkins-docker
# Dockerfile
FROM jenkins/jenkins:lts
USER root
RUN mkdir -p /tmp/download && \
curl -L https://download.docker.com/linux/static/stable/x86_64/docker-18.03.1-ce.tgz | tar -xz -C /tmp/download && \
rm -rf /tmp/download/docker/dockerd && \
mv /tmp/download/docker/docker* /usr/local/bin/ && \
rm -rf /tmp/download && \
groupadd -g <998> docker && \
usermod -aG staff,docker jenkins
USER jenkins
# groupadd 의 숫자는 cat /etc/group | grep docker 로 확인
# git clone
cd jenkins-docker
docker build -t jenkins-docker .
docker stop jenkins # 기존의 jenkins 종료
docker rm jenkins
docker run -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --name jenkins -d jenkins-docker
docker exec -it jenkins bash
- docker repository 생성
- build step 추가
- 지금 빌드 클릭
[해당 환경 테스트]
docker pull realyun99/docker-nodejs-demo
docker run -p 3000:3000 -d --name my-nodejs-app realyun99/docker-nodejs-demo
# EC2 보안그룹 포트도 열어주기!(3000)
'Computer Science > DevOps' 카테고리의 다른 글
[Jenkins] 다양한 플러그인 활용 (0) | 2023.07.24 |
---|---|
[Jenkins] Jenkins Pipeline 구축 (0) | 2023.07.03 |
[OS] OS 모음집 (0) | 2021.08.12 |
[CI/CD] Tool (0) | 2021.08.11 |
[CI/CD] 정의 (0) | 2021.08.11 |