| 개요

젠킨스를 사용하다 보면 원격으로 빌드를 유발이 필요한 경우가 생기는데, 다행히도 해당 기능을 제공하고 있다.

원격 빌드를 유발하는 방법에 대해 간단히 서술하고자 한다.

 

| JOB 설정

우선 원격 빌드를 유발할 잡 설정(Configure)으로 들어가서 `Build Triggers` 섹션으로 가면 `Trigger builds remotely (e.g., from scripts)` 토글을 켜면 Token을 입력할 수 있다.

 

  • JOB 설정 > 빌드 유발(Build Triggers) > 빌드 원격으로 유발 (Trigger build remotly) > Authentication Token

 

 

| 호출 URL

위에서 설정한 TOKEN은 query string형태로 함께 넘겨주면 되고, paramerter가 있을 경우에도 함께 넘겨 주면 된다. URL 아래와 같다.

// 파라미터가 없는 경우
{JENKINS_URL}/job/{JOB_NAME}/build?token={TOKEN_NAME}

// 파라미터가 있는 경우
{JENKINS_URL}/job/{JOB_NAME}/buildWithParameters?&token={TOKEN}&{KEY1}={VALUE1}&{KEY2}={VALUE2}
 

| API Token 생성 및 설정

보안 설정에 따라서 로그인 인증이 필요한 경우가 있다. 로그인 인증을 위해선 우선 API Token 발급이 필요하다.

 

※로그인 인증 과정을 생략해주는 플러그인도 있다.

 

  • People > {USER_ID} > Configure > API Token 섹션 > Add new Token

({JENKINS_URL}/user/{USER_ID}/configure)

 

이제 발급된 API Token과 함께 URL을 호출해주면 된다.

// 파라미터가 없는 경우
http://{USER_ID}:{API_TOKEN}@{JENKINS_URL}/job/{JOB_NAME}/build?token={TOKEN_NAME}

// 파라미터가 있는 경우
http://{USER_ID}:{API_TOKEN}@{JENKINS_URL}/job/{JOB_NAME}/buildWithParameters?&token={TOKEN}&{KEY1}={VALUE1}&{KEY2}={VALUE2}
 

| 참고

  • https://wiki.jenkins.io/display/JENKINS/Remote+access+API

 

 

반응형

| 개요

 

젠킨스에선 프로젝트를 주기적으로 실행할 수 있는 기능을 제공한다.
(리눅스 크론의 그것과 유사)

크론문법과 호환이 되며 간단하게 스케쥴링을 할 수 있고,
Parameterized Scheduler 플러그인을 사용하여 빌드에 인자를 주는 것 또한 가능하다.

하지만, 변경점이 없는 경우에도 지정된 스케쥴에 따라 반복 빌드 되기 때문에
‘지속적인 통합’이라는 관점에서 적합하지 않다.

(젠킨스에서도 SCM(SVN, GIT등)에서 변경점을 폴링하여 빌드가 되도록 구축할 것을 권장한다.)

그럼에도 데일리 빌드와 같은 간단한 작업을 예약하는데 유용하기 때문에
이 기능을 사용할 것이며, 이에 사용법에 대해 설명하려고 한다.

 

| 설정방법

1. 프로젝트 구성

  • 프로젝트 > 설정
  • [Build Triggers]에서 Build periodically with parameters 선택
  • Schedule란에 주기 설정

 

2. 주기 설정 방법

각각 5개(분, 시간, 일, 월, 요일)의 주기를 지정하고
사이사이 공백이나 탭을 두어 구분하여 구성하면 된다.

 

예) 45 9 * * 1-5

 

  • 분 시간 일 월 요일 순서
  • 분 (0-59), 시간 (0-23), 일 (1-31), 월 (1-12), 요일 (0-7)
  • 와일드 카드는 * 로 지정
  • N-N2: N과 N2사이의 범위를 지정
  • N-N2/X 혹은 */X: X의 간격을 지정 (X마다)
  • N,N1,N2…NM: 여러개의 값을 지정
  • 월요일: 1 ~ 토요일: 6, 0 또는 7: 일요일
주기를 설정할 경우 'H' 심볼 사용을 권장하는데, 이는 빌드가 고루 분산되어 실행되는 효과를 얻을 수 있다.
즉 젠킨스가 리소스나 부하의 정도에 따라 시간을 결정한다.

 

| 예제

1. 간격 시간 지정

# 매 30분 마다 실행
H/30 * * * *

# 매일 오전 9시, 오후 7시 실행
* 9,12 * * *

2. 특정 시간 지정

# 금요일 오후 7시 마다 실행(주중 결산)
H 19 * * 5

# 주중(월-금) 오전 8시 마다 실행
H 8 * * 1-5

3. 파라미터 지정

# 월-금, 오전 10시부터 오후 6시 중 매 2시간 마다 실행
H 10-18/2 * * 1-5 %PARAM_NAME1=PARAM1;PARAM_NAME2=PARAM2

# 예시
H 10-18/2 * * 1-5 %APP_VERSION=1.5.7;ASSET_BUNDLE_BUILD=true

4. 기타 예제

# 매 15분 마다
H/15 * * * *

# 매 시간 0 ~ 30분 사이의 10분 마다
H(0-29)/10 * * * *

# 매주 평일 오전 9시 45분 ~ 오후 3시 45분 사이의 매 2시간 마다
45 9-16/2 * * 1-5

# 매주 평일 오전 8시 ~ 오후 4시 사이 2시간 마다 1번
H H(8-15)/2 * * 1-5

# 12월을 제외한 매달 1일과 15일마다 1번
H H 1,15 1-11 *

 

반응형

| 문제

빌드에서 아래와 같은 에러와 함께 어드레서블 어셋 로드에 실패하는 경우

 

E/Unity: System.MissingMethodException: Default constructor not found for type UnityEngine.ResourceManagement.AsyncOperations.ProviderOperation`1[[UnityEngine.AddressableAssets.Initialization.ResourceManagerRuntimeData, Unity.Addressables, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]

 

| 해결방법

<linker>
    <assembly fullname="Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" preserve="all">
        <type fullname="UnityEngine.ResourceManagement.ResourceProviders.LegacyResourcesProvider" preserve="all" />
        <type fullname="UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider" preserve="all" />
        <type fullname="UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider" preserve="all" />
        <type fullname="UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider" preserve="all" />
        <type fullname="UnityEngine.ResourceManagement.AsyncOperations" preserve="all" />
    </assembly>
    <assembly fullname="Unity.Addressables, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" preserve="all">
        <type fullname="UnityEngine.AddressableAssets.Addressables" preserve="all" />
    </assembly>
	<assembly fullname="UnityEngine">
		<type fullname="UnityEngine.Rigidbody" preserve="all"/>
	</assembly>
</linker>

 

Assets폴더 하위에 link.xml 파일을 생성 위와같이, 어드레서블 내에 정의된 타입들을 정의

 

 

반응형

+ Recent posts