Github Actions, Jenkins로 CI/CD를 도전해보자! 4편 ( Private 레포지토리로 변경 및 웹훅 설정)

김진형·2024년 10월 6일
1

CI/CD

목록 보기
4/4
post-thumbnail

1. Why?

진행 중인 프로젝트(윗모닝)를 앱스토어에 출시하려 합니다. 이때 보안상의 이유로 레포지토리를 Private로 수정했더니 Jenkins에서 해당 레포지토리에 접근 권한이 없어 build를 못하는 상황이 발생했습니다. 이를 해결하고 기록하고자 작성합니다.

2. Personal access token 생성

Personal access token은 GitHub API 또는 명령줄을 사용할 때 암호를 통해 GitHub에 인증하는 대신 사용할 수 있는 대안입니다.

즉, 일반 암호보다는 더 보안적인 수단인거죠.

Developer settings > Personal access tokens > 생성 클릭

repo, admin:org, admin:repo_hook 을 체크해줍니다.
생성하고 나온 token 번호는 복사해서 저장해둡니다!

3. Organization의 Access Token 정책 변경

저는 개인 레포지토리가 아닌 Organization의 레포지토리에 접근해야하므로 아래 사진처럼 Organization의 Access Token 정책을 변경해줘야 합니다.

나의 Personal access token이 Fine-grained 인지 Tokens(classic)인지는 본인의 Developer Settings에서 볼 수 있습니다. 저의 경우는 Token(classic)입니다. (아래 사진 참고)

때문에 Organization의 Access Token 정책을 아래 사진처럼 수정해줍니다. 이는 조직 구성원의 개인 액세스 토큰(클래식)을 사용하여 Git 액세스를 허용하는 것입니다.

3. Jenkins Credential 생성

github account에 필요한 Credential이 필요합니다.

Kind: Username with password
Scope: Global
Username: <깃헙 account name> -> 실제 깃헙에서 사용하고 있는 이름입니다.
Password: <아까 생성한 Personal access token 값> -> token 을 생성했으니 pw 대신 token이 들어가야 합니다.

4. 스크립트 작성

  • 기존 스크립트

    stage('Git Clone') {
              steps {
                    git branch: 'develop', 
                    url: 'https://github.com/2024-Saphy/BE.git'
                }
            }
  • 수정된 스크립트

    stage('Git Clone') {
              steps {
                  git(
                      credentialsId: 'github-signin',
                      branch: 'develop',
                      url: 'https://github.com/WithMorning/Backend.git'
                  )
              }
          }

5. 마무리

큰 흐름을 정리해보면 다음과 같습니다.

  1. 여러 권한(repo, admin:org, admin:repo_hook)을 가지는 개인용 Personal Access Token을 생성
  2. Organization의 Access Token 정책을 변경
  3. Jenkins Credential 생성하고 스크립트를 수정

참고 사이트: Jenkins Pipeline Github Private Token 사용하여 연동

0개의 댓글