반응형
목차
우선 Dockerfile로 Groovy 초기화 스크립트 복사하기
Groovy 스크립트를 수정하고 해당 스크립트를 도커 파일로 복사해서 젠킨스 설정 시에 적용되도록 세팅하자. (Groovy 스크립트는 VisualStudio Code를 활용했다.)
FROM jenkins/jenkins:lts
USER root
# Groovy 스크립트 복사
COPY init.groovy.d/ /usr/share/jenkins/ref/init.groovy.d/
USER jenkins
Subversion & Credential 실행 스크립트(Subversion & Credential Setting Scripts)

아래는 init.groovy.d를 수정한 내용이다. SubversionSCM.ModuleLocation 객체를 사용하면 SVN주소를 입력해서 해당 저장소에 있는 내용을 내려받을 수 있다. 물론 이를 위해서는 해당 SVN에 접근 가능한 계정명과 계정 비밀번호가 필요하다. 아래의 스크립트를 참고해서 계정명과 계정 비밀번호를 입력하는 방법을 알아보자.
import jenkins.model.*
import hudson.model.*
import hudson.scm.*
import hudson.scm.subversion.*
import com.cloudbees.plugins.credentials.CredentialsScope
import com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl
import com.cloudbees.plugins.credentials.domains.Domain
import org.jenkinsci.plugins.credentialsbinding.impl.*
// Subversion Credentials 추가
def svnUsername = "" // Subversion 사용자 이름
def svnPassword = "" // Subversion 비밀번호
def credentialsId = "" // Jenkins에서 참조할 ID
def svnCredentials = new UsernamePasswordCredentialsImpl(
CredentialsScope.GLOBAL, // 범위
credentialsId, // ID
"", // 설명
svnUsername, // 사용자 이름
svnPassword // 비밀번호
)
// Credentials 저장
credentialsStore.addCredentials(Domain.global(), svnCredentials)
println("Subversion credentials added with ID '${credentialsId}'.")
// Jenkins 인스턴스 가져오기
def instance = Jenkins.getInstance()
def jobName = "job-name"
def job = instance.getItem(jobName)
if (job == null) {
println("Creating new Freestyle project: ${jobName}")
// Freestyle 프로젝트 생성
job = new FreeStyleProject(instance, jobName)
instance.add(job, jobName)
// Subversion 설정
def depthOption = "infinity"
// SubversionSCM.ModuleLocation 객체 생성
def moduleLocation = new SubversionSCM.ModuleLocation("http://svn.co.kr/svn", credentialsId, "./", depthOption, true, true)
// SubversionSCM 객체 생성
def svnSCM = new SubversionSCM(
[moduleLocation], // ModuleLocation 리스트
null, // workspaceUpdater
null, // browser
"", // excludedRegions
"", // excludedUsers
"", // excludedRevprop
"", // excludedCommitMessages
"", // includedRegions
false, // ignoreDirPropChanges
false, // filterChangelog
null, // additionalCredentials
true // quietOperation
)
job.setScm(svnSCM)
// 빌드 환경 설정: Use secret text(s) or file(s) - Username and Password (separated)
def usernamePasswordBinding = new UsernamePasswordMultiBinding(
"svn_username", // 사용자 이름이 바인딩될 환경 변수 이름
"svn_password", // 비밀번호가 바인딩될 환경 변수 이름
"credential_ID" // Jenkins Credentials ID
)
def buildWrapper = new SecretBuildWrapper([usernamePasswordBinding])
job.getBuildWrappersList().add(buildWrapper)
job.save()
println("Freestyle project '${jobName}' created with Subversion checkout configuration.")
} else {
println("Freestyle project '${jobName}' already exists.")
}
- UsernamePasswordCredentialsImpl
- SubversionSCM.ModuleLocation
- UsernamePasswordMultiBinding
함께 읽으면 좋은 글
Groovy 스크립트로 도커 환경 젠킨스(Jenkins) 초기 설정하기
들어가면서(Intro)CI/CD를 위해서 많은 사람들이 젠킨스를 활용한다. 젠킨스는 유저에게 강력한 GUI를 제공하여 편하게 설정을 추가하고 제거하는 것이 강점이다. 하지만 한번 설정한 후에는 거의
jettstream.tistory.com
'프로그래밍 > 젠킨스(Jenkins)' 카테고리의 다른 글
Groovy 스크립트로 도커 환경 젠킨스(Jenkins) 초기 설정하기 (2) | 2024.12.20 |
---|---|
젠킨스(Jenkins) 시간 설정 (3) | 2024.12.20 |
젠킨스(Jenkins) Publish over SSH 사용하기 (0) | 2024.12.09 |
윈도우 재부팅시 젠킨스(Jenkins)가 자동 시작되지 않는 현상 해결하기 (0) | 2024.11.18 |
젠킨스(Jenkins) 접속 URL 변경하기 (2) | 2024.11.14 |
댓글