본문 바로가기
DevOps/AWS

GitLab + Jenkins + S3

by Ligion 2022. 8. 31.

서론

정적 웹페이지를 S3에서만 관리하다보니 버전관리가 안되고 최신버전이 유실되는 경우가 생겼다.

gitlab으로 버전관리를 하고 Jenkins를 통해 S3로 배포해보자.

※ gitlab, jenkins를 사용하는 중이라는 가정으로 시작

 

#1. S3 소스 다운로드

AWS 콘솔의 S3에서 폴더단위 다운로드는 현재까지 지원안되는 것으로 알고 있다.

S3 CLI은 설정만 해두면 명령어 한줄로 다운받을 수 있다.

 

[AWS] - AWS S3 CLI upload & download

 

AWS S3 CLI upload & download

서론 보통은 cli가 불편하고 gui가 편한데 s3를 사용하다보니 AWS 콘솔(gui)에서 S3 파일 업로드 및 다운로드가 불편하고 오히려 cli가 익숙해지면 훨씬 편하다. 불편해서 알게 된 s3 cli 접속 및 업다운

wr-nood.tistory.com

 

#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 체크 한뒤 설치 후 재시작 버튼 클릭
설치가능 탭에서
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

댓글