Jenkins 설치하기
목차
Jenkins 도입 목적
- 자동화된 빌드 및 테스트
- 지속적 통합(Continuous Integration, CI)과 배포(Continuous Deployment, CD) 지원
이를 통해 소프트웨어 개발과 배포의 효율성과 품질을 향상 시키기 위함
Jenkins 설치 방법
Java 설치
1
2
3
sudo apt update
sudo apt install fontconfig openjdk-21-jre
java -version
LTS 버전으로 Jenkins 설치
1
2
3
4
5
6
7
8
9
sudo wget -O /etc/apt/keyrings/jenkins-keyring.asc \
https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key
echo "deb [signed-by=/etc/apt/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
systemd 설정
1
2
3
4
5
sudo systemctl daemon-reload
sudo systemctl enable jenkins
sudo systemctl start jenkins
sudo systemctl status jenkins
journalctl -u jenkins -f
Jenkins 포트 변경 방법
Jenkins의 기본 포트번호는 8080이다.
하지만 이전에 설치한 airflow-webserver가 8080를 이미 사용하고 있기 때문에 Jenkins의 포트 번호 변경이 필요했다.
sudo vi /usr/lib/systemd/system/jenkins.service
에서 Environment="JENKINS_PORT=8081"
로 수정한다.
그 이후 sudo systemctl daemon-reload
하고 sudo systemctl restart jenkins
하도록 한다.
Jenkins 접속
URL을 통해서 Jenkins에 접속하면 비밀번호를 입력해야한다.
비밀번호는 sudo vi /var/lib/jenkins/secrets/initialAdminPassword
에서 확인할 수 있다.
기본 플러그인을 선택해서 설치하였고 이후에 이렇게 Admin 계정을 생성하면 된다.
그럼 Jenkins 설치는 완료되었다.
Jenkins Nodes 설정
Jenkins를 설치하면 기본적으로 “built-in node”에서 바로 빌드를 실행할 수 있습니다.
하지만 2가지 보안 위험을 내포하게 됩니다.
master가 빌드 실행도 담당
외부에서 가져온 코드를 실행할 경우 Jenkins의 핵심 시스템에서 바로 실행됩니다.
이로 인해 악의적인 스크립트가 Jenkins 서버 자체를 손상시킬 수 있습니다.보안 경계가 없다
빌드 도중 사용하는 플러그인, 쉘 스크립트, 환경 변수 등이 컨트롤러와 동일한 머신에서 돌아가기 때문에 시스템 권한으로 악성 명령을 실행할 위험이 있습니다.
그래서 Node를 설정하는것이 좋습니다. http://xxx.xxxx.xxx.xxx:port/computer/
로 접근하면 Node를 생성할 수 있습니다.
Remote root directory는 /home/ubuntu/jenkins-agent
로 입력한 다음 서버에서 mkdir -p /home/ubuntu/jenkins-agent
로 만들었다.
이후에 chown -R ubuntu:ubuntu /home/ubuntu/jenkins-agent
로 권한을 부여했다.
그 다음 다시 web으로 돌아와서 save 버튼을 클릭하면 노드가 생긴다.
노드를 다시 클릭해보면 Run from agent command line: (Unix)
이런 내용을 확인할 수 있다.
1
2
curl -sO http://xxx.xxxx.xxx.xxx:port/jnlpJars/agent.jar
java -jar agent.jar -url http://xxx.xxxx.xxx.xxx:port/ -secret xxxxxx -name {node_name} -webSocket -workDir {workDir}
이거를 systemd에 등록하면 된다. sudo vi /etc/systemd/system/jenkins-agent.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[Unit]
Description=Jenkins Agent
After=network.target
[Service]
User=ubuntu
WorkingDirectory=/home/ubuntu/jenkins-agent
ExecStart=/usr/bin/java -jar /home/ubuntu/jenkins-agent/agent.jar \
-url http://xxx.xxxx.xxx.xxx:port/ \
-secret {secret} \
-name "jenkins-agent" \
-webSocket \
-workDir "/home/ubuntu/jenkins-agent"
Restart=always
[Install]
WantedBy=multi-user.target
이후에 아래 단계를 실행한다.
1
2
3
4
5
sudo systemctl daemon-reload
sudo systemctl enable jenkins-agent
sudo systemctl start jenkins-agent
sudo systemctl status jenkins-agent
journalctl -u jenkins-agent -f
이 후 web에서 새로고침을 하면 node가 정상적으로 실행되고 있는 것을 확인할 수 있다.
다음에는 Jenkins에서 pipeline을 만드는 것을 작성하겠다.