서론
정적 웹페이지를 S3에서만 관리하다보니 버전관리가 안되고 최신버전이 유실되는 경우가 생겼다.
gitlab으로 버전관리를 하고 Jenkins를 통해 S3로 배포해보자.
※ gitlab, jenkins를 사용하는 중이라는 가정으로 시작
#1. S3 소스 다운로드
AWS 콘솔의 S3에서 폴더단위 다운로드는 현재까지 지원안되는 것으로 알고 있다.
S3 CLI은 설정만 해두면 명령어 한줄로 다운받을 수 있다.
[AWS] - AWS S3 CLI upload & download
#2. gitlab 빈 프로젝트 생성 후 clone
git clone git@gitlab.com:wr-nood/aws-s3-web.git
→ 다운받은 리소스 프로젝트에 붙여넣기 → push
#3. Jenkins plugin 설치
Dashboard → Jenkins 관리 → 플러그인 관리(Plugin Manager)
설치가능 탭에서 gitlab, s3 publisher를 검색하고 체크, 하단 버튼을 눌러 설치 및 재시작을 한다. |
|||
설치 화면에서 맨 하단에 체크박스를 체크해야 자동으로 재시작한다. | |||
만약 자동 재시작에 실패했으면 수동으로 재시작을 한다. |
#4. Amazon S3 profiles 정보 기입
플러그인 설치 후 Dashboard → Jenkins 관리 → 시스템 설정으로 이동하여 제일 하단으로 내려간다.
이 부분이 보이면 추가 버튼을 눌러준다. (해당 설정이 없으면 플러그인이 제대로 설치가 안된 것이다.) |
||||
Profile name : 사용자가 식별할 내용을 기입하면 된다. 현재 설지버전(0.12.1)에서는 하나의 AWS 계정 밖에 저장이 안되기때문에 큰 의미는 없는듯하다. Access key, Secret key : 백업해놓은 키셋이 없다면 AWS IAM에서 발급받아야된다. (하단 참고) Test Connection : 키 셋을 기입했으면 테스트해준다. |
||||
IAM 엑세스키 발급 : AWS console → IAM → 사용자 → 사용할 계정 → 보안자격증명 탭 → 액세스키 만들기 ※ Secret Access Key는 다시 확인할 수 없으니 확실히 백업해놔야함 |
#5. Jenkins project 생성 및 설정
5-1. 프로젝트 생성
- 첫번째 프리스타일 프로젝트로 생성 - 생성이 되면 자동으로 프로젝트 설정 페이지로 이동한다. |
5-2. 소스 코드 관리 탭
- 소스 코드 관리 탭에서 git 선택 - Repository URL : https git 주소 삽입 - Credentials : add 버튼 클릭 (하단에서 설명) - Branch Specifier : main 혹은 master 혹은 다른 branch name |
||||
- kind : username with password 선택 - username : gitlab 접속 id (깃렙 로그인 시) - password : gitlab 접속 pw - ID : Jenkins Credentials Provider가 Credential을 구별하기위한 고유 아이디 (입력하지않으면 자동생성함.) - Description : 사용자가 식별하기위한 내용 (짧고 명확하게 구분가능한 내용으로 삽입) * 혹시 오류가 난다면 ADGUARD같은 VPN 서비스를 꺼보자. |
||||
생성한 Credential로 gitlab과 연결이 온전하지않으면 이와같이 에러가 뜨며 연결이 온전하면 빨간 에러가 사라진다. |
5-3. 빌드 유발 탭
빌드 유발 탭에서 해당 라인 체크박스를 클릭하면 하단 같이 세부 내용이 펼쳐진다. ※ 빨간 밑줄친 URL저장 |
||||
다른건 건드릴 필요없고 고급 버튼을 클릭 |
||||
추가로 펼쳐진 세부 내용의 맨 하단에 가면 Secret token이 있는데 Generate 버튼을 눌러 토큰을 생성한다. 위 빨간줄 URL과 이 토큰을 한 곳에 잘 메모해두자.(밑에서 사용한다.) 빨간줄 URL이 아이디가 되고 시크릿토큰이 비밀번호가 되어서 gitlab으로 우리가 push를 하면 gitlab webhook이 이 젠킨스 프로젝트로 접속해 빌드를 유발하게 하는 것이다. |
5-4. 빌드 후 조치 탭
이제 마지막 설정이다. 이부분이 실질적으로 S3로 업로드하는 과정이다.
맨하단으로 내려와 빌드 후 조치 추가 버튼 클릭 | ||||
Publish artifacts to S3 Bucket 클릭 | ||||
S3 profile : 위 #4번에서 설정한 Amazon S3 profile을 선택해준다. Files to upload : 클릭 나머지는 특별히 건들게 없다. |
||||
Source : **/ 으로 하면 빌드한 내용 전체를 올리는 것. Exclude : 제외할 내용 ex) README.md Destination bucket : 버킷단위부터 하위 업로드할 경로까지 기입한다. 예를 들어 버킷 네임이 wr-nood라고 하고 하위 images 폴더 경로에 업로드할거면 wr-nood/images로 기입한다. 맨 끝에 /를 넣으면 새 폴더를 만들어 업로드하니 주의한다. Bucket Region : 리전을 선택한다. 서울은 'ap-northeast-2'이다. No upload on build failure : 빌드중에 문제가 생겻을시에는 업로드하지않겠다는 설정, 체크해준다. Server side encryption : 서버측 암호화 설정인데 찾아보니 딱히 도움될것같진않지만 없는것보단 나으니 체크해주도록 하자. |
5-5. 저장
저장안하고 나가면 지금까지 작성한게 다 날아가니 반드시 저장을 눌러주자.
#6. GitLab Webhooks
다시 gitlab으로 돌아온다.
#2번에서 생성한 gitlab 프로젝트로 들어가면 좌측 메뉴 하단에 Settings → Webhooks로 들어간다. |
||||
URL : #5-3에서 얻은 url Secret token : #5-3에서 얻은 토큰 Trigger : branch name 세가지 입력 후 하단에 'add webhook' 클릭 |
#7. 테스트
모든 설정은 끝났다.
이제 gitlab 프로젝트에서 push를 했을때 jenkins를 지나서 최종적으로 S3로 업로드되는지 테스트해보자.
'DevOps > AWS' 카테고리의 다른 글
AWS S3 CLI upload & download (0) | 2022.08.16 |
---|
댓글