Jenkins에 VirtualBox 가상머신을 이용하여 Docker 이미지 빌드를 위한 에이전트로 등록했다.
해당 방법은 다음 포스팅을 참고한다.
가상 머신에서 터미널을 종료하면 생성 된 프로세스가 종료 된다.
따라서 아래와 같이 연결이 다시 끊어진다는 문제가 발생한다.
해결 방법은 두 가지이다.
첫 번째는 터미널을 띄워 놓은 상태에서 가상 머신이 백그라운드로 동작하도록 종료하는 것이다.
아래 포스팅을 참고한다.
두 번째는 가상 머신에 해당 명령어를 서비스로 등록하는 방법이다.
서비스로 등록
아래 포스팅에서 터미널에서 실행한 에이전트 등록 명령어를 우분투의 서비스로 등록한다.
쉘 스크립트 작성
Jenkins의 에이전트 상태 페이지에 있는 명령어 실행을 위해 먼저 쉘 스크립트 파일을 생성한다.
나중에 해당 쉘 스크립트 파일을 서비스로 등록한다.
먼저 아래 명령으로 Bash 쉘 스크립트 파일을 생성한다.
$ gedit /home/dockerbuild/jenkins/agent.sh
그리고 아래 코드의 주석을 참고하여 각자의 환경에 맞게 수정한다.
상단에 bash 쉘 스크립트를 알려주는 부분이 있고, 아래 명령어는 Jenkins의 에이전트 상태 페이지에 있는 명령어이다.
#!/bin/bash
java -jar /home/dockerbuild/jenkins/agent.jar # jar 파일 전체 경로 지정
-jnlpUrl http://172.18.10.53:8080/computer/docker%2Dbuild01/jenkins-agent.jnlp # 주소 수정
-secret 17948adb51e7c3c35930a2e92db6fc84985b6d73a19d7500425b2305535ba441 # 키 값 수정
-workDir "/home/dockerbuild/agent"
생성한 쉘 스크립트 파일에 실행 권한을 부여한다.
$ chmod 755 /home/dockerbuild/jenkis/agent.sh
다음과 같이 실행 권한이 부여되었다.
서비스로 등록하기
아래 명령을 수행하여 서비스 파일을 생성한다. 시스템 설정을 변경하기 때문에 sudo 권한으로 실행한다.
$ sudo vi /etc/systemd/system/jenkins-agent.service
우분투의 서비스 설정 파일의 기본 템플릿은 다음과 같다. 주석을 참고한다.
[Unit]
Description=*** ****** Service // 서비스 제목 또는 설명
After=network.target // network가 커널에서 로드 된 이후
[Service]
ExecStart=/path/to/exec/start // 실행하고자 하는 파일 경로
WorkingDirectory=/your/working/dir // 실행하고자 하는 작업 디렉토리
User=username
[Install]
WantedBy=multi-user.target
위의 템플릿을 이용하여 작성한 서비스 실행 코드는 다음과 같다.
[Unit]
Description=Jenkins Agent Service
After=network.target
[Service]
User=dockerbuild
ExecStart=/home/dockerbuild/jenkins/agent.sh
WorkingDirectory=/home/dockerbuild/jenkins
[Install]
WantedBy=multi-user.target
파일을 저장하고 편집기를 종료한다.
그리고 아래 명령으로 실행 권한을 부여한다.
$ sudo chmod 755 /etc/systemd/system/jenkins-agent.service
아래 명령으로 서비스를 실행한다.
$ sudo systemctl daemon-reload # 서비스 목록 다시 읽기
$ sudo systemctl enable jenkins-agent # 서비스 활성화
$ sudo systemctl start jenkins-agent # 서비스 실행
서비스가 실행되면 아래 명령으로 서비스 실행 상태를 확인한다.
$ sudo systemctl status jenkins-agent
정상적으로 실행되면 아래와 같이 실행되고 있는 것을 확인할 수 있다.
만약 오류가 발생한다면 아래 로그 부분에 존재하는 오류 메시지를 참고하여 서비스 설정을 수정한다.
서비스 설정을 수정한 경우 daemon-reload, enable, start 명령을 순서대로 다시 실행한다.
서비스를 재시작하려면 아래 명령을 실행한다.
$ sudo systemctl restart jenkins-agent
설정 저장
연결 상태 확인
서비스가 정상적으로 동작하면 Jenkins의 에이전트 상태 페이지에서 연결 상태를 확인한다.
정상적으로 연결 된 것을 확인할 수 있다.
스냅샷 생성
설정이 완료되었으므로 가상 머신에서 스냅샷을 생성한다.
이후 설정이 꼬이거나 불필요한 파일이 많이 쌓여 초기화가 필요할 때 유용하게 활용 가능하다.
'::: IT인터넷 :::' 카테고리의 다른 글
Jenkins에 Docker 이미지 빌드 파이프라인 구성 (0) | 2022.02.07 |
---|---|
Jenkins의 Docker 빌드 테스트에 사용할 예제 생성 (0) | 2022.02.03 |
Jenkins에 Docker 이미지 빌드 에이전트 연결하기 (0) | 2022.01.27 |
VirtualBox 가상 환경을 OVA 파일로 내보내기와 가져오기 (59) | 2022.01.24 |
우분투 가상 환경으로 Docker 빌드 에이전트 만들기 (60) | 2022.01.20 |