반응형
젠킨스 설치
sudo apt update
sudo apt install -y openjdk-17-jdk curl vim nginx
# 설치 확인 (젠킨스는 자바가 필요함)
java -version
# GPG 키 추가 (Jenkins 패키지를 신뢰할 수 있도록 GPG 키를 등록합니다.)
curl -fsSL <https://pkg.jenkins.io/debian-stable/jenkins.io-2023.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 update
sudo apt install -y jenkins
# 설치 확인
jenkins --version
# 젠킨스 시작
sudo systemctl enable jenkins
sudo systemctl start jenkins
# 젠킨스 상태 확인
sudo systemctl status jenkins
젠킨스 접속 및 최초 세팅
http://<서버-IP>:8080
# 비밀번호 확인
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
좌측 Install Suggested plugins 추천 플러그인 설치
젠킨스 Credential 설정 (깃 정보 설정하기)
공개키 생성하기 (해당 작업을 통해 비밀번호 입력 없이 젠킨스 서버가 프로젝트 서버에 접속할 수 있다.)
# 젠킨스가 설치된 서버에서 아래 명령어 실행
sudo su - jenkins
ssh-keygen -t rsa -b 4096 -C "jenkins@jenkins-server"
# enter키를 통해 기본값으로 설치
ssh-copy-id [계정명]@[ip]
# 접근 확인
ssh [계정명]@[ip]
# 프로젝트 서버에 아래 명령어 실행 (git pull 비밀번호 입력 없이 하기 위함)
cd ~/[프로젝트 경로]
git config --global credential.helper store
git pull origin dev
system daemon 설정하기
[Unit]
Description=FastAPI system_admin_backend service
After=network.target
[Service]
User=[사용자계정]
WorkingDirectory=/home/test/src/test
ExecStart=/home/test/src/test/.venv/bin/uvicorn testapi.__init__:app \\
--host 127.0.0.1 \\
--port 8765
Restart=always
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target
sudo systemctl enable fastapi
sudo systemctl start fastapi
sudo systemctl stop fastapi
sudo systemctl status fastapi
sudo 명령어 비밀번호 없이 설정하기
sudo visudo
최하단에 아래와 같이 입력
[사용자계정] ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart fastapi.service, /usr/bin/systemctl status fastapi.service
젠킨스 Item 생성
프론트엔드 실행 명령어 작성
#!/bin/bash
# 1. 172.16.100.60 서버에 접속하여 프로젝트 디렉토리로 이동
ssh coraise@172.16.100.60 << 'EOF'
cd ~/src/system_admin_front
# 2. 최신 코드 가져오기
git stash
git pull origin dev --rebase
if ! git stash pop; then
echo "git stash pop 중 충돌이 발생했습니다. 수동으로 충돌을 해결한 후 다시 시도하세요."
exit 1
fi
# 3. 패키지 설치
npm install
# 4. 빌드 실행
npm run build
# 5. 서비스 재시작 (예: PM2 사용 시)
pm2 restart nuxt-app
EOF
백엔드 실행 명령어 작성
#!/bin/bash
# 1. 172.16.100.60 서버에 접속하여 프로젝트 디렉토리로 이동
ssh coraise@172.16.100.60 << 'EOF'
cd ~/src/system_admin_backend
# 2. 최신 코드 가져오기
git stash
git pull origin dev --rebase
if ! git stash pop; then
echo "git stash pop 중 충돌이 발생했습니다. 수동으로 충돌을 해결한 후 다시 시도하세요."
exit 1
fi
# 3. 라이브러리 설치 (sc/in은 virtualenv activate라고 가정)
source sc/in || exit 1
pip install -r requirements.txt || exit 1
# 4. DB 마이그레이션 적용
alembic upgrade head || exit 1
# 5. 기존 프로세스 종료 (run.sh 안에 uvicorn 등이 돌고 있다고 가정)
pkill -f run.sh || true
# 6. 백그라운드 실행
nohup sh run.sh > output.log 2>&1 &
EOF
<< 'EOF' → 아래 EOF 전까지 있는 명령어들을 원격 서버에서 실행
충돌날 경우
젠킨스 빌드 중 충돌이 발생하면, 서버를 실행시키지 못하고 에러가 발생한다.
서버에 들어가서 수동으로 해결해야 한다.
그러니까 충돌 안나게 브렌치 및 커밋 관리를 잘 해야한다.
반응형
'프로그래밍 일기 > Linux' 카테고리의 다른 글
ubuntu spring boot 배포 방법 ./gradlew (0) | 2024.07.30 |
---|---|
nginx에서 ssl 인증서 적용 (0) | 2024.07.22 |
AWS ubuntu 22.04 구축 및 nginx 설치 (0) | 2024.07.18 |
팀즈 커스텀앱 안드로이드에서 안되는 현상 해결 Teams Custom App not work android (0) | 2024.06.25 |
Mac Linux 파일 전송하기 (0) | 2024.05.16 |