내 잡다한 노트
Groovy 란? 본문
Groovy는 Java 플랫폼 위에서 실행되는 동적 객체 지향 프로그래밍 언어입니다. Apache Software Foundation에서 관리하며, Jenkins와 같은 자동화 도구에서 스크립트를 작성하고 워크플로우를 정의하는 데 자주 사용됩니다.
1. Groovy란?
Groovy는 다음과 같은 특징을 가진 프로그래밍 언어입니다:
- Java 기반 언어
- Groovy는 Java Virtual Machine(JVM) 위에서 실행되며, Java 코드와 100% 호환됩니다.
- Java 라이브러리를 직접 사용하거나 Java 코드와 혼합해서 사용할 수 있습니다.
- 동적 타입 지원
- Java처럼 강타입 언어가 아닌 **동적 타입(dynamic typing)**을 지원하여 코드를 더 간결하게 작성할 수 있습니다.
- 스크립팅 언어
- Groovy는 스크립트 기반 언어로 사용할 수 있어, 빠르게 작성 및 실행이 가능합니다.
- 문법 간결성
- Groovy의 문법은 Java보다 간결하며, 반복적인 코드 작성을 줄여줍니다.
- 예를 들어, getter와 setter 메서드, 세미콜론 등의 생략이 가능합니다.
2. Jenkins에서 Groovy의 역할
Jenkins는 Groovy를 주요 스크립트 언어로 사용합니다. Jenkins에서 Groovy를 활용하는 주요 영역은 다음과 같습니다:
(1) Pipeline Script
Jenkins Pipeline(파이프라인)은 Groovy를 사용해 작성됩니다.
Pipeline은 빌드, 테스트, 배포 단계를 정의한 코드로, CI/CD 워크플로우를 자동화합니다.
- Declarative Pipeline (선언형 파이프라인)
Groovy를 기반으로 간단하고 구조화된 방식으로 파이프라인을 정의합니다. - pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
}
}
stage('Test') {
steps {
echo 'Testing...'
}
}
stage('Deploy') {
steps {
echo 'Deploying...'
}
}
}
} - Scripted Pipeline (스크립트형 파이프라인)
Groovy 문법을 더 자유롭게 활용하며, 복잡한 로직을 포함할 수 있습니다. - node {
stage('Build') {
echo 'Building...'
}
stage('Test') {
echo 'Testing...'
}
stage('Deploy') {
echo 'Deploying...'
}
}
4. Groovy의 장점
- 간단한 구문: Java에 비해 짧고 직관적인 코드 작성 가능.
- 빠른 프로토타이핑: 스크립트 언어로 빠르게 실행 및 테스트 가능.
- Java의 확장성: 기존 Java 코드와 혼용하여 사용 가능.
- Jenkins와의 최적화된 통합: Groovy는 Jenkins Pipeline 및 설정에 적합.
5. Groovy의 단점
- 퍼포먼스: 동적 언어이기 때문에 컴파일된 Java 코드보다 느릴 수 있음.
- 러닝 커브: Groovy와 Jenkins Pipeline DSL을 처음 사용하는 경우, 문법과 구조를 이해하는 데 시간이 걸릴 수 있음.
- 디버깅 어려움: Jenkins 환경에서 Groovy 스크립트 실행 중 발생하는 에러는 디버깅이 어렵게 느껴질 수 있음.
6. 왜 Jenkins에서 Groovy를 사용하나?
- Java 기반: Jenkins 자체가 Java로 작성되었기 때문에 Groovy와 자연스럽게 통합 가능.
- DSL 지원: Groovy는 Jenkins에서 사용하는 Domain-Specific Language(파이프라인 DSL)를 구현하는 데 이상적.
- 유연성: 선언형 파이프라인부터 복잡한 스크립트형 파이프라인까지 모두 작성 가능.
- 재사용성: Groovy를 활용해 공유 라이브러리와 커스텀 스크립트를 작성하여 여러 프로젝트에서 재사용 가능.
'DevOps > Jenkins' 카테고리의 다른 글
Jenkinsfile 이란? (0) | 2024.11.27 |
---|---|
Jenkins New item 페이지 (0) | 2024.11.24 |
Jenkins agent (0) | 2024.11.24 |
Jenkins 에이전트 (0) | 2024.11.21 |
젠킨스 Jenkins (1) | 2024.11.21 |