| 개요

 

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

크론문법과 호환이 되며 간단하게 스케쥴링을 할 수 있고,
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 *

 

반응형

 

버튼 이미지

 

으레 찾아오는 고민의 시기를 겪고 있는 요즘.

이 고민을 떨쳐낼 어떤 작은 실마리 약간의 힌트라도 얻을 까 싶어서 집어든 책

저자와 목차조차 읽어보지 않고 구매했었던 책이어서

몇장을 읽어내려간 뒤에야, 국내 1세대 개발자 6명의 저자가 동시 집필한 책인걸 알게 되었다. (그 중에선 아카데미때 교수님으로 계셨던 이른바 '해골책'의 리빙 레전드 김용준 교수님도 계셔서 반가운 마음이 들었다)

결론부터 말하자면 이 책에는 30대에 찾아 온 사춘기를 해결해줄만한 내 맘을 동하게 하는 그 무언가는 없었다. 시작하는 이에게 초점이 맞춰져 있기도 하고, 한분 한분 족적을 남긴 1세대 게임 개발자 6분의 경험과 감정들을 전해 듣기엔 300페이지 남짓한 분량은 충분하지 못했던 거 같다.

우스갯소리 반 진심으로 게임 개발자의 마지막 테크트리는 치킨집 사장님이라던 때가 있었다. 우스움 뒤에 따라오는 씁쓸함은 우리의 끝에 어떤 모습인지 알 수 없었기 때문이다. 그만큼 태동한지 짧은 업계이고, 장기간 필드에서 몸담는 사례가 적었기 때문에 저자 한명 한명의 사례는 정말 소중하지 않을 수 없다.

저자들이 겪었던 다양한 경험들과 서로 다른 길 위에서 어떻게 걸어가고 있는지를 엿볼 수 있는 그것 하나만으로 이 책은 읽을 만하다고 할 수 있겠다.

 

 

반응형

| 문제

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

 

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