본문 바로가기
Auto Build(CI SCM GIT)/Jenkins

Jenkinsfile 에서 변수 사용방법

by 아이티.파머 2024. 4. 7.
반응형

Jenkinsfile 에서 변수사용시 차이점

${env.propertie-name} 과 ${properties}의 차이는 env. 으로 시작되는 파일은 Jenkins 에서 변수로 생성해둔 파일을 사용할때 사용한다.

 

이프로젝트는 매개변수가 있습니다 를 체크한다  이후 String Parameter.. 등등 선택하여 매개변수명을 등록한다.

이후 위에서 언급한바와같이 ${env.매개변수명} 을 입력하여 사용한다.

 

 

또한 Jenkins 에서는 사용할수 있는 환경변수들이 있는데 그중 하나가 BUILD_NUMBER 이다.

빌드넘버는 여기 히스토리에 표시되는 값과 동일하다.

 

해당값을 이용하여 Jenkins의 execute shell 탭에서 활용 할 수도 있다.

이렇게 하면 Jenkins 빌드넘버로 jar 파일을 관리하며 다운로드 할 수 있다.

해당 부분을 다시 gradle parameter로 보내어 빌드 번호로 RELEASE를 관리 할 수도 있다.

-PbuildNumber 를 사용하여 mudule을 gradle 로 빌드할때 젠킨스에서 gradle 로 parameter를 전달할수있다.

-P는 옵션 buildNumber는 property(parameter name) 이다.

gradle clean bootJar --parallel --build-cache -PbuildNumber=${ECS_SERVICE}\#${BUILD_NUMBER}

gradle 변수 전달 방법 옵션

  • -D : jvm 단위에 제공되는 변수전달방법
  • -P : project 단위에 전달되는 변수전달법 , gradle 속성용
    • build.gralde file 에서 jar packaging 시에 다음과 같이 project.getProperty 로 빌드 번호를 가져올수 있다.
      // gralde 빌드 명령어 예시
      // gradle build bootJar -PbuildNumber=101
      
      
      // build.gradle file 
      
      String buildNumber
      if(project.hasProperty('buildNumber')){
          buildNumber = project.getProperty('buildNumber')
          filesMatching("**/*.properties") {
              expand( buildNumber: project.getProperty('buildNumber') )
          }
          archiveFileName = "${archiveBaseName.get()}-${buildNumber}.${archiveExtension.get()}"
      } else {
          archiveFileName = "${archiveBaseName.get()}-.${archiveExtension.get()}"
      }
      
      doLast {
          if(project.hasProperty('buildNumber')){
              println "번호 : " + buildNumber
          }
      }​
    • ${archiveBaseName.get()}
      • 프로젝트모듈 이름
    • ${archiveExtension.get()}
      • 확장자명
    • project.getProperty('buildNumber')
      • gradle build 에서 -P 옵션으로 준 값
  • gradle build bootJar -PtestUser=Sangkil project.getProperty(”testUser”)

 

결과

8:49:51 PM: Executing 'bootJar -x test -PbuildNumber=10'...

> Task :asciidoctor UP-TO-DATE
> Task :compileJava UP-TO-DATE
> Task :processResources UP-TO-DATE
> Task :classes UP-TO-DATE
> Task :bootJarMainClassName UP-TO-DATE

> Task :bootJar
번호 : 10

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.8/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 2s
5 actionable tasks: 1 executed, 4 up-to-date
8:49:53 PM: Execution finished 'bootJar -x test -PbuildNumber=10'.

 

이렇게 함으로 Jenkins 에서 사용중인 변수들을 gradle 에서 받아 사용 할 수 있다. 

반응형