[sonarqube] integration with github -2
목표: local vm sonarqube, github, springboot2.5 소스를 푸시할 때(혹은 pr) 깃헙에서 소나큐브 검사하도록 설정
준비사항: 아래 글의 build.gradle이 적용된 소스
2022.01.06 - [세팅/sonarqube] - [sonarqube] springboot2 + gradle
[sonarqube] springboot2 + gradle
이전 글에서 깃헙과 소나큐브의 연동을 시도했으나 현재는 보류중이다. 찾아보니 제일 많이 연동하는 방법은 깃헙-젠킨스-소나큐브 이렇게 연동하여 젠킨스 빌드 시 소나큐브 실행 :: 이런 것
bangpurin.tistory.com
github action을 이용하여 sonarqube를 자동화 할 것이기 때문에, github action work flow를 만들어줘야한다.
그런데.. 회사 레파지토리에 action 탭도 없고.. settings에도 secret을 만드는 탭 자체가 없다..
좀 찾아보니.. admin role이 아니어서 그렇다는 말이 있다.
당장 관련 롤을 얻을 수 없어서 외부 개인 github에 임시 레파지토리를 만들어 테스트해보기로 한다.
1. 소스의 폴더 내에 .github 폴더를 만들고 그 안에 workflows라는 폴더 생성, 그 안에 yml형식의 파일을 만들어 workflow를 정의한다.
참고한 블로그
Github Action에 대한 소개와 사용법
Github Action은 github에서 공식적으로 제공하는 CI/CD 툴, 다시 말해 개발의 work flow를 자동화할 수 있게 도와주는 툴이다. CI는 Continuous Integration(지속적 통합), CD는 Continuous Delivery(지속적 전
velog.io
https://zzsza.github.io/development/2020/06/06/github-action/
Github Action 사용법 정리
Github Action 사용법 및 cron 사용 방법에 대해 정리한 글입니다 Github Action으로 YES24 IT 신간을 파이썬으로 크롤링 후 Issue에 업로드하는 예제가 있습니다 Github Action with Python Github action with cron, Github a
zzsza.github.io
관련 내용을 참고하면서 내 프로젝트에 yml 파일을 만들었다.
1-1. yml을 만드는데 자꾸 형식이 틀렸다고 나와서 여기에 몇 시간을 투자했다..
매번 푸시하고 보기 힘들어서 아래 사이트에서 yml 검증하고 진행하였다..
YAMLlint - The YAML Validator
YAML Lint Paste in your YAML and click "Go" - we'll tell you if it's valid or not, and give you a nice clean UTF-8 version of it. Optimized for Ruby.
www.yamllint.com
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/
GitHub Actions 활용하기
GitHub Actions 활용하기
devblog.croquis.com