> For the complete documentation index, see [llms.txt](https://docs.sysout.co.kr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.sysout.co.kr/web/back-end/jenkins/project-setting/build-step.md).

# 빌드 작업 설정

## 빌드 작업 설정

이 문서에서는 Webhook을 이용하여 전송된 프로젝트를 빌드하는 설정을 작성한다. &#x20;

`Maven`을 사용하여 빌드를 수행할 예정이므로 Jenkins가 설치된 PC에 Maven이 설치되어 있어야 한다.

### 빌드 작업 추가

<div align="left"><img src="/files/NPoYJw38Zp5ykSaxkEMw" alt=""></div>

`Add build step` - `Invoke top-level Maven targets` 를 선택하여 빌드 작업을 추가한다.

만약 Maven이 설치되어 있지 않다면 다음 문서를 참조하여 설치 및 Jenkins와 연동한다.

{% content-ref url="/pages/Up2Ai7ZWO0gXCqoJOgV3" %}
[Maven 연동](/web/back-end/jenkins/installation/maven.md)
{% endcontent-ref %}

### 정보 작성

Maven version을 지정하고 Gols에 `clean install`을 입력한다. 여러 줄에 걸쳐 입력하거나 중간에 띄어쓰기를 작성한다.

<div align="left"><img src="/files/nWQwTo0jHdDntLDHIZRF" alt=""></div>

### 고급 정보 작성

<div align="left"><img src="/files/CO7oyX5y7JLeuu7dkNSR" alt=""></div>

고급 버튼을 누르면 프로젝트를 빌드하기 위해 필요한 pom.xml의 위치를 지정할 수 있다. 별도의 설정이 없다면 다음과 같이 작성한다.

```
./(프로젝트명)/pom.xml
```

### Maven 빌드 후에 해야하는 일

Github에 Push가 발생해서 Webhook으로 프로젝트 정보가  Jenkins에 들어오고, 빌드까지 자동으로 수행되었다면 Apache Tomcat과 같은 WAS에 배포하도록 설정하는 작업이 남았다.

이 내용은 WAS의 종류에 따라 다를 수 있으며, 이 문서에서는 `Apache Tomcat 9`를 기준으로 작성한다.

톰캣을 설치PC가 아닌 외부에서 접속하고 싶을 경우는 다음 문서를 통해 접근 허용 설정을 먼저 해야한다.                  &#x20;

{% content-ref url="/pages/L6yfH17mNUHVGJdGuGAD" %}
[Tomcat Manager 설정](/web/back-end/apache-tomcat/tomcat-manager-extrenal-access.md)
{% endcontent-ref %}

### Undeploy project

프로젝트가 현재 서비스 중일 수 있으므로 배포 해제를 수행할 수 있어야 한다. 톰캣은 다음과 같은 URL형태로 배포 해제 기능을 제공한다.

* PROTOCOL://ID:PASSWORD\@HOST:PORT/manager/text/undeploy?path=/PROJECT

예를 들어 WAS의 관리 계정이 `admin` , 비밀번호가 `admin`이고 `localhost`의 `8080`번 포트를 사용하고 `http` 프로토콜을 사용한다면 home 프로젝트 배포 해제 주소는 다음과 같다. &#x20;

* <http://admin:admin@localhost:8080/text/undeploy?path=/home>

### Deploy project

배포 주소 역시 배포해제와 동일한 패턴을 가진다.

* PROTOCOL://ID:PASSWORD\@HOST:PORT/manager/text/deploy?path=/PROJECT\&update=true

단, 배포를 위해서는 파일이 필요하기 때문에 해당 주소만으로는 기존에 존재하는 프로젝트만 재배포가 가능하다.  &#x20;

### Using CURL

CURL은 터미널에서 HTTP 요청을 보낼 수 있도록 만들어진 요청 도구이다. 이 도구를 이용하면 각종 요청들을 짧은 코드로 수행할 수 있다.          &#x20;

#### 배포 해제

```
curl -v "PROTOCOL://ID:PASSWORD@HOST:PORT/manager/text/undeploy?path=/PROJECT"
```

#### 배포

```
curl -v --upload-file "업로드파일경로 " 
"PROTOCOL://ID:PASSWORD@HOST:PORT/manager/text/deploy?path=/PROJECT&update=true"
```

### 빌드 작업 추가  &#x20;

<div align="left"><img src="/files/xgL4otMoTp6zQDrOWZaV" alt=""></div>

배포 해제 스크립트와 배포 스크립트를 각각 작성한다.   &#x20;
