티스토리 뷰
젠킨스 설치는 아무거나 봐도 상관 없음
젠킨스, 빌드용 서버 따로 만들었기 때문에 필요한 msbuildtool과 windows sdk설치
msbuild, svn
젠킨스 관리 > plugin 에서 msbuild, svn 설치
젠킨스 관리 > tool > 중간에 msbuild installations에 정보 입력
jenkins home에서 새로운 item > free style
소스 코드 관리에 svn 체크 > 빌드할 snv repo 경로, credential은 add해서 추가 후 선택 > build steps에 build vs ~~ with msbuild 선택 > msbuild version 선택, MSBuild Build File은 해당 프로젝트의 sln파일의 경로, command argument는 /p:Configuration=Release /p:Platform=x86 와 같이 입력
이후 빌드하면 됨
근데 이제 솔루션 내에 lib repo가 없어서 빌드가 안 됨, 이걸 프로그램 마다 소스코드 관리에 하나씩 추가할 생각하니까 벌써 숨막힘
-> Global Pipeline Libraries에 추가하면 됨
근데 이건 free style에서 못 쓰고, pipeline으로 생성한 것에서만 사용 되는듯?
-> pipeline script가 좀 부담임
240209freestyle item은 사용하지 않고 pipeline만 사용중
이러니 plugin에서 msbuild도 필요 없고, 그냥 batch로 msbuild 실행함-
공통 lib들이 각 workspace에 checkout 되는게 시간도 용량도 답이 없었는데 아래 처럼 각 stage마다 넣어주니 해당 폴더에서만 작업함그래서 다른 item에서 checkout을 이미 했고, 또 다른 item에서 해당 lib를 checkout하면 변경사항만 체크하고 넘어감
근데 동시에 두 개 이상 item을 빌드하면 하나는 D:\path, 하나는 D:\path@2 이런식으로 폴더가 하나 더 생기고 @2에 checkout을 다시 하게 되어 문제임
그리고 A 프로젝트에서는 lib/A 라이브러리만 필요로해서 checkout시에 lib/a 만 checkout을 받으면 lib를 다 비워버리고 a만 checkout해서 이것도 문제임, 이해가 안 됨
pipeline
{
agent none
stages
{
stage('Checkout')
{
agent
{
node
{
label 'default_node'
customWorkspace 'D:/path'
}
}
만약 msbuild가 없는 vs버전(2005)이라면 아래처럼 빌드하면 됨
C:/Program Files (x86)/Microsoft Visual Studio 8/Common7/IDE/devenv" "D:/your/solution/path/your_solution.sln" /build "Release|Win32
email extension 설치 하여 결과 이메일 전송
gmail의 경우 app password를 만들고, jenkins credential에서 global 클릭 > id, app password 추가
build user vars plugin 플러그인 설치
- 빌드를 실행한 사람의 이메일 얻으려고
jenkins 구성 > system에서 email extension에 설정 하고, credential 추가
- 여기 default subject, body는 어떻게 쓰는지 모르겠음
pipeline script에 코드 추가, stages{} 블록 밖에, pipeline{} 블록 안에
post {
success {
node('node'){
script {
wrap([$class: 'BuildUser']) {
def userEmail = env.BUILD_USER_EMAIL
def userName = env.BUILD_USER
if (userEmail) {
emailext(
to: userEmail,
from: 'Jenkins',
subject: "[Success] Build Notification: ${JOB_NAME} #${BUILD_NUMBER}",
body: """Hello ${userName},
The build ${JOB_NAME} #${BUILD_NUMBER} has succeeded.
You can check the details here: ${BUILD_URL}
""",
mimeType: 'text/plain'
)
} else {
echo "User email not found for ${env.BUILD_USER_ID}"
}
}
}
}
}
failure {
node('default_node'){
script {
wrap([$class: 'BuildUser']) {
def userEmail = env.BUILD_USER_EMAIL
def userName = env.BUILD_USER
if (userEmail) {
emailext(
to: userEmail,
from: 'Jenkins',
subject: "[Failure] Build Notification: ${JOB_NAME} #${BUILD_NUMBER}",
body: """Hello ${userName},
The build ${JOB_NAME} #${BUILD_NUMBER} has failed.
You can check the details here: ${BUILD_URL}
""",
mimeType: 'text/plain'
)
} else {
echo "User email not found for ${env.BUILD_USER_ID}"
}
}
}
}
}
}
'Others > Computer' 카테고리의 다른 글
Windows 11 elasticssearch + kibana 설치(8.13.4) (0) | 2024.05.23 |
---|---|
도커 지웠는데 host.docker.internal가 나올 때 (0) | 2024.02.19 |
powershell 핑 시간 로그(ping log with timestamp) (0) | 2023.01.26 |
Windows11 "더 많은 옵션" 끄기 (1) | 2021.08.20 |
X570 AORUS ELITE TPM 2.0 켜기(Windows11, 발로란트 뱅가드) (0) | 2021.08.07 |
티스토리 방명록
- Total
- Today
- Yesterday
Contact: j0n9m1n1@gmail.com