



위의 방식은 sudo yum install jenkins 이 안되는데
키와 젠킨스, 이미지의 자바 버전이 안맞는 문제가 있다고 함.
sudo yum upgrade
sudo yum install java-17-amazon-corretto-devl -y
sudo alternatives --config java
번호 지정
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
sudo yum install jenkins -y
sudo systemctl enable jenkins # 부팅 시 자동 실행 설정
sudo systemctl start jenkins # Jenkins 실행
sudo systemctl status jenkins
rpm -qa | grep jenkins

PID 입력하면 됨. journalctl -xe | grep 12641

publicIP:8080 -> PW 는 저널리스트 검색했을 때 나오는 암호 입력 또는 아래 실행.


안되면 보안 그룹에 포트 추가 / jenkins running 여부 확인.






깃허브, publish over ssh, deploy to container, maven itegration
키와 보안 그룹 맞춰주기.

도커 서버의 public IPv4를 호스트네임에 추가, pem key 를 key 에 붙여넣기




Dockerfile 을 만든다.


pipeline {
agent none
tools {
maven "maven3.8.8"
}
stages {
stage('Maven Install') {
agent any
when {
expression { params.MAVEN_BUILD == true }
}
steps {
git branch: 'main', url: 'https://github.com/joneconsulting/cicd-web-project'
sh 'mvn clean compile package -DskipTests=true'
}
}
stage('Docker Image Build') {
agent any
when {
expression { params.DOCKER_BUILD == true }
}
steps {
script {
if (params.DOCKER_IMAGE_TAG != "") {
echo "[docker image tag is not null]"
imageTag = params.DOCKER_IMAGE_TAG
} else {
echo "[docker image tag is null]"
imageTag = env.BUILD_NUMBER
}
}
// sh 'docker build -t edowon0623/cicd-web-project:$BUILD_NUMBER .'
// sh 'docker build -t edowon0623/cicd-web-project:' + imageTag + ' .'
// echo 'docker build -t edowon0623/cicd-web-project:build-' + imageTag + ' .'
sshPublisher(publishers: [
sshPublisherDesc(configName: 'toy-msa-docker',
transfers: [sshTransfer(
cleanRemote: false, excludes: '',
execCommand: 'docker build --tag hello-world:' + imageTag + ' -f Dockerfile . ',
execTimeout: 600000, flatten: false, makeEmptyDirs: false,
noDefaultExcludes: false, patternSeparator: '[, ]+',
remoteDirectory: '.', remoteDirectorySDF: false,
removePrefix: 'target',
sourceFiles: 'target/*.war')
],
usePromotionTimestamp: false,
useWorkspaceInPromotion: false,
verbose: false)
])
}
}
// stage('Docker Push') {
// agent any
// when {
// expression { params.DOCKER_PUSH == true }
// }
// steps {
// withDockerRegistry(credentialsId: 'harbor-user', url: 'https://192.168.0.41') {
// sh 'docker push 192.168.0.41/devops/cicd-web-project:$BUILD_NUMBER'
// }
// }
// }
}
}






docker pull [이미지uri] -> aws configure 및 private 인 경우엔 레포 권한 있으면 가능

ssh 로 해도 됨.

도커서버에서 진행









네트워킹에서 VPC (우선 디폴트로 두기), 보안 그룹 확인, 퍼블릭 IP 켜짐 설정.

퍼블릭 IP 로 접근 (클러스터> 태스크> 서비스 클릭 > 구성)


네크워킹 확인 후 로드밸런싱 사용 체크,
네크워킹과 로드밸런싱의 VPC 일치시켜야 함.
ALB 와 NLB 중 ALB로 체크 (설명은 OSI 7계층 참고)
새 로드밸런서 생성 (ECS 에서 생성 후 지정 가능)

/hello-world/ 는 /actuator/status 와 같은 /catalog-service/health-check라고 보면 됨.

로드밸런서 > 보안 > 인바운드 규칙에 포트 있어야함 (8080)