jenkins를 AWS EC2(Ubuntu20.04) 설치하는 2가지 방식이 있다.
1) jenkins 자체 설치
2) Docker 이미지로 설치
✅개인적으로 Docker 이미지로 설치하는 방식을 추천한다!
Jenkins AWS EC2(Ubuntu20.04
) 설치
❗주의) 프리티어로 EC2인스턴스가 cpu 용량이 최소
small
로 맞추자. 기본용량으로 된micro
는 배포하다 중단될 가능성이 크다.
설치명령어가 업데이트를 하면서 명령어가 다소 바껴질 수 있으니 install은 가이드문서에서 실제 확인하는 게 좋다.
젠킨스 Ubuntu 설치 가이드 문서 https://www.jenkins.io/doc/book/installing/linux/#debianubuntu
sudo apt install openjdk-11-jdk
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee \
/usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update
sudo apt-get install jenkins
# jenkins 재시작
sudo service jenkins restart
# 정상여부 확인
sudo systemctl status jenkins
❗❓ 참고
실제 active(exited)
가 나와도 되니 이 화면처럼 안나와도 당황하지 말고 다음 진행상항을 따라주면 된다.
Docker로 이미 jenkins 이미지가 공식적으로 등록되어 있기 때문에, jenkins docker 이미지를 찾아서(dockerHub), run만 하면 아주 간단하게 설치와 실행이 동시에 진행시킬 수있다!
Ubuntu EC2에 Docker 설치는 이 블로그 참고 : https://velog.io/@mooh2jj/AWS-EC2-Docker-설치
# jenkins 실행
docker run \
--name jenkins-docker \
-p 9000:8080 -p 50000:50000 \
-e TZ=Asia/Seoul \
-v /home/jenkins:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
-u root \
-d \
jenkins/jenkins:lts
#753ebaa3695b jenkins/jenkins:lts "/usr/bin/tini -- /u…" 7 days ago Up 20 seconds 0.0.0.0:50000->50000/tcp, 0.0.0.0:9000->8080/tcp jenkins-docker
💥 docker not found
오류
@tmp/durable-61dd8bff/script.sh: 1: docker: not found
jenkins run시 이 volume 설정을 꼭 해줘야 위 오류가 생기지 않는다.
-v /var/run/docker.sock:/var/run/docker.sock
-v /usr/bin/docker:/usr/bin/docker
관련블로그: https://blog.riyenas.dev/jenkins_pipeline_docker_not_found/
or
$ vim docker-compose.yml
docker-compose.yaml
version: '3.7'
services:
jenkins:
build:
context: .
container_name: jenkins
user: root
privileged: true
ports:
- 9000:8080
- 50000:50000
volumes:
- ./jenkins_home:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
## -d : 백그라운드로 실행
$ docker-compose up -d
# jenkins 재시작
docker restart [컨테이너ID]
# jenkins 컨테이너 접속
docker exec -it [jenkins 컨테이너ID] bin/bash
# jenkins 컨테이너 log 확인
docker logs [jenkins 컨테이너ID]
Jenkins의 기본포트는 8080
이다.
8080 포트를 열기 위한 반드시 젠킨스가 설치된 AWS EC2 인스턴스 인바운드 규칙
에 8080포트를 열어줘야 한다.
URL 입력창에 {ec2 인스턴스 pulbic ipv4주소}:8080
주소를 입력하면, 드디어 jenkins 페이지가 열리고
패스워드 입력 창 페이지
가 나온다. 여기엔 젠킨스 패스워드
를 입력해야 한다고 한다.
젠킨스 패스워드는 cat
으로 아래 경로로 확인할 수 있다.
# 초기 패스워드 확인
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
# docker 이미지로 배포시 확인
docker exec jenkins-docker cat /var/jenkins_home/secrets/initialAdminPassword
그리고 패스워드를 입력하고 들어가보면 jenkins plugins install 화면이 나온다.
Install suggested plugins
를 눌러준다.
향후의 필요한 플러그인들은 수동으로 설치하는 것을 권장한다.
suggested plugins만 해도 5분 정도 걸리는 것 같다. 간단하게 커피나 한잔 하자.
install이 다되면 회원가입
과 로그인
창이 나온다. 대충 이정도 쓰면 된다.
Username: admin
Password: {pw}
Confirm password: {pw}
Full name: admin
E-mail address: {본인 id}@gmail.com
짜잔! 젠킨스 홈페이지에 들어가진다.
### Jenkins sudo 명령 권한 부여(안해도 됨)
💥sudo: a terminal is required to read the password
오류
쉘에 입력된 명령에 sudo 명령을 젠킨스에서 시도하려면 권한
을 부여하지 않아 생기는 문제이다.
젠킨스 인스턴스에 가서
sudo vi /etc/sudoers
vi 에디터로 sudoers를 불러온다.
~~ 이 곳에 아래 내용을 기입하면 해결된다.
jenkins ALL=(ALL) NOPASSWD: ALL
~~
출처: https://cokes.tistory.com/121 [Cokes Blog]