안녕하세요! 오늘은 저번 포스팅에 이어 Jenkins 대신 Git Actions를 사용하여 PR Deco를 해보려고 해요!
1. Github Actions란?
Github의 공식 문서에 따르면 이전에는 레포지토리에 푸쉬후에 Jenkins로 Webhook을 날리고, 또 젠킨스에서 어쩌구 저쩌구...와 같은 일련의 과정들이 있었는데요. 그 대신 레포지토리에서 바로 소프트웨어 개발 workflow를 자동화하여 CI/CD를 진행할 수 있다고 설명되어 있어요.
Github Actions는 Repository/.github/workflows 내에 .yml파일로 정의될 수 있어요.
2. Github Actions 만들기
소나큐브 깃허브 관련 문서에 가보면 Github Actions 작성법에 대해 자세히 알지 못하더라도 충분히 금방 작성할 수 있어요! 한 번 살펴보면 만들어보도록 할게요.
먼저 sonar.projectKey 와 sonar.source를 base directory에 sonar-project.properties라는 파일로 작성해주세요.
그리고 위와 같이 workflow YAML 파일 내에 작성해서 Github Action을 만들 수 있다고 해요.
name: Analyze main branch with SonarQube
on:
push:
branches:
- main
jobs:
analyze:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Analyze code with SonarQube
uses: sonarsource/sonarqube-scan-action@master
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_HOST_URL: ${{ secrets.SONAR_URL }}
저는 일단 push 시에 main 브랜치를 분석하는 YAML 파일 하나와
name: Analyze master branch and pull requests with SonarQube
on:
push:
branches:
- master
pull_request:
types: [ opened, synchronize, reopened ]
jobs:
analyze:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Analyze code with SonarQube
uses: sonarsource/sonarqube-scan-action@master
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_HOST_URL: ${{ secrets.SONAR_URL }}
master 브랜치의 푸시와 Pull_request에 의해 트리거가 발생하여 분석하는 YAML 파일 하나, 총 2개의 YAML 파일을 만들었어요. 아때 secrets.SONAR_TOKEN 이라는 변수가 보이는데, 이건 Github에서 secret 관련 정보를 저장하고 관리할 수 있어요.
Repository > Settings > Security > Secrets and variables > Actions 로 이동해주세요.
그럼 위와 같은 화면을 만날 수 있는데, New repository secret 을 클릭해 주세요.
해당 화면에 등록하고 싶은 secret의 이름과 값을 입력해주면 돼요.
그리고 Github App 등록과 소나큐브 설정도 필요하지만 해당 내용은 역시 저번 포스팅에 있으므로 참고하여 등록해 주세요!
그럼 이제 한 번 Github Action을 돌려보도록 할게요!
3. Github Actions 실행
해당 소스들을 repo에 push를 해주세요. 그리고 Repository의 Actions로 이동해 주세요.
그럼 깃허브에서 .yml 파일을 인식하고 workflow를 진행해줘요.
오류가 발생한다면 위와 같이 어느 step에서 fail이 발생했는지도 볼 수 있고,
그에 대한 로그도 확인할 수 있으니 오류가 발생한다면 확인하여 고쳐주세요.
마지막으로 우리는 PR 관련한 App도 등록하였으니, PR에 대해서 정상적으로 comment가 달리는지 확인해보도록 할게요.
정상적으로 실행된 것을 확인할 수 있습니다. 개인적으로 Jenkins와 CI를 진행할 때 보다 조금 더 쉽고 편리했던 것 같아요.
참고자료
**🔗 - https://github.com/SonarSource/sonarqube-scan-action**
**🔗 - https://docs.github.com/ko/actions/learn-github-actions/understanding-github-actions**
'개발 > CI CD' 카테고리의 다른 글
SonarQube & Jenkins (0) | 2023.06.27 |
---|---|
SonarQube & Jacoco (0) | 2023.06.27 |