풀릭을 트리거로 jenkins에서 자동 테스트 및 정적 분석
(Android 주요 기사이지만 비슷한 것은 ios에서도 가능합니다)
findBugs/PMD/CheckStyle 도입
구성 파일 추가
모든 위치에 각 도구의 구성 파일을 배치합니다.
여기에서는 프로젝트의 루트에 config 폴더를 준비하고 배치했습니다.
(파일 이름은 checkstyle-config.xml, android-exclude-filter.xml, pmd-ruleset.xml로 설정했습니다)
※구체적인 설정 파일은 생략합니다
gradle 수정
이 도구에 대한 gradle을 config 폴더에 새로 만듭니다.
quality.gradleapply plugin: 'checkstyle'
apply plugin: 'findbugs'
apply plugin: 'pmd'
dependencies {
checkstyle 'com.puppycrawl.tools:checkstyle:8.1'
}
def qualityConfigDir = "$project.rootDir/config"
def reportsDir = "$project.rootDir/build/reports" // 解析結果の出力パス
check.dependsOn 'checkstyle', 'findbugs', 'pmd'
task checkstyle(type: Checkstyle) {
group = "quality"
ignoreFailures = true
configFile file("$qualityConfigDir/checkstyle-config.xml")
source 'src'
include '**/*.java'
reports {
xml.enabled = true
html.enabled = true
xml {
destination "$reportsDir/checkstyle.xml"
}
html {
destination "$reportsDir/checkstyle.html"
}
}
classpath = files()
}
task findbugs(type: FindBugs) {
group = "quality"
ignoreFailures = true
effort = "max"
reportLevel = "high" // どのレベルの報告まで対応するかで変更
excludeFilter = new File("$qualityConfigDir/android-exclude-filter.xml")
classes = files("build/intermediates/classes/")
source 'src/main'
include '**/*.java'
exclude '**/gen/**'
reports {
xml.enabled = true
html.enabled = false
xml {
destination "$reportsDir/findbugs_report.xml"
}
html {
destination "$reportsDir/findbugs_report.html"
}
}
classpath = files()
}
task pmd(type: Pmd) {
group = "quality"
ruleSetFiles = files("$qualityConfigDir/pmd-ruleset.xml")
ignoreFailures = true
ruleSets = []
source 'src'
include '**/*.java'
exclude '**/gen/**'
reports {
xml.enabled = true
html.enabled = true
xml {
destination "$reportsDir/pmd.xml"
}
html {
destination "$reportsDir/pmd.html"
}
}
}
프로젝트 gradle에 다음을 추가합니다.
build.gradlebuildscript {
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
apply from: '../config/quality.gradle' // ここを追加
...
bitbucket 설정
프로젝트 설정 > 후크
포스트 리시브(Bitbucket Server Webhook to Jenkins) 설정
jenkins URL에 jenkins 서버의 URL을 설정 (jenkins 본체의 URL로, job의 패스는 불필요)
jenkins 설정
소스 코드 관리 (git)
"고급 설정"을 선택하면 위와 같은 화면이 됩니다.
명칭은 공란으로 OK, Refspec와 브랜치 지정자는 공식에 있도록 아래와 같은 문자열을 입력해 주세요.
Refspec+refs/pull-requests/*:refs/remotes/origin/pr/*
브랜치 지정자origin/pr/${pullRequestId}/merge
빌드 트리거
'SCM 폴링'을 체크하고 스케줄을 비워 주십시오.
「post-commit 훅을 무시」는 환경에 다르다고 하는 소문이므로, 움직이지 않으면 ON/OFF를 전환해 시험해 주세요…
Stash Pull Requests Builder
Cron에는 "* * * * *"를 지정하고 stash host에는 stash URL을 지정하십시오.
Project,RepositoryName은 모니터링할 프로젝트/리포지토리 이름을 설정합니다.
빌드 후 처리
CheckStyle/FindBugs 집계
플러그인으로 아래와 같이 해 두면 보기 쉽습니다.
Notify Stash Instance
Commit SHA-1에는 다음과 같이 입력하십시오.
('고급 설정'내에 있음)
CommitSHA-1${sourceCommitHash}
결과
이런 식으로 보입니다.
맞춤 댓글
풀릭에 기재된 코멘트는 커스터마이즈 가능합니다.
위의 캡처와 같이 각 도구의 경고 수를 주석으로 출력하려고합니다.
측정 결과 수의 환경 변수화
여기서 PMD_RESULE과 FB_RESULTS는 환경 변수이지만 측정 결과 수를 환경 변수로 저장하여 실현됩니다. 방법은 여기에 썼으므로, 참조하십시오.
htps : // 코 m / m 문지름 / ms / 에 f55 굳 48b2064873 2b
측정 결과 수의 집계
해석 결과 파일을 스크립트로 꾸준히 해석하고 있습니다.
덧붙여서 스크립트는 서투르기 때문에 더 현명한 방법은 있다고 생각합니다…
CheckStyleCS_TERM=\<td\>[0-9]*\<\/td\>\<td\>[0-9]*\<\/td\>
CS_RESULT=$(grep $CS_TERM ./build/reports/checkstyle.html | sed -r "s/[^0-9]+([0-9]+)[^0-9]+([0-9]+)[^0-9]+/\2/")
echo -e "CS_RESULTS=$CS_RESULT" >> analytics_result.txt
FindBugsFB_TERM=\<BugInstance
FB_RESULT=$(grep -c $FB_TERM ./build/reports/findbugs_report.xml)
echo -e "FB_RESULTS=$FB_RESULT" >> analytics_result.txt
PMDPMD_TERM=var/lib/jenkins/jobs/BUS_BUILD_CHECKER/workspace/
PMD_RESULT=$(grep -c $PMD_TERM ./build/reports/pmd.html)
echo -e "PMD_RESULTS=$PMD_RESULT" >> analytics_result.txt
예에서는 해석 결과를 analytics_result.txt라는 텍스트 파일에 출력하고 있으므로, 환경 변수의 인젝트로 analytics_result.txt를 읽어 주면 커스텀 코멘트에도 사용할 수 있게 됩니다.
Reference
이 문제에 관하여(풀릭을 트리거로 jenkins에서 자동 테스트 및 정적 분석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mkosuke/items/f135beb555d2b0554d03
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
apply plugin: 'checkstyle'
apply plugin: 'findbugs'
apply plugin: 'pmd'
dependencies {
checkstyle 'com.puppycrawl.tools:checkstyle:8.1'
}
def qualityConfigDir = "$project.rootDir/config"
def reportsDir = "$project.rootDir/build/reports" // 解析結果の出力パス
check.dependsOn 'checkstyle', 'findbugs', 'pmd'
task checkstyle(type: Checkstyle) {
group = "quality"
ignoreFailures = true
configFile file("$qualityConfigDir/checkstyle-config.xml")
source 'src'
include '**/*.java'
reports {
xml.enabled = true
html.enabled = true
xml {
destination "$reportsDir/checkstyle.xml"
}
html {
destination "$reportsDir/checkstyle.html"
}
}
classpath = files()
}
task findbugs(type: FindBugs) {
group = "quality"
ignoreFailures = true
effort = "max"
reportLevel = "high" // どのレベルの報告まで対応するかで変更
excludeFilter = new File("$qualityConfigDir/android-exclude-filter.xml")
classes = files("build/intermediates/classes/")
source 'src/main'
include '**/*.java'
exclude '**/gen/**'
reports {
xml.enabled = true
html.enabled = false
xml {
destination "$reportsDir/findbugs_report.xml"
}
html {
destination "$reportsDir/findbugs_report.html"
}
}
classpath = files()
}
task pmd(type: Pmd) {
group = "quality"
ruleSetFiles = files("$qualityConfigDir/pmd-ruleset.xml")
ignoreFailures = true
ruleSets = []
source 'src'
include '**/*.java'
exclude '**/gen/**'
reports {
xml.enabled = true
html.enabled = true
xml {
destination "$reportsDir/pmd.xml"
}
html {
destination "$reportsDir/pmd.html"
}
}
}
buildscript {
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
apply from: '../config/quality.gradle' // ここを追加
...
프로젝트 설정 > 후크
포스트 리시브(Bitbucket Server Webhook to Jenkins) 설정
jenkins URL에 jenkins 서버의 URL을 설정 (jenkins 본체의 URL로, job의 패스는 불필요)
jenkins 설정
소스 코드 관리 (git)
"고급 설정"을 선택하면 위와 같은 화면이 됩니다.
명칭은 공란으로 OK, Refspec와 브랜치 지정자는 공식에 있도록 아래와 같은 문자열을 입력해 주세요.
Refspec+refs/pull-requests/*:refs/remotes/origin/pr/*
브랜치 지정자origin/pr/${pullRequestId}/merge
빌드 트리거
'SCM 폴링'을 체크하고 스케줄을 비워 주십시오.
「post-commit 훅을 무시」는 환경에 다르다고 하는 소문이므로, 움직이지 않으면 ON/OFF를 전환해 시험해 주세요…
Stash Pull Requests Builder
Cron에는 "* * * * *"를 지정하고 stash host에는 stash URL을 지정하십시오.
Project,RepositoryName은 모니터링할 프로젝트/리포지토리 이름을 설정합니다.
빌드 후 처리
CheckStyle/FindBugs 집계
플러그인으로 아래와 같이 해 두면 보기 쉽습니다.
Notify Stash Instance
Commit SHA-1에는 다음과 같이 입력하십시오.
('고급 설정'내에 있음)
CommitSHA-1${sourceCommitHash}
결과
이런 식으로 보입니다.
맞춤 댓글
풀릭에 기재된 코멘트는 커스터마이즈 가능합니다.
위의 캡처와 같이 각 도구의 경고 수를 주석으로 출력하려고합니다.
측정 결과 수의 환경 변수화
여기서 PMD_RESULE과 FB_RESULTS는 환경 변수이지만 측정 결과 수를 환경 변수로 저장하여 실현됩니다. 방법은 여기에 썼으므로, 참조하십시오.
htps : // 코 m / m 문지름 / ms / 에 f55 굳 48b2064873 2b
측정 결과 수의 집계
해석 결과 파일을 스크립트로 꾸준히 해석하고 있습니다.
덧붙여서 스크립트는 서투르기 때문에 더 현명한 방법은 있다고 생각합니다…
CheckStyleCS_TERM=\<td\>[0-9]*\<\/td\>\<td\>[0-9]*\<\/td\>
CS_RESULT=$(grep $CS_TERM ./build/reports/checkstyle.html | sed -r "s/[^0-9]+([0-9]+)[^0-9]+([0-9]+)[^0-9]+/\2/")
echo -e "CS_RESULTS=$CS_RESULT" >> analytics_result.txt
FindBugsFB_TERM=\<BugInstance
FB_RESULT=$(grep -c $FB_TERM ./build/reports/findbugs_report.xml)
echo -e "FB_RESULTS=$FB_RESULT" >> analytics_result.txt
PMDPMD_TERM=var/lib/jenkins/jobs/BUS_BUILD_CHECKER/workspace/
PMD_RESULT=$(grep -c $PMD_TERM ./build/reports/pmd.html)
echo -e "PMD_RESULTS=$PMD_RESULT" >> analytics_result.txt
예에서는 해석 결과를 analytics_result.txt라는 텍스트 파일에 출력하고 있으므로, 환경 변수의 인젝트로 analytics_result.txt를 읽어 주면 커스텀 코멘트에도 사용할 수 있게 됩니다.
Reference
이 문제에 관하여(풀릭을 트리거로 jenkins에서 자동 테스트 및 정적 분석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mkosuke/items/f135beb555d2b0554d03
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
+refs/pull-requests/*:refs/remotes/origin/pr/*
origin/pr/${pullRequestId}/merge
${sourceCommitHash}
이런 식으로 보입니다.
맞춤 댓글
풀릭에 기재된 코멘트는 커스터마이즈 가능합니다.
위의 캡처와 같이 각 도구의 경고 수를 주석으로 출력하려고합니다.
측정 결과 수의 환경 변수화
여기서 PMD_RESULE과 FB_RESULTS는 환경 변수이지만 측정 결과 수를 환경 변수로 저장하여 실현됩니다. 방법은 여기에 썼으므로, 참조하십시오.
htps : // 코 m / m 문지름 / ms / 에 f55 굳 48b2064873 2b
측정 결과 수의 집계
해석 결과 파일을 스크립트로 꾸준히 해석하고 있습니다.
덧붙여서 스크립트는 서투르기 때문에 더 현명한 방법은 있다고 생각합니다…
CheckStyleCS_TERM=\<td\>[0-9]*\<\/td\>\<td\>[0-9]*\<\/td\>
CS_RESULT=$(grep $CS_TERM ./build/reports/checkstyle.html | sed -r "s/[^0-9]+([0-9]+)[^0-9]+([0-9]+)[^0-9]+/\2/")
echo -e "CS_RESULTS=$CS_RESULT" >> analytics_result.txt
FindBugsFB_TERM=\<BugInstance
FB_RESULT=$(grep -c $FB_TERM ./build/reports/findbugs_report.xml)
echo -e "FB_RESULTS=$FB_RESULT" >> analytics_result.txt
PMDPMD_TERM=var/lib/jenkins/jobs/BUS_BUILD_CHECKER/workspace/
PMD_RESULT=$(grep -c $PMD_TERM ./build/reports/pmd.html)
echo -e "PMD_RESULTS=$PMD_RESULT" >> analytics_result.txt
예에서는 해석 결과를 analytics_result.txt라는 텍스트 파일에 출력하고 있으므로, 환경 변수의 인젝트로 analytics_result.txt를 읽어 주면 커스텀 코멘트에도 사용할 수 있게 됩니다.
Reference
이 문제에 관하여(풀릭을 트리거로 jenkins에서 자동 테스트 및 정적 분석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mkosuke/items/f135beb555d2b0554d03
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
CS_TERM=\<td\>[0-9]*\<\/td\>\<td\>[0-9]*\<\/td\>
CS_RESULT=$(grep $CS_TERM ./build/reports/checkstyle.html | sed -r "s/[^0-9]+([0-9]+)[^0-9]+([0-9]+)[^0-9]+/\2/")
echo -e "CS_RESULTS=$CS_RESULT" >> analytics_result.txt
FB_TERM=\<BugInstance
FB_RESULT=$(grep -c $FB_TERM ./build/reports/findbugs_report.xml)
echo -e "FB_RESULTS=$FB_RESULT" >> analytics_result.txt
PMD_TERM=var/lib/jenkins/jobs/BUS_BUILD_CHECKER/workspace/
PMD_RESULT=$(grep -c $PMD_TERM ./build/reports/pmd.html)
echo -e "PMD_RESULTS=$PMD_RESULT" >> analytics_result.txt
Reference
이 문제에 관하여(풀릭을 트리거로 jenkins에서 자동 테스트 및 정적 분석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mkosuke/items/f135beb555d2b0554d03텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)