목표: local vm sonarqube, github, springboot2.5 소스를 푸시할 때(혹은 pr) 깃헙에서 소나큐브 검사하도록 설정
준비사항: 아래 글의 build.gradle이 적용된 소스
2022.01.06 - [세팅/sonarqube] - [sonarqube] springboot2 + gradle
github action을 이용하여 sonarqube를 자동화 할 것이기 때문에, github action work flow를 만들어줘야한다.
그런데.. 회사 레파지토리에 action 탭도 없고.. settings에도 secret을 만드는 탭 자체가 없다..
좀 찾아보니.. admin role이 아니어서 그렇다는 말이 있다.
당장 관련 롤을 얻을 수 없어서 외부 개인 github에 임시 레파지토리를 만들어 테스트해보기로 한다.
1. 소스의 폴더 내에 .github 폴더를 만들고 그 안에 workflows라는 폴더 생성, 그 안에 yml형식의 파일을 만들어 workflow를 정의한다.
참고한 블로그
https://zzsza.github.io/development/2020/06/06/github-action/
관련 내용을 참고하면서 내 프로젝트에 yml 파일을 만들었다.
1-1. yml을 만드는데 자꾸 형식이 틀렸다고 나와서 여기에 몇 시간을 투자했다..
매번 푸시하고 보기 힘들어서 아래 사이트에서 yml 검증하고 진행하였다..
1-2. 그렇게 통과한 나의 yml
name: be-sonar-test
on:
push:
branches:
- master
- develop
pull_request:
branches:
- master
# pr이 생성 되었을 때, 담당 유저가 등록되었을 때, PR에 코드가 머지되었을 때, 라벨이 달렸을 때 동작
types: [opened, assigned, synchronize, labeled]
# 실행 해야할 job
jobs:
# Job의 이름, 자유롭게
analysis:
runs-on: ubuntu-latest
# 이 Job에서 사용할 환경변수
env:
# KEY - VALUE
SONARQUBE_ID: admin
SONARQUBE_URL: ${{ secrets.SONARQUBE_URL }}
PR_NUMBER: ${{ github.event.pull_request.number }}
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Sonarqube Analysis
run: |
./gradlew sonarqube
-Dsonar.host.url=${{ env.SONARQUBE_URL }}
-Dsonar.projectKey=${{ env.SONARQUBE_ID }}
# project의 제목을 {프로젝트명}-{pr번호} 형식으로
-Dsonar.projectName=${{ env.SONARQUBE_ID }}-${{ env.PR_NUMBER }}
-Dsonar.login=${{ secrets.SONARQUBE_ACCESS_TOKEN }}
- name: Comment Sonarqube URL
uses: actions/github-script@v4
with:
# 이슈에 코멘트를 달아주는 스크립트 실행
script: |
const { SONARQUBE_ID, SONARQUBE_URL, PR_NUMBER } = process.env
github.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `📊 ${ SONARQUBE_ID }-${ PR_NUMBER } 분석 결과 확인하기 [링크](${SONARQUBE_URL})`
})
1-3. secrets 로 시작한 변수들은 github에서 생성하였다.
2. 마스터에서 푸시하면 자동 빌드하도록 했기에,, 푸시만 해도 아래와 같이 자동으로 시도한다.
3. 결론적으로 실패했다. 그 이유는 아래와 같다.
나의 소나큐브는 내 노트북에 있고, 깃헙은 완전 외부다보니 깃헙 -> 소나큐브로 접속이 불가하다.. 게다가 회사 노트북 & vpn 사용이라 공인 ip도 모르겠다.
몇 시간 투자했는데 정작 네트워크 이슈로 끝을 못봐서 허무하다.. 네트워크에 대한 미래를 내다보지 못한 나의 무지함 때문이겠지ㅠ
제일 좋은 건 깃헙/소나큐브/(젠킨스) 까지 같은 망에 설치해서 하는 것인데 이래서 사람들이 도커로 다 올려서 하나보다. 나처럼 몇 개는 리얼 몇 개는 내부 서비스를 연동하려면 이런 네트워크 문제가 생길 수 밖에 없을 듯 하다.
이 내용과 별개로 github actions를 활용하면 깃과 관련한 많은 일을 자동화 할 수 있나보다.
커밋, 풀, 푸시 밖에 안해본 나로서는 매우 신기한 글이었다.
https://devblog.croquis.com/ko/2020-11-06-1-using-github-actions/
'서버 세팅 & tool > sonarqube' 카테고리의 다른 글
[sonarqube] integration with jenkins (0) | 2022.01.10 |
---|---|
[sonarqube] springboot2 + gradle (0) | 2022.01.06 |
[sonarqube] integration with github -1 (0) | 2022.01.06 |
[vm] sonarqube 설치 (0) | 2022.01.05 |