카테고리 없음

Jenkins ↔ GitHub Organization 셋팅 방법

개발기록 2024. 8. 31. 19:46

1.Github setting


1) Organization Github 계정에서 Setting

 

2)  Developer settings > GitHub Apps

3) New GitHub App

 

4) GitHub App name & Homepage URL 작성

GitHub App name : GitHub App의 이름

Homepage URL : GitHub Organization계정의 주소

 

5) Webhook URL 작성

"/github-webhook/"을 꼭 붙혀야하며, Webhook URL은 젠킨스 서버를 말한다.

 

6) Repository permissions를 위해 클릭

 

7) 아래 그림에 맞춰 설정

[Webhooks는 Organization permissions에도 존재함]

추가적으로 위내용에 대한 셋팅을 수정할경우 아래 그림에 셋팅에서 수정내용을 최종적으로 적용해야한다.

8) 아래 그림 설정

  1. Check run
  2. Check suite
  3. Pull Request
  4. Push
  5. Repository

9) Create GitHub App

10) private key 생성

 

11) 생성 & private key 다운로드

 

12) 다운 받은 private key 변환

openssl pkcs8 -topk8 -inform PEM -outform PEM -in [downdload-key.pem] -out new-key.pem -nocrypt

cat new-key.pem

 

나중에 해당 키는 젠킨스 셋팅에서 사용함

 

13) Install App

All repositories 보다는 Only select repositories를 선택하여 WebHook할 레포지토리를 명시적으로 선택한다.

 

2. Jenkins 설정


1)  Jenkins 관리(Configure)선택

 

2) Credentials 클릭

 

3) Global 클릭

 

4) Add Credentials 클릭

 

5) 값 입력

 

[Kind 선택]

GitHub App 선택

 

[원하는 id 입력]

ex) my-github-app

 

[Description 추가]

ex) this is my-github-app

 

[App ID]

 

[Key]

"1.Github setting - 12) 다운 받은 private key 변환" 참고

 

6) 새로운 item 생성 클릭

7) item 생성

 

8) project 생성

 

9) project 값 입력

[Api endpoint]

비워둘 경우 알아서 채워짐

 

[credentials]

앞에 4)에서 생성한 것 선택

 

[owner]

organization GitHub 계정 이름 입력

 

10) 특정 레포지토리만 가져오도록 하도록 세팅

GitHub Organization -> Add 클릭 -> Repository -> filter by name (with wildcards)

 

 

11) 특정 브렌치만 가져오도록 하도록 세팅

GitHub Organization -> Add 클릭 -> -> Winthin repository -> filter by name (with wildcards)

 

12) 생성후 스캔

 

레포지토리는 잘 스캔 되지만 Jenkinsfile을 찾을 수가 없어서 CI를 수행 할 수 없다.

 

13) Jenkinsfile 생성 및 테스트

해당 파일은 GitHub Organization Jekins에 등록한 레포지토리 최상의에 등록 되어있어야만 한다.

 

14) Scan Organization Now

 

15) 마무리

 

 

 

기타 : Jenkins File stage


pipeline{
    agent any
    stages{
        stage('Prepare'){
            steps {
                sh 'gradle clean'
            }
        }
        stage('Build') {
            steps {
                sh 'gradlew build -x test'
            }
        }
        stage('Test') {
            steps {
                sh 'gradlew test'
            }
        }
        stage('Deploy Prepare'){
            steps{
                sh 'sudo kill $(pgrep -f ${PROJECT_NAME})'
            }
        }
        stage('Deploy') {
            steps {
                sh 'nohup java -jar ./build/libs/${PROJECT_NAME}.jar &'
            }
        }
    }
}

 

 

참조 : https://velog.io/@padomay1352/jenkins-github-organization