티스토리 뷰
1. SSH Key 관리
1. SSH Key 생성
# jenkins를 container에 올렸기 때문에, 컨테이너로 접속
docker exec -it jenkins /bin/bash
# SSH Key 생성
ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa
2. public key 등록 및 확인
1. GitHub 서버
1. Settings - SSH and GPG keys - New SSH key - public key 등록
2. GitHub에 정상등록 되었는지 확인
# GitHub에 확인
ssh -T git@github.com
2. 배포 서버
# 공개키 등록
ssh-copy-id 사용자계정@아이피
# 접속 확인
ssh 사용자계정@아이피
3. private key 등록
Jenkins 관리 - Security - Credentials - Add Credentials
- Kind: SSH Username with private key
- ID: private key
- Private Key - Enter directly - Add: private key 등록
2. JDK 설치
- Jenkins 관리 - Plugins - Available plugins - Eclipse Temurin installer Plugin 설치
- Jenkins 관리 - Tools - JDK installations 등록
3. git push
1. docker-compose.yml
version: '3'
services:
onna:
build: .
container_name: onna
restart: always
ports:
- "80:8080"
volumes:
- ~/workspace/docker/onna:/otp/app/workspace
environment:
TZ: "Asia/Seoul"
2. Dockerfile
FROM eclipse-temurin:17.0.7_7-jdk
CMD ["java", "-jar", "/otp/app/workspace/src/ROOT.jar"]
3. jenkins.sh
#!/bin/bash
# 프로젝트 이름
JAR_NAME=`basename ./build/libs/*.jar .jar`
# 원격지 주소
REMOTE_ADDRESS="사용자이름@아이피"
# 원격지 deploy 폴더 이름
DEPLOY_FOLDER_NAME=`date "+%Y%m%d%H%M%S"`
# workspace 폴더 생성
ssh ${REMOTE_ADDRESS} mkdir -p "~/workspace/docker/${JAR_NAME}/src"
ssh ${REMOTE_ADDRESS} mkdir -p "~/workspace/docker/${JAR_NAME}/upload"
# deploy 폴더 생성
ssh ${REMOTE_ADDRESS} mkdir -p "~/workspace/deploy/${DEPLOY_FOLDER_NAME}"
# deploy 파일 이동
scp ./build/libs/${JAR_NAME}.jar ./deploy/docker-compose.yml ./deploy/Dockerfile ${REMOTE_ADDRESS}:"~/workspace/deploy/${DEPLOY_FOLDER_NAME}"
# deploy 파일 복사
ssh ${REMOTE_ADDRESS} cp "~/workspace/deploy/${DEPLOY_FOLDER_NAME}/${JAR_NAME}.jar" "~/workspace/docker/${JAR_NAME}/src/ROOT.jar"
# docker
# docker image prune -a -f 미사용 이미지 삭제
ssh ${REMOTE_ADDRESS} docker stop ${JAR_NAME}
ssh ${REMOTE_ADDRESS} docker rm ${JAR_NAME}
ssh ${REMOTE_ADDRESS} docker compose -f "~/workspace/deploy/${DEPLOY_FOLDER_NAME}/docker-compose.yml" up -d
4. jenkins
1. 새로운 Item
2. General - GitHub project - Project url 등록
3. 소스 코드 관리 ( git )
- Repository URL: GitHub url 등록
- Credentials: 위에 등록한 Credentials 선택
- Branches to build: */main 변경
4. 빌드 유발
Poll SCM - Schedule: * * * * *
5. Build Steps
Execute shell
# 권한
chmod +x ./gradlew
chmod +x ./deploy/jenkins.sh
Invoke Gradle script
- Use Gradle Wrapper 선택
- Tasks: clean build -x test
Execute shell
# 배포 sh 실행
./deploy/jenkins.sh
'IT' 카테고리의 다른 글
docker vsftpd 설치 ( ftp ) (0) | 2023.08.13 |
---|---|
open jdk 설치 ( 윈도우 ) (0) | 2023.07.22 |
docker jenkins 설치 (0) | 2023.07.22 |
우분투(ubuntu) ufw 방화벽 설정 (0) | 2023.07.20 |
우분투(ubuntu) docker 설치 (0) | 2023.07.20 |