Aktualizacja profili obsługi w wierszu poleceń
Nie mogłem nic na ten temat znaleźć (może po prostu używam niewłaściwych haseł wyszukiwania..):
Staramy się stworzyć sensowne ustawienie ciągłej integracji dla naszych aplikacji. Aby mieć naprawdę rozsądną implementację, serwer kompilacji powinien być w stanie automatycznie odświeżyć używane profile aprowizacji od apple. Podobne do tego, co robi X-Code organizer, ale automagicznie za pomocą wiersza poleceń.
Jakieś wskazówki, Czy to w ogóle możliwe?
5 answers
Oto mój skrypt bash, gdzie pierwszym argumentem skryptu ($1) jest lokalizacja nowych profili.
rm -Rf ~/Library/MobileDevice/Provisioning\ Profiles/*
cp "$1"/*.* ~/Library/MobileDevice/Provisioning\ Profiles/
Zasadniczo wszystko, co znajduje się w folderze ~/Library/MobileDevice/Provisioning Profile/ może być używane do budowania (i pojawi się w Xcode).
Jeśli chcesz postawić System CI, niedawno wygłosiłem wykład na temat używania Hudsona do tego, i umieściłem kilka slajdów i notatek tutaj . Mój e-mail jest na mojej stronie, jeśli masz jakieś pytania na ten temat.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-03 11:02:27
Aktualizacja: Cupertino nie będzie już działać na najnowszym iTunes. Spójrz na użycie sigh zamiast
Wygląda na to, że ten interfejs wiersza poleceń bardzo pomoże:
Https://github.com/nomad/cupertino
Który pozwala na pobranie wszystkich profili dystrybucji w ten sposób (dzięki @tdubik):
ios profiles:download:all --type distribution
Zauważ, że nie pozwoli to na dystrybucję aplikacji do appstore, ale jeśli jesteś deweloperem, który buduje Mnóstwo Aplikacji dla Klientów, może to ułatwić proces" build and send to clients " całkiem sporo! Nie jestem pewien, czy byłoby to zgodne z zasadami Apple, czy nie, więc sprawdź to, zanim rozważysz, że opcja. Ale może to być coś do rozważenia w przypadku prototypów itp., a kiedy faktycznie chcą go wysłać, możesz im uzyskać własną licencję na program programistyczny.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-29 23:21:54
Spróbuj użyć apple_dev_center.rb z https://github.com/lacostej/apple-dev
Przetwarza informacje ze strony internetowej programisty apple i pobiera profile, aby automatycznie skopiować je do właściwej lokalizacji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-29 10:59:58
Sigh
może zarządzać profilami aprowizacji. Jednak nie obsługuje instalowania profili, które już pobrałeś. Jednak nadal uważam, że warto spojrzeć na ich źródło , aby dowiedzieć się, jak faktycznie instalują profil po pobraniu go.
Na szczęście jest bardzo podobna do odpowiedź Jamesa J :
def self.install_profile(profile)
UI.message "Installing provisioning profile..."
profile_path = File.expand_path("~") + "/Library/MobileDevice/Provisioning Profiles/"
uuid = ENV["SIGH_UUID"] || ENV["SIGH_UDID"]
profile_filename = uuid + ".mobileprovision"
destination = profile_path + profile_filename
# If the directory doesn't exist, make it first
unless File.directory?(profile_path)
FileUtils.mkdir_p(profile_path)
end
# copy to Xcode provisioning profile directory
FileUtils.copy profile, destination
if File.exist? destination
UI.success "Profile installed at \"#{destination}\""
else
UI.user_error!("Failed installation of provisioning profile at location: #{destination}")
end
end
Mam skrypt do wykonania tej lokalnej instalacji dla mnie:
#!/bin/bash -euo pipefail
BASH_SOURCE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$BASH_SOURCE_DIR"
# by default bash passes the glob characters if nothing matched the glob
# disable that
# http://stackoverflow.com/a/18887210/9636
shopt -s nullglob
# this creates a proper bash array, which we need since our profiles
# have funny characters in them
MOBILE_PROVISIONS=(*.mobileprovision)
# re-enable default nullglob behavior
shopt -u nullglob
# On a brand new machine that has never run any app on a development device
# the ~/Library/MobileDevice/"Provisioning Profiles" directory doesn't exist
mkdir -p ~/Library/MobileDevice/"Provisioning Profiles"
for mobileprovision in "${MOBILE_PROVISIONS[@]}"
do
uuid=$( ./uuid-from-mobileprovision.bash "${mobileprovision}" )
cp "${mobileprovision}" ~/Library/MobileDevice/"Provisioning Profiles"/"${uuid}".mobileprovision
done
Który zależy od innego uuid-from-mobileprovision.bash
skrypt:
#!/bin/bash -euo pipefail
if [ ! -f "${1}" ]
then
echo "Usage: $0 <path/to/mobileprovision/file>" 1>&2
exit 1
fi
UUID=$( grep --text --after-context=1 UUID "${1}" | grep --ignore-case --only-matching "[-A-Z0-9]\{36\}" )
if [ -z "${UUID}" ]
then
echo "Invalid mobileprovision file: ${1}" 1>&2
exit 2
else
echo "${UUID}"
fi
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-21 03:48:12
Od jakiegoś czasu staram się, żeby to zadziałało. W końcu się udało!!
Można użyć Fastlane sigh, aby pobrać i zainstalować tylko tymczasowy profil, którego potrzebujesz.
fastlane sigh renew --adhoc -n "provisional_profile_name"
--app_identifier "your_app_identifier" -u "apple_login _username" --ignore_profiles_with_different_name
Uwaga: polecenie to wymagało już żadnego tymczasowego profilu aplikacji zainstalowany w systemie. To rzuciło błąd dla mnie inaczej.
Provisional_profile_name = tylko nazwa profilu, nie potrzebuję przedłużenia.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-10 09:58:22