clientIOSId = $clientIOSId; $this->queue = config('queue.names.ios_generate_ipa'); } public function handle() { Log::info('IOSGenerateIpa::start, clientIOSId:' . $this->clientIOSId); $client = ClientIos::find($this->clientIOSId); if (!$client) { Log::error('IOSGenerateIpa id not exit', [ 'client_ios_id' => $this->clientIOSId ]); return; } if ($client->state == ClientIOSState::SUCCESS) { Log::info('IOSGenerateIpa id is successed', [ 'client_ios_id' => $this->clientIOSId ]); return; } if ($client->state == ClientIOSState::PENDING) { Log::info('IOSGenerateIpa id is pending', [ 'client_ios_id' => $this->clientIOSId ]); return; } $client->state = ClientIOSState::PENDING; $client->save(); $udid = $client->udid; $outIpaPemPath = base_path('scripts/sign/ipas/'.date('Ymd')); if (!file_exists($outIpaPemPath)) { mkdir($outIpaPemPath,0777, true); } $udidType = $udid . '-' . $client->type; $provPath = $outIpaPemPath . '/'. $udidType . '.prov'; $certfPath = $outIpaPemPath . '/'. $udidType . '.certf'; if ($client->type == ClientIOSType::BUYER) { $realIpaPath = Helps::ipaBuyerPath(); $appBundleId = 'com.pingco.daxiangzj'; } else { $realIpaPath = Helps::ipaSellerPath(); $appBundleId = 'com.pingco.yunduoxd'; } $shellPath = base_path('scripts/sign'); putenv('LANG=en_US.UTF-8'); $shell = "$shellPath/run.sh $appBundleId hanbin@pingco.com Zhang121748 2R4737WLD7 $udid $shellPath/CertificateSigningRequest.certSigningRequest $provPath $certfPath"; exec($shell,$output, $outcode); if ($outcode != 0) { Log::error('生成profile文件失败', [ 'code' => $outcode, 'error' => $output, 'udid' => $udid, 'shell' => $shell, ]); $client->state = ClientIOSState::FAIL_PROV; $client->save(); return; } $shellOutIpaPath = $outIpaPemPath . '/' . $udidType. '.ipa'; $shellIpa = "/usr/bin/zsign -k $shellPath/kefen.pem -p yunduoxd -m $provPath -o $shellOutIpaPath -z 9 $realIpaPath 2>&1"; exec($shellIpa,$outputIpa, $outCodeIpa); if ($outCodeIpa != 0) { Log::error('签名ipa文件失败', [ 'code' => $outCodeIpa, 'error' => $outputIpa, 'udid' => $udid, 'shell' => $shellIpa, ]); $client->state = ClientIOSState::FAIL_IPA; $client->save(); return; } $shellMv = "mv -f $shellOutIpaPath $realIpaPath"; exec($shellMv,$outputMv, $outCodeMv); if ($outCodeMv != 0) { Log::error('签名ipa文件失败', [ 'code' => $outCodeMv, 'error' => $outputMv, 'udid' => $udid, 'shell' => $shellMv, ]); $client->state = ClientIOSState::FAIL_MV; $client->save(); return; } $client->state = ClientIOSState::SUCCESS; $client->save(); Log::info('IOSGenerateIpa:: ipa build succeess~~~~~~~~~~~'); } }