아래 스펙의 jenkins를 설치하는것을 목적으로 합니다.
2. Install github authentication plugin
(미작성)
가이드는 Centos를 기준으로 작성합니다. Ubuntu나 기타 OS 사용자는 Reference 링크 참조하면 될 것 같습니다.
제 경우 GPU 가 필요한 job을 돌려야하기 때문에, nvidia-docker 까지 설치합니다.
yellow="\033[0;33m"
red="\033[0;31m"
nocolor="\033[0m"
function command_exists() {
command -v "$@" 1> /dev/null 2>&1
}
function check_gpu_exists() {
nvidia-smi 1> /dev/null 2>&1
}
### Main
if [[ "$(id -u)" -ne "0" ]]; then
echo -e "${red}[ERROR] install with root privilege.${nocolor}"
exit 1
fi
# Remove legacy docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# Remove pre-installed docker, nvidia-docker
yum remove docker -y \
docker-engine \
containerd.io \
docker-ce-cli \
nvidia-container-runtime
# Install dependencies
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
if check_gpu_exists; then
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | \
tee /etc/yum.repos.d/nvidia-docker.repo
yum install -y nvidia-docker2
sed -i '2i \ \"default-runtime\": \"nvidia\",' /etc/docker/daemon.json
else
yum install -y docker-ce
fi
# Replace <LINUX_USERNAME> with your username.
usermod -aG docker <LINUX_USERNAME>
# Start docker service on startup
systemctl enable docker.service
systemctl start docker
jenkins를 docker container로 구동합니다.
Jenkins image는 jenkinsci/blueocean:1.9.0
를 사용합니다.
사용가능한 tag list는 아래링크에서 확인가능합니다.
https://hub.docker.com/r/jenkins/jenkins/tags (official jenkins)
https://hub.docker.com/r/jenkinsci/blueocean/tags (official jenkins/blueocean)
아래의 <JENKINS_HOME>
부분을 본인이 jenkins home으로 사용하고싶은 경로로 지정합니다.
jenkins 는 jenkins home 경로에 Configurations, Installed Jenkins plugins,
Job 도중 생성되는 files(cloned source codes, build artifacts)를 저장합니다.
즉 Jenkins docker container 를 삭제, 재생성할때, 위의 경로에 이전에 사용하던 파일이 존재하면, 그 상태 그대로 복구가능합니다.
docker run -d --restart=always \
--name jenkins \
-p 80:8080 \
-u root \
-v <JENKINS_HOME>:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean:1.9.0
실행후 docker ps
로 실행여부 확인해줍니다.
참고: 이때 docker run 옵션에서 -v /var/run/docker.sock:/var/run/docker.sock
는 jenkins 내부에서 docker agent를 돌려야하는데, jenkins 이미지는 docker in docker가 구현되어있지않아서 내부에 docker container를 생성할수없습니다.
따라서 외부의 docker를 사용하기위해 docker.sock을 공유해줍니다.
ref: https://jenkins.io/doc/tutorials/build-a-python-app-with-pyinstaller/#run-jenkins-in-docker
docker logs jenkins
로 로그로 찍혀있는 password 복사, 입력합니다.docker logs -f jenkins
로 로그를 무중단으로 볼수있습니다.