반응형
빌드머신의 보안 정책 때문에 방화벽 뒤의 빌드머신을 설정 할 일이 생겼는데
아~ 겁나 번거롭고 귀찮네요...... -0-
어찌저찌 빌드 성공하기 까지 노력의 결과(*삽질)들을 기록합니다.
유니티 설정하면서 허용한 도메인
아래 명시된 도메인들은 asterisk(*)붙여서 방화벽에(HTTP, HPPTS 모두) 등록되었습니다.
ex) *.package.openupm.com
-
package.openupm.com
-
packages.unity.com
-
download.packages.unity.com
-
dl.bintray.com
-
api.bintray.com
-
akamai.bintray.com
-
upm-cdn.unity.com
-
dl.google.com
-
license.unity3d.com
-
core.cloud.unity3d.com
-
public-cdn.cloud.unity3d.com
-
download.unity3d.com
-
cloudmedia-docs.unity3d.com
-
aka.ms
-
unityregistry-pa.googleapis.com
-
go.microsoft.com
-
developer.microsoft.com
-
visualstudio.microsoft.com
-
download.visualstudio.microsoft.com
-
download.microsoft.com
-
download.visualstudio.com
-
developer.android.com
-
services.gradle.org
안드로이드 빌드 때 오류로 인해 허용한 도메인
Android SDK 관련인거 같은데 정확히 뭔지는 모르겠고 Curl error 발생했을 때 허용한 도메인
Error
-
java.net.SocketException: Connection reset
-
Curl error 56: Recv failure: Connection was reset
-
상태
-
위 두 오류가 기록 되면서 추가 로그 없이 무기한 빌드중인 상태
도메인
결과
-
Curl 에러는 사라졌고 Socket 에러는 있지만 안드로이드 빌드는 잘 진행 됨
환경변수에 아래 두 변수는 추가되어 있어야 하네요 지워봤더니 Curl이 뜨지는 않는데 무한빌드상태가 되는건 동일함
-
ANDROID_HOME
-
JAVA_HOME
아.... 그 때 그 때 다르네 되다가 안되다가
socket 오류는 꾸준히 있고
요것도 추가 해봐야겠다
소용없었고
......
결국 no-https
sdkmanager 명령어 결과 차이
sdkmanager list --verbose
인터넷 제한 없는 PC에서 (빌드에 아무런 문제 없는 PC)
인터넷 제한된 PC에서 (빌드에 문제 있는 PC)
구글링 해본 결과 sdkmanager 실행할 때 --no_https 옵션을 사용해보라는 글이 있었고빌드에 문제있는 PC에서 명령어 실행결과 실제 차이가 있었습니다.
sdkmanager list --verbose
sdkmanager list --verbose --no_https
그리하여 sdkmanager.bat 파일의 내용을 살짝 변경해서
(빨간 네모 영역의 옵션을 추가 했습니다.)
드디어 빌드가 잘 진행됩니다….. ㅠㅠ
하지만....숙제가 남았네요
--no_https 옵션을 추가 해서 동작하게 하는 것은 임시방편일 뿐이라 생각이 드는데
이게 왜 동작하는지?
--no_https없이도 동작하게 하려면 어떻게 해야 하는지?
728x90
--no_https 옵션 없이 가능해 졌습니다.
관리자 분이 설정해준거라 정확히 어떤 목록이 추가되었는지는 모르겠으나
방화벽에 아래 링크의 대부분의 도메인이 등록되었다고 했습니다.
하아..... ㅠ
--no_https 없이 안드로이드 빌드가 잘 되고 있었는데
종종 (10번에 한두번 정도) 실패하네요
전 처럼 오류가 있는것도 아니고 인터넷의 다른 사례들처럼 Android SDK not found 관련 로그가 기록되지도 않지만
여전히 android sdk detecting 출력 후 AndroidSDK에 대한 정보를 찾지 못하고 헤메는 것으로 보여집니다.
실패하는 빌드 초반로그에는 아래와 같은 AndroidSDKTools 경로가 출력되지 않습니다.
하여 build agent machine에 아래 세 개 환경변수는 모두 제거 하고
-
ANDROID_HOME
-
ANDROID_NDK_ROOT
-
JAVA_HOME
안드로이드 빌드 때 editor에 설정된 경로를 환경변수로 심어 주었습니다.
#if UNITY_ANDROID
string sdkPath = $"[ANDROID_HOME] :\nbefore => '{Environment.GetEnvironmentVariable("ANDROID_HOME")}'\n";
string javaPath = $"[JAVA_HOME] :\nbefore => '{Environment.GetEnvironmentVariable("JAVA_HOME")}'\n";
string ndkPath = $"[ANDROID_NDK_ROOT] :\nbefore => '{Environment.GetEnvironmentVariable("ANDROID_NDK_ROOT")}'\n";
Environment.SetEnvironmentVariable("ANDROID_HOME", AndroidExternalToolsSettings.sdkRootPath);
Environment.SetEnvironmentVariable("JAVA_HOME", AndroidExternalToolsSettings.jdkRootPath);
Environment.SetEnvironmentVariable("ANDROID_NDK_ROOT", AndroidExternalToolsSettings.ndkRootPath);
sdkPath += $"after => '{Environment.GetEnvironmentVariable("ANDROID_HOME")}'";
javaPath += $"after => '{Environment.GetEnvironmentVariable("JAVA_HOME")}'";
ndkPath += $"after => '{Environment.GetEnvironmentVariable("ANDROID_NDK_ROOT")}'";
Debug.Log($"{sdkPath}\n{javaPath}\n{ndkPath}");
#endif
일단 오류없이 빌드는 잘 돌고 있는데 이대로 또 며칠 지켜봐야 할 것 같습니다.
반응형
아 또... 발생 하네요....
정상일 때와 비정상일 때 차이
정상일 때
비정상일 때
성공과 실패 로그들을 쭈~욱 비교 해 보니까
성공일 때는 아래 로그가 찍혀 있고 실패일 때는 아예 없습니다.
File C:\Users\*******\.android\repositories.cfg could not be loaded.
검색결과 빈 파일이라도 해당 경로에 .cfg파일을 생성하면 메세지가 사라진다고 하니
뭐 지푸라기라도 잡는 심정으로 생성 후 빌드 해 보겠습니다.
일단 빌드는 잘 되고
이번 변경사항으로 뭔가 차이점이 생겼는데요
전에는 빨간구간과 노란구간 사이에 로그가 찍히면서 시간차가 좀 있었는데
지금은 곧바로 붙어 있습니다.
뭔가 느낌이 좋습니다. -0-
하지만 며칠 또 지켜봐야겠죠? ;;;
라고 말하자마자 그 다음 빌드에 또 에러로그가 생겼는데....
Failed to download any source lists!
java.net.SocketException: Connection reset
요 두 개 로그가 몇 차례 반복된 뒤에 AndroidSDKTools:가 이쁘게 출력 되는데.....
어......!!!!!
뭔가 느낌이 쎄~~~ 합니다.
AndroidSDKTools:가 출력되면 빌드 실패하는 경우가 없었는데
10분째 Running...이 사라지지 않고 있습니다.
일단 Timeout을 한 시간으로 걸었기 때문에 그 때까지는 기다려 보도록 합니다.
결국......
timeout으로 빌드 실패 되었습니다.
아... 뭣 때문에 그러는지 로그라도 이쁘게 남으면 좋겠는데....
추가로 아래와 같이 한시간가량 아무런 로그가 남지 않습니다.
일단 검색을 좀 더 해보며
위 내용에 따라
이전에 생성해봤던 .cfg 파일에 내용을 채워봅니다.
에휴~
15분 째 저 자리인걸 보니 글러 먹었습니다.
어짜피 글러 먹은거 timeout까지 기다리지 않고 취소 한 뒤
repositories.cfg 제거 후 다시 빌드 진행 해봐야겠습니다.
음...
repositories.cfg 삭제하니까 다시 이전처럼 빌드가 잘 되고 있기는 한데
도대체 무엇이 문제 일까요?
android외 다른 빌드들은 전혀 문제가 없는거 봐서 AndroidSDK관련된 이슈가 분명하기는 한데...
아 이거 도저히 안되겠네요
중간에 빌드오류가 있긴 했지만 Execution timeout 이라고 표시된것들이 다 문제가 되는 빌드인데... 너무 많습니다.
이전에 --no_https 옵션 추가 했을 때는 빌드가 잘 되었던 기억이 있어서...
그거라도 다시 설정해 봅니다.
아~ 진짜 날잡고 unity 측에 물어봐야 할 듯 싶네요
이게 뭐하는 짓인가 싶기도 하지만 또 며칠 봅시다.
음....
--no_https 설정 후 양호한 모습이 보여지네요
원래 하루에도 두어번 이상은 항상 pending 상태가 발생 했었는데....
뭐 저 상태를 유지하며 꽤 오랜기간 지켜보겠지만
지금까지 이슈 상황을 정리해 보면
-
빌드머신이 속한 네트워크에 방화벽이 없으면 무조건 정상
-
빌드머신이 속한 네트워크의 방화벽에 https로 나가는 패킷에 제한이 있으면 pending
-
sdkmanager.bat 파일에 --no_https 설정하면 정상
위 내용들을 보면 간간히 https로 시도하는 패킷이 있는데 이게 어떤 domain에 접근하려고 하는지 찾아서 허용해주면 해결되지 않을까 싶긴하네요...
일단 확신을 얻기위해 --no_https 옵션으로 한달 정도 지켜 보겠습니다.
위 상태로 일주일 정도 지켜본 결과
pending 상태는 말끔히 사라졌다고 봐도 괜찮을 것 같네요
일주일 전(11일) --no_https 설정 후 한번도 pending을 만나지 않았습니다.
이전 --no_https 옵션으로 한달 정도 지켜 보았는데요
저~~~언혀 이상 없습니다.
이전 네트워크 관리자 분과 이야기 했을 때
https 로 나가는 것을 모두 풀면 --no_https 설정 없이도 정상 이였고,
https 로 나가는 것을 막고 whitelist만 허용 했을 때 이런 이슈가 발생하고 있는 것으로 보아
(http로 나가는 것은 모두 허용이라고 했습니다.)
아무래도 사내에서 https로 나가는 무엇인가가 노출되지 않고 숨어 있는 것 같습니다.
음....
어찌보면 별것도 아닌일에 너무 큰 시간을 쏟은것 같아 더이상은 트래킹 하지 않기로 했습니다.
이상 끝~
반응형
LIST
'IT > Unity3D 빌드오류' 카테고리의 다른 글
ios 앱 업로드시 privacy-sensitive 이슈 (0) | 2023.04.19 |
---|---|
XCode Could not produce class with ID 199. (0) | 2023.04.19 |
iOS 빌드 이슈 - 무한 대기 (0) | 2023.04.13 |
UnityException: Can not sign the application (0) | 2023.04.08 |
A problem occurred configuring project ':launcher'. (0) | 2023.04.08 |