1. EC2 인스턴스 생성
- Amazon Linux 프리티어 환경
- SSD 30GB [ 프리티어 제한 ]
- 보안 그룹으로 제한 [ SSH 접근은 내 IP만 가능하게 적용 ]
2. EC2 SSH 접속
Key-Pair(*.pem) 파일 권한 변경
chmod 400 {파일 이름}.pem
pem 파일을 사용해 EC2에 접속
ssh -i "{파일 이름}.pem" {IAM유저}@{접속IP OR 접속URL}
3. Java 및 Jenkins 설치
sudo yum upgrade
# jenkins 저장소를 yum에 다운로드
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.key
# 아마존 자바 17버전[팀 자바 버전] 설치 [ 11버전 이상만 쓰면 문제 X ]
sudo yum install java-17-amazon-corretto.x86_64
# jenkins 설치
sudo yum install jenkins
# jenkins 시작
sudo service jenkins start
4. EC2 보안정책 변경
Jenkins 기본포트 8080을 TCP 프로토콜로 보안정책에 추가
5. 브라우저에서 Jenkins 접속 확인 및 Jenkins Unlock
Unlock 비밀번호 확인
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
AWS EC2의 URL의 8080포트로 접속 및 비밀번호로 입력
6. Git 설치
sudo yum install git
7. EC2 jenkins 유저 sudo 권한 부여
이유
jenkins 유저 /var/lib/jenkins/workspace 접근을 위해 sudo 권한 부여
이슈
jenkins 유저에게 sudo 권한을 부여하는 것이 옳은지 고민하고 다른 방법이 있는지 고민이 필요
sudo 권한 파일 접근
sudo visudo
jenkins 권한 부여
root ALL=(ALL) ALL
jenkins ALL=(ALL) NOPASSWD: ALL (추가해야 하는 부분)
8. Jenkins에 Git Credentials 설정
Git Token 발급
( Settings - Developer Settings - Personal access tokens - Tokens )
Jenkins에 Git Credentials 등록
( Dashboard - Jenkins 관리 - Credentials - Global Credentials - New Credentials)
Kind : Username with password 선택
Scope : Gobal 선택
Username : Git 아이디 입력
Password : 발급받은 Git Token 입력
ID : 임의의 값 입력 ( Git에서 Jenkins Credential로 전달하는 식별 값 )
9. AWS Credentials 등록
( Dashboard - Jenkins 관리 - Configure System )
Global Properties의 Environment variables에 AWS 정보 입력
- AWS_ACCESS_KEY_ID AWS_DEFAULT_REGION, AWS_SECRET_ACCESS_KEY
10. Jenkins에 배포 등록
build 단계
Repository URL : 가져올 Git URL 입력
Credentials : 등록해 놓은 Git Credentials 선택
Branches to build : 가져올 Branch 입력
Build Steps : Excute Shell 선택
./gradlew clean buildZip
upload 단계
Build Steps: Excute Shell 선택
aws s3 cp {EC2의 업로드할 파일 경로} {S3 업로드 경로} --region ap-northeast-2
deploy 단계
Build Steps : Excute Shell 선택
Version=$(date '+%Y-%m-%d_%H%M')
# ELB에 배포 버전 생성
aws elasticbeanstalk create-application-version --region ap-northeast-2 \
--application-name {ELB application 이름} --version-label $Version \
--source-bundle S3Bucket="{버킷 이름}",S3Key="{S3 파일 경로}"
# ELB에 Application 배포
aws elasticbeanstalk update-environment --region ap-northeast-2 \
--environment-name {ELB application env 이름} \
--version-label $Version
'프로젝트' 카테고리의 다른 글
[ Docker ] Docker hub를 사용해 Jar 파일 EC2에서 실행해보기 (0) | 2023.03.26 |
---|---|
[ AWS ] EC2에 Swap Memory 적용 (0) | 2023.03.05 |
[ 등산로 정보 웹 ] 시작하며.... (0) | 2022.11.13 |
[ 인생퍼즐 ] 백엔드 사용 언어 변경 (0) | 2022.11.07 |
[Side Project] 인생퍼즐하고 느낀점... (0) | 2022.07.31 |