반응형

목표: 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를 정의한다.

참고한 블로그

https://velog.io/@ggong/Github-Action%EC%97%90-%EB%8C%80%ED%95%9C-%EC%86%8C%EA%B0%9C%EC%99%80-%EC%82%AC%EC%9A%A9%EB%B2%95

 

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 검증하고 진행하였다..

http://www.yamllint.com/

 

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

 

728x90
반응형

'서버 세팅 & 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

+ Recent posts