apk/ipa를 명령줄에서 UnityCloudBuild로 업그레이드
언젠가 바뀌어 무료라도 할 수 있다 공식
※19/06/26 추가
2018년 1월 정도부터 UnityCloudBuild, 유료화했군요(Advanced·Pro만)
몰랐습니다… 공식
※이 기사를 쓰고 있는 도중(2019/4/17)에 문득 구그면 작년 10월 공식 에…
그건 그렇고, 2017년 12월 15일에
Unity Cloud Build가 로컬 환경에서 만든 빌드 아티팩트를 업로드할 수 있습니다.
기사를 보았습니다.
그러나 웹에서가 아니라 CLI에서 업로드하고 싶습니다.
분명 누군가가 좋은 기사를 쓰는 것은 ...라고 생각했지만
놀랄 정도로 간단한 DeployGate 1가있는 탓인지,
혹시 애초에 관심이 없는지 기다려도 살지만 발견되지 않는다 2
CloudBuild 페이지 당을 보면 API 문서 발견
CloudBuild API Document(v1.0.0 시점)
h tps://부이 ld-아피. cぉd. 글쎄, ty3d. 코m/
좋아 만들어 볼까!
… 과연, 전혀 모르겠다
전에는 가지 않았다.
ChromeDeveloper에서 거동과 로그를 쫓아 어떻게든 할 수있었습니다 3
얼마나 많은 사람들이 사용하는지 모르겠지만 우선 공개
전제
unity DashBoard
에서 앱명 등록까지 끝난 것으로 합니다
아래 스쿠쇼의 문자열은 예이므로 DashBoard 바라보고 메모하십시오.
PROJECT_ID (여기에서는 Test)와 UPID (여기에서는 3dc ...) 메모
Test 아래의 ORG_ID (여기서는 developer ...) 메모
아티팩트 파일 이름은 아스키 코드 0x20 ~ 0x40 근처를 사용하면
%20에서 %40으로 변환하세요(URLEncode?)
초기 설정
API_KEY= #DashBoard - プロジェクト - Develop - Settings - Cloud Build - APIキーに書いてある
PROJECT_ID= #DashBoard - プロジェクト名
ORG_ID= #DashBoard - プロジェクト名の下に書いてある
UP_ID= #DashBoard - プロジェクト - プロジェクト名の横に書いてあるUPID
FILE_NAME= #成果物ファイル名 xxxx.ipa 等をURLEncode
EXT= #成果物の拡張子(つまりapkかipa)
FILE_SIZE= #成果物のファイルサイズ `wc -c < 成果物ファイル名` とか
if [ "${EXT}" = "apk" ]; then
PLATFORM=android
TYPE_NAME=".APK file"
TYPE_NAMEe=".APK%20file"
elif [ "${EXT}" = "ipa" ]; then
PLATFORM=ios
TYPE_NAME=".IPA file"
TYPE_NAMEe=".IPA%20file"
else
exit 1
fi
BUILD_API_DOMAIN="https://build-api.cloud.unity3d.com/api/v1"
ARTIFACT_API_DOMAIN="https://build-artifact-api.cloud.unity3d.com/api/v1"
BUILD_TARGET_ID="_local"
LOG=`mktemp --tmpdir=./`
function endJob {
echo $1
rm ${LOG}
}
빌드 영역 생성 및 빌드 번호 획득
curl -X POST -H "Content-Type: application/json" -H "Authorization: Basic ${API_KEY}" --data-binary "{\"platform\": \"${PLATFORM}\", \"label\": \"${COMMENT}\"}" ${BUILD_API_DOMAIN}/orgs/${ORG_ID}/projects/${PROJECT_ID}/buildtargets/${BUILD_TARGET_ID}/builds -o ${LOG} -s
BUILD_NO=`cat ${LOG} | jq .[0].build`
STAT=`cat ${LOG} | jq .[0].buildStatus`
if [ "${STAT}" != "\"success\"" ]; then
endJob "BuildArea - Error: ${STAT}"
exit 1
fi
아티팩트 생성
curl -X POST -H "Content-Type: application/json" -H "Authorization: Basic ${API_KEY}" --data-binary "{\"name\":\"${TYPE_NAME}\",\"primary\":true,\"public\":false,\"files\":[{\"filename\":\"${FILE_NAME}\",\"size\":${FILE_SIZE}}]}" ${ARTIFACT_API_DOMAIN}/projects/${UP_ID}/buildtargets/${BUILD_TARGET_ID}/builds/${BUILD_NO}/artifacts -o ${LOG} -s
STAT=`cat ${LOG}`
if [ "${STAT}" != "Created" ]; then
endJob "Generate Artifact - Error: ${STAT}"
exit 1
fi
업로드
hc=$( curl -d "" -X POST -H "Upload-Length: ${FILE_SIZE}" -H 'Tus-Resumable: 1.0.0' -H 'Content-Type: application/offset+octet-stream' -H "Authorization: Basic ${API_KEY}" ${ARTIFACT_API_DOMAIN}/projects/${UP_ID}/buildtargets/${BUILD_TARGET_ID}/builds/${BUILD_NO}/artifacts/${TYPE_NAMEe}/upload/${FILE_NAME} -o ${LOG} -w '%{http_code}\n' -s )
if [ $hc != 201 ]; then
STAT=`cat ${LOG}`
endJob "Upload Post - Error: $hc\n${STAT}"
exit 1
fi
hc=$( curl -X PATCH -H 'Upload-Offset: 0' -H "Content-Length: ${FILE_SIZE}" -H 'Tus-Resumable: 1.0.0' -H 'Content-Type: application/offset+octet-stream' -H "Authorization: Basic ${API_KEY}" --data-binary @"${1}" ${ARTIFACT_API_DOMAIN}/projects/${UP_ID}/buildtargets/${BUILD_TARGET_ID}/builds/${BUILD_NO}/artifacts/${TYPE_NAMEe}/upload/${FILE_NAME} -o ${LOG} -w '%{http_code}\n' -s)
if [ $hc != 204 ]; then
STAT=`cat ${LOG}`
endJob "Upload Patch - Error: $hc\n${STAT}"
exit 1
fi
공유 링크 만들기
# GET:既に生成済みのShareID取得、POST:ShareID生成、DELETE:ShareID削除
curl -d "" -X POST -H "Content-Type: application/json" -H "Authorization: Basic ${API_KEY}" ${BUILD_API_DOMAIN}/orgs/${ORG_ID}/projects/${PROJECT_ID}/buildtargets/${BUILD_TARGET_ID}/builds/${BUILD_NO}/share -o ${LOG} -s
STAT=`cat ${LOG} | jq .shareid | gsed 's/"//g'`
if [ "${STAT}" == "null" ]; then
cat ${LOG}
endJob "ShareLink - failed"
exit 1
fi
SHARE_URL="https://developer.cloud.unity3d.com/share/${STAT}"
#ここらへんで SHARE_URL をチャット等に送る
endJob "success"
완성된 SHARE_URL을 채팅이나 메일 등에 흘리면 OK인가.
Android, iOS에서 다운로드, 설치, 실행할 수 있었습니다.
모두 행복해 ~ ~
규약 위반이라면 기사 지웁니다 ....
iOS만이라면 TestFlight, apk만이라면 GooglePlay 테스트 전송이라고 할지도 모르겠네요 ↩
(1주일 기다렸을 뿐입니다만) ↩
실제로 만든 것은 2017년 12월 28일. 1년 이상 자고 있었습니다. ↩
Reference
이 문제에 관하여(apk/ipa를 명령줄에서 UnityCloudBuild로 업그레이드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/JmzSpR/items/394120364b921d5a1678텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)