[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java ProjectJi-Woong Choi
This document explains how to use gradle in Java project. It contains a real sample build file using Spring MVC project which is using education example in OSC.
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java ProjectJi-Woong Choi
This document explains how to use gradle in Java project. It contains a real sample build file using Spring MVC project which is using education example in OSC.
단일 툴로는 최고의 DevOps툴인
GitLab Starter 라이센스에 포함된 기능을 요약하여 소개 합니다.
소프트웨어 개발 라이프사이클을 GitLab으로 개선해보세요.
DevOps 에서 DevSecOps를 단일 툴로 구축 가능합니다.
인포그랩은 다음 서비스를 제공합니다.
- GitLab 라이센스 비용 절감
- ITSM 고도화, DevSecOps 구축 및 개선 (진단→개선→실행→진단)
- 맞춤 설치와 환경 설정 혹은 최신 버전으로 업그레이드
- CI/CD 파이프라인을 구축하거나, 관련 기능 커스텀 개발
- Git, GitLab에 교육 제공, 개발 팀의 협업 개선을 위한 워크숍 진행
- Jira, Jenkins, SonarQube, Artifactory 연동 및 통합 또는 마이그레이션
- SVN, Perforce, CSV, ClearCase, BitBucket, GitHub, SourceSafe를 Git&GitLab으로 전환
Android 기반의 게임 프로젝트를 오픈하면서 구축한 빌드 시스템을 간
략하게 소개합니다.
osx 기반에서 Jenkins를 이용하여 Unity3D와 Android Native
Code와 설정 방법에 대해 다루고 있습니다.
세부적인 코드보다는 전체적인 흐름에 초점을 맞췄으므로
참고용으로 보시기 바랍니다.
단일 툴로는 최고의 DevOps툴인
GitLab Starter 라이센스에 포함된 기능을 요약하여 소개 합니다.
소프트웨어 개발 라이프사이클을 GitLab으로 개선해보세요.
DevOps 에서 DevSecOps를 단일 툴로 구축 가능합니다.
인포그랩은 다음 서비스를 제공합니다.
- GitLab 라이센스 비용 절감
- ITSM 고도화, DevSecOps 구축 및 개선 (진단→개선→실행→진단)
- 맞춤 설치와 환경 설정 혹은 최신 버전으로 업그레이드
- CI/CD 파이프라인을 구축하거나, 관련 기능 커스텀 개발
- Git, GitLab에 교육 제공, 개발 팀의 협업 개선을 위한 워크숍 진행
- Jira, Jenkins, SonarQube, Artifactory 연동 및 통합 또는 마이그레이션
- SVN, Perforce, CSV, ClearCase, BitBucket, GitHub, SourceSafe를 Git&GitLab으로 전환
Android 기반의 게임 프로젝트를 오픈하면서 구축한 빌드 시스템을 간
략하게 소개합니다.
osx 기반에서 Jenkins를 이용하여 Unity3D와 Android Native
Code와 설정 방법에 대해 다루고 있습니다.
세부적인 코드보다는 전체적인 흐름에 초점을 맞췄으므로
참고용으로 보시기 바랍니다.
source : http://www.opennaru.com/cloud/ci-cd/
CI/CD는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법입니다. CI/CD의 기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포입니다. CI/CD는 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제(일명 "인테그레이션 헬(integration hell)")을 해결하기 위한 솔루션입니다.
특히, CI/CD는 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공합니다. 이러한 구축 사례를 일반적으로 "CI/CD 파이프라인"이라 부르며 개발 및 운영팀의 애자일 방식 협력을 통해 지원됩니다.
3. Maven – Introduction to the Build Lifecycle
• Maven is based around the central concept of a build lifecycle
=> 특정 artifact (프로젝트)를 구축하고 배포하는 프로세스가 명확히 정의
• Maven은 미리 정해진 빌드 순서를 가지고 있다.
• 각 빌드 단계를 phase라고 한다.
• Lifecycle은 phase들로 구성되어 일련의 순서를 가진다.
• phase는 실행단위로서 goal과 바인딩된다.
• phase는 특정 순서에 따라서 goal이 실행되는 구조
• 기본(default) Lifecycle / clean Lifecycle / site Lifecycle
1. default : 프로젝트 빌드 및 배포를 담당
2. clean : 프로젝트의 클린(빌드 자원 삭제)를 담당
3. site : 프로젝트 사이트 생성(문서)를 담당
https://i.stack.imgur.com/tp88Z.jpg
4. Maven – Build Lifecycle
• Plugin
• Maven의 모든 기능은 플러그인을 기반으로 동작 -> Phase도 플러그인과 연결
• Phase도 Plugin과 연결, 실행할 수 있는 각각의 작업 = Goal
• 1 : 1
소스 코드를 컴파일 하는 compile goal
테스트 소스코드 컴파일 testCompile goal
도움말 제공 help goal
• mvn groupid:artifactId:version:goal
ex) mvn org.apache.maven.plugins:maven-compiler-plugin:2.1:compile
5. Maven – Build Lifecycle
• clean
pre-clean -> clean -> post-clean : 이전 빌드에서 생성된 모든 파일 삭제
• default
validate: 프로젝트 상태 점검, 빌드에 필요한 정보 존재유무 확인
compile: 소스 코드를 컴파일
test: 단위 테스트를 실행 -> 실패 시에는 빌드 실패로 간주
ex) target/test-classes에 위치한 junit 단위 테스트 실행,
결과는 target/surefire-reports 디렉토리 생성
package: 컴파일된 클래스 파일과 리소스 파일들을 패키징(war, jar, etc.)
verify: 패키지가 품질 기준에 적합한지 검사
install: 패키징한 파일을 로컬 저장소로 배포
deploy: 패키징한 파일을 원격 저장소에 배포
• site
pre-site -> site -> post-site ; 사이트 문서 생성
site-deploy : 생성된 문서를 웹 서버에 배포
https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
6. Maven – Build Lifecycle
• mvn package를 실행할 경우, package phase 전의 모든 phase가 우선적으로 실행
• use case
=> maven [options] [<goal(s)>] [<phase(s)>]
1. mvn package
2. mvn clean install
3. mvn clean deploy
ex) CI 도구를 이용하여 Maven Build를 할 때, 빌드된 결과물을 제거하고 빌드 결과물이 생성
4. mvn compiler:compile
ex) compiler 플러그인에서 compile Goal을 실행한다는 의미
mvn [plugin-name]:[goal-name]
• 빌드와 관련된 설정은 pom.xml에서 e.g. Lifecycle별 실행할 플러그인 설정 등
• Maven Lifecycle 전체는 maven-core module 내의 components.xml에 정의됨.
• default Lifecycle bindings - Maven 2.x : components.xml, Maven 3.x : default-bindings.xml
7. Gradle – Build Lifecycle
• java plugin을 사용할 경우 e.g. apply plugin: java, 자바 빌드에 대한 Lifecycle 추가
• Build Phase
1. The initialization phase
2. The configuration phase
3. The execution phase
• The initialization phase
• Gradle은 Single-project build 또는 Multi-project build 정보를 아는 것이 중요
• 따라서 Gradle은 settings.gradle 파일을 확인한다.
=> 다른 서브 프로젝트 체크를 위해
• 해당 phase가 끝날 때, Gradle은 Project 인스턴스를 생성한다.
8. Gradle – Build Lifecycle
• The configuration Phase
<Single-project build>
• 이전 phase에서 확인된 각 프로젝트의 빌드 스크립트 실행
• 그리고 command line arguments와 동일한 이름의 테스크를 확인하고, 실행된다.
<Multi-project build>
• configuration -> 프로젝트의 build.gradle 파일을 실행한다.
e.g. apply plugin에 선언된 플러그인 다운로드
• 모든 프로젝트의 configuration이 우선시 된다.
• Task; 사용자는 Task를 정의할 수 있고, 이들 간의 의존성을 설정할 수도 있다.
• Gradle은 Task들이 의존성의 순서대로 진행되면서, 오직 한 번만 실행된다.
• 또한 Task를 실행하기 전에 Directed Acyclic Graph로 형성.
9. Gradle – Build Lifecycle
Directed acyclic graph for the Java plugin tasks
10. Gradle – Build Lifecycle
• The execution Phase
• Gradle은 이전 phase에서 만들고, 설정했던 task의 하위 집합을 결정 및 수행
• Task name argument을 바탕으로 어떤 task를 실행해야 하는지 결정
cf) Java 플러그인의 build task를 사용해 컴파일, 테스트 등을 할 수 있다.
buildNeeded / buildDependent
11. Gradle – Build Lifecycle
Initialization Configuration Execution
• Initialize resources
• Start daemon thread
• Figure out what to build
• Evaluate build.gradle
script
• Configure all the plugins
• Evaluate the task graph
• Runs all the previously
evaluated task
• Build the application