본문 바로가기
Jenkins

gitlab와 jenkins(AWS EC2) 연동 후 S3에 배포

by Rainbound-IT 2022. 4. 12.
반응형

목차

     

     

     

     

     

    1. GitLab Access 토큰 생성

    gitlab 계정 오른쪽위에 아이콘클릭후 edit profile 클릭

     

    그다음 왼쪽 탭에 Access Token 클릭

     

     

    원하는 token 이름을 정하고 토큰 만기일 설정후 

    scopes = 권한부여 같은 거 

    저는 git에서 어떤게 필요한지 몰라서 다 부여 했습니다.

    설정완료후 create 합니다.

    그러면 token이 나오는데 그걸 따로 잘 저장해야합니다.

     

     

     

     

     

    2. Jekins 에 token 넣기

     

    우선 jenkins에 gitlab 플러그인 을 설치해야합니다.

    Dashboard - Jenkins 관리 - 플러그인 관리에 들어갑니다.

     

     

    설치가능에서 gitlab 을 검색하여 설치합니다.(기본적으로 git plugin은 설치되어 있으나 혹시나 git 검색해서 없으시면 설치하세요.)

     

     

     

    git lab을 설치하시면

    Jenkins 관리 - 시스템 설정에 들어갑니다.

     

    내려가서 Gitlab 설정 하는곳을 찾습니다.

    gitlab연결할 원하시는 이름을 적고

    host URL은 gitlab에서 서버를 따로 구입하지 않은이상 https://gitlab.com/으로 로 입력합니다.

    (gitlab에서 접속하여 해당 repository에 들어가는것같습니다.)

    그리고 처음이면 none이라고 Credential에 되어있을텐데

    아래에 add 를 클릭하여 추가한뒤 추가한 credential로 바꿔주고 apply후 저장합니다. 

     

     

     

     

    add를 누르면 나오는 화면인데

    kind 는 GitLab API token 을 선택하고 아래에 GitLab에서 생성한 token을 입력하고

    나머지 ID와 description은 원하시는것을 입력합니다.

     

    3. project 생성후 gitlab 주소 넣기

    그리고 프로젝트를 생성합니다.

     

    왼쪽에 new item 을 클릭하셔도 되고 

    처음이시라면 create 뭐라고 적혀있는거 누르시면 됩니다.

     

    item 이름 적으시고 freestyle project를 클릭합니다.

     

     

     

    소스코드 관리 탭을 클릭하고

    none 에서 git을 클릭합니다.

    repository URL은 gitlab reposityry URL을(clone 클릭해서 https 주소를 입력하시면됩니다. ssh는 설정이 다릅니다.)

    그리고 credetials를 선택해야하는데 처음에는 없습니다.

     

    아래에 add를 클릭하여 생성해줍니다.

     

     

    kind는 username with password를

    username은 gitlab 계정 id, password는 계정비밀번호를 입력해줍니다.

     

    그리고 ID와 Description에 원하는것을 입력합니다.

     

     

     

     

     

    Failed to connect to repository: Command "/usr/bin/git ls -remote -h -- https://gitlab.com/..." 

    보통 에러코드가 발생하는데 저같은 경우는 딸랑 저코드만 나왔습니다.(다른 에러코드의 경우 계정이 맞지 않거나 기타등등 여러가지 있으니 찾아보셔야 할것같습니다.)

    그래서 찾아보니 ec2에 git이설치가  안되어 있어서 그런거였더라구요...

     

    ec2에 들어가서 아래명령어로 git을 설치합니다.

    sudo yum install git -y

    설치 완료후

    Dashboard - Jenkins관리 - Global Tool Configuration에 들어갑니다.

    거기서 git 을 찾아 path to git executable에 /usr/bin/git을 입력하고 save 합니다.

     

    git 설치해야함

    https://stackoverflow.com/questions/37155321/error-error-cloning-remote-repo-origin

     

    ERROR: Error cloning remote repo 'origin'

    Tried with the configure option, not able to find the tools configuration option and the git executable section. Seems like it occurs after a successful build only. Please help. Here's the output I

    stackoverflow.com

    gitlab integrations jenkins 하는방법(https여야 해서 저는 패스)

    https://docs.gitlab.com/ee/integration/jenkins.html

     

    Jenkins integration | GitLab

    Documentation for GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab, and GitLab Runner.

    docs.gitlab.com

     

    4. gitlab에 webhook 생성

    위와 같이 하였으면 연동은 됐으나 자동으로 트리거가 되지 않습니다.

    jenkins project에 들어가셔서

    빌드 유발에 들어간다음 

    build when a change is pushed to Gitlab. ..... 여기에 체크 표시하시고 push events 와 opened merge request events를 체크 후

    아래에 고급을 클릭합니다.

    고급을 클릭하시면 여러 설정이 나오는데 아래에 보시면

    secret token이 있습니다. Generate를 클릭하여 토큰을 생성하고 생성된 토큰을 복사해 둡니다.

     

    그리고 다시 GitLab으로 돌아갑니다.

    Setting - Webhooks 로 들어간뒤

    URL 에  jenkins 프로젝트 주소를.

    secret token에 방금 생성한 토큰을 넣으시고 기본적으로 push events 와 Enable SSL verification이 되어 있을겁니다.

    해당사항 확인후 Add webhook을 눌러 Hook을 생성해주면

    아래와 같이 project hooks가 나오면끝입니다.

     

     

     

    5. S3에 배포

    Dashboard - Jenkins관리 - 플러그인관리 

    에 들어가서 S3 publisher를 설치해줍니다.

    설치가 완료되면

     

    Dashboard - Jenkins 관리 - 시스템 관리에 들어가서 Amazon s3 profiles 를 추가해줍니다.

     

    iam user만들면서 나오는 Access key와 Secret key를 입력해줍니다.

    여기서 Access 오류가 날수 있는데 user의 정책을 S3이용 할수 있게 추가하거나 수정하셔야합니다.

     

    만들었던 프로젝트에서 빌드 후 조치 로 들어가서 publish artifacts to S3 Bucket을 선택합니다.

     

     

    그럼 아래와 같은 설정창이 나오는데 S3 profile에서 전에 설정했던 프로필을 선택하시고

    Source는 올리고 싶으신것을 입력하시면됩니다. (저는 다올리고 싶어서 **/을 했습니다.)

    Exclude는 제외하고 싶은파일(ex. Readme)

    Destination bucket은 S3에 만들었던 Destination bucket Name을 입력하시면됩니다.

    Storage class는 bucket class 유형을 선택하시면됩니다(설정을 하지 않았다면 STANDARD를 선택하시면됩니다.)

    Bucket Region은 bucket을 만든 지역을 선택하시면 됩니다.

     

     

    아래 설정은 아래와 같이 하였습니다.

    이제 저장하시면 설정은 모두 완료가 됩니다.

    gitlab에 push 하면 알아서 올라가는것을 볼수 있습니다.

     

     

    처음에 jenkins에서 오류없이 success 문구가 떴는데 안되서 헤메다가

    root에서 index.html올려봐야겠다 해서 올려보니 되더군요

     

    버킷정책을 수정해서 그런건가 아니면 시간이 지나야 하는지 모르겠네요.

     

     

     

     

     

    Reference

    https://velog.io/@psystar99/%EA%B9%83%EB%9E%A9%EA%B3%BC-%EC%A0%A0%ED%82%A8%EC%8A%A4-%EC%97%B0%EB%8F%99

     

    깃랩과 젠킨스 연동

    Settings>Access Tokens 에 들어가서 Project Access Tokens를 생성한다. 이름을 입력하고 'api', 'read api', 'read_repository'를 선택하고 생성한다. 그럼 아래 사진같이 access token이 나오는데 이를

    velog.io

     

    jenkins 의 artifact manager

    https://plugins.jenkins.io/artifact-manager-s3/

     

    Artifact Manager on S3

    A Jenkins plugin to keep artifacts and Pipeline stashes in Amazon S3.

    plugins.jenkins.io

     

    반응형

    댓글