QA 중니어 Log
[QA] 웹 서비스 자동화 Pipeline 구축 2 - 대상 서버에 패키지 다운로드 및 설치 본문
지난 글에서 Jenkins를 설치해봤다.
이번 글에서는 아래 Pipeline 중, 패키지 다운로드 및 업데이트 부분을 하려고 한다!

원래는 GitLab Runner를 활용해서, 배포될 때마다 패키지를 자동으로 다운로드하고, 테스트하고, 결과까지 보고하려고 했다.
그런데 연구소에서 이미 매주 수요일마다 패키지를 빌드해서 내부 리포지토리에 올려두도록 설정해뒀다고 해서~
굳이 GitLab Runner를 거칠 필요 없이, 그냥 거기서 패키지를 바로 받아서 쓰면 될 것 같다! 더 간단해졌네! 😊
이전에 GitHub Action은 해봤는데 GitLab Runner 도 비슷한 것 같다. 얘도 어렵지 않음!
그러면 할 일은 아래와 같다. 파란색 부분은 이미 연구소에서 잘 해주셔서, 나는 Jenkins를 활용해 초록색 부분만 처리하면 된다.
GitLab > 내부 리포지토리에 파일 업로드 > Jenkins > 테스트 서버에 PKG 다운로드&업데이트 > Playwright > Report
해야할 일을 작게 나눠보니 지금 해야할 것은 'Jenkins 버튼을 누르면 사내 서버에서 특정 패키지를 리눅스 서버에 다운로드'
(Scheduler나 Update 등은 나중에 처리해도 되니까 가장 핵심이 되는 부분들을 먼저 처리하면 편하다.)
Let's gooo !
이번 글의 목표
- Jenkins에서 버튼 클릭
- 내부 리포지토리에서 tar.gz 패키지 파일 다운로드
- 테스트 서버로 전송 및 설치
필요한 작업
- Jenkins Job (Pipeline)
- Shell Script (패키지 압축 해제 및 웹 서비스 정지, 설치, 확인)
- 대상 서버 접근을 위한 SSH Key 인증 (비밀번호 없이 접속)
> 비밀번호가 있으면 로그에 비밀번호가 노출될 수 있어 보안상 SSH Key 인증이 낫다고 판단

1. Jenkins Job 구성 (Pipeline)
[Pipeline Script 내용]
- PACKAGE_URL에 있는 파일을 Jenkins 서버의 /tmp 디렉토리로 다운로드
- Jenkins 서버는 /tmp 디렉토리 아래 파일을 테스트 서버의 /home/pkg로 전송
- 테스트 서버에서 새로운 패키지로 재설치
- 아래 내용은 예시로 간단하게 정리한 거고, 나는 내부 환경에 맞게 수정해서 사용했음! 각 환경에 맞게 구성하면 된다.
• 사내 리포지토리에서 최신 패키지 파일명 조회 및 다운로드
• HTTPS 인증서 무시 옵션 포함 (사내 리포지토리가 자체 인증서라서..)
• SSH 포트 지정(22번 포트를 사용하지 않는 경우) 등
pipeline {
agent any
environment {
TARGET_SERVER = '[테스트 서버 IP]'
SSH_PORT = [PORT 번호]
PACKAGE_URL = 'https://[내부 서버 URI 정보]/[파일명].tar.gz'
}
stages {
stage('패키지 다운로드 및 전송') {
steps {
sh """
wget ${env.PACKAGE_URL} -O /tmp/package.tar.gz
# SSH로 대상 서버에 전송
scp /tmp/package.tar.gz user@${env.TARGET_SERVER}:/home/pkg
# 테스트 서버에서 설치 명령 실행 (예시)
ssh user@${env.TARGET_SERVER} 'cd /tmp && tar -xzf package.tar.gz && cd package && ./install.sh'
"""
}
}
}
}
2. SSH 인증 설정 (Jenkins → 테스트 서버)
Jenkins 서버에서 대상 서버(테스트 서버)로 비밀번호 없이 SSH 접속하려면 아래 순서대로 하면 된다.
1) 테스트 서버 설정
- 대상 계정 생성 - 테스트 서버에 root 계정 로그인 후 jenkins 계정 생성 (계정 이름은 무관)
# jenkins 계정 생성
sudo adduser jenkins
# jenkins 계정 비밀번호 설정
passwd jenkins
2) Jenkins 서버 설정
- SSH 공개키 생성 및 테스트 서버에 등록
① Jenkins 유저로 전환
# Jenkins 유저로 전환
sudo su - jenkins
※ 유저 전환이 안될 경우 확인 및 해결 방법
# jenkins 계정 쉘 확인하기
grep jenkins /etc/passwd
- 마지막 부분이 /bin/false, /sbin/nologin 이라면 쉘이 없는 상태
- 아래 명령어로 쉘을 /bin/bash 등으로 바꿔야 su jenkins가 된다.
# 쉘 변경하기
sudo chsh -s /bin/bash jenkins
# 비밀번호 설정하기
sudo passwd jenkins
② SSH 키 생성 및 확인
# SSH 키 생성
ssh-keygen -t rsa -b 4096
- 이후 나오는 내용들은 엔터만 눌러 기본 경로에 생성하면 됨
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/jenkins/.ssh/id_rsa): [엔터]
Enter passphrase (empty for no passphrase): [엔터]
# SSH 키 확인
ls -l ~/.ssh
- id_rsa, id_rsa.pub 파일이 존재해야 함
③ 공개키를 테스트 서버로 복사
ssh-copy-id jenkins@[테스트 서버 IP]
- jenkins 계정 비밀번호를 입력하면 복사 완료
Number of key(s) added: 1
Now try logging into the machine...
④ 비밀번호 없이 접속 가능한지 확인
# jenkins 계정으로 테스트 서버에 ssh 접속
ssh jenkins@[테스트 서버 IP]
# 만약 ssh 포트가 22가 아닐 경우에는 -p 옵션으로 접속 가능
ssh jenkins@[테스트 서버 IP] -p [PORT]
3. Jenkins Item 추가
위 내용들을 이제 Jenkins에 적용해야겠죠?
① Jenkins 접속 > 좌측 상단의 '새로운 Item' 클릭

② Item 명을 입력하고 Pipeline 클릭

③ Pipeline Script 넣기
- General / Triggers / Pipeline / Advanced 순서로 각 설정들이 있음
- General에서는 설명 혹은 GitLab Connection 등 설정을 할 수 있음
- Triggers는 이벤트, 특정 요일, 시각, 코드 변경 등 작업을 어떤 조건에서 시작할지 정할 수 있음
- 우리는 Pipeline에서 script를 입력하면 된다.

4. Jenkins Job 실행하며 고쳐나가기 ..^^
- 이제 Jenkins Dashboard(Home)에 가면 내가 만든 Job이 생겼다!
- 오른쪽의 실행 버튼을 누르면 Pipeline Script가 실행된다.

- 시작 버튼을 누르면, Builds 아래 실행되고 있는 Job과 이전 기록들을 확인할 수 있다.
- 아래 수많은 실패를 거쳐.. 지금은 테스트 서버에 패키지 업데이트까지 잘 된다!

- 그리고 지금 실행 중인 Job(Builds)를 클릭하면 아래와 같이 실시간 콘솔로 결과 확인이 가능하다.
- 콘솔 내용들을 참고해서 잘못된 부분들을 고쳐나가면 된다.
- 나의 경우에는, 디렉토리 권한 설정 오류가 몇 차례 있었는데 콘솔 내용을 보고 모두 수정 완료✌️

- 모두 성공 !

웹 서비스 접속해서 버전을 확인해보니 패치가 잘 됐다 ㅎㅎ
이번 글의 목표 (완료!)
✔️ Jenkins에서 버튼 클릭
✔️ 내부 리포지토리에서 tar.gz 패키지 파일 다운로드
✔️ 테스트 서버로 전송 및 설치
이 다음은 Playwright 로그인 스크립트 만들기 & Jenkins와 연동하기 !
'QA' 카테고리의 다른 글
| [Ubuntu] 우분투 24.04 Realtek LAN 드라이버 변경 방법 (r8125) (0) | 2025.09.03 |
|---|---|
| [QA] 웹 서비스 자동화 Pipeline 구축 4 - 테스트 결과 보고서 (5) | 2025.07.30 |
| [QA] 웹 서비스 자동화 Pipeline 구축 3 - Playwright 설치 및 Jenkins에서 실행하기 (4) | 2025.07.29 |
| [Playwright] JavaScript, TypeScript 환경에서 Playwright 설치하기 (3) | 2025.07.25 |
| [QA] 웹 서비스 자동화 Pipeline 구축 1 - Jenkins 설치 (4) | 2025.07.23 |