Да, мы заставили его работать безупречно, без использования загрузки или AzureDevops. Как упоминал @AkashKava, мне пришлось запустить его на Mac build agent / runner, и я использовал AppCenter's Команды интерфейса командной строки для его распределительной части, где я также хранил свои сертификаты, хранилище ключей и профили подготовки.
Поэтому, прежде чем все будет запущено, убедитесь, что вы восстановили пакеты nuget и установили необходимые библиотеки nuget
, msbuild
, _3 _, ...:
before_script:
- nuget restore
Затем для создания файла apk Android QA:
android_dev_apk:
stage: build
dependencies: []
tags:
- xamarin
script:
- msbuild {AppName}.sln $BUILD_VERBOSITY /t:Clean /p:Configuration=Dev
- msbuild {AppName}.sln $BUILD_VERBOSITY /t:Build /p:Configuration=Dev
- msbuild {AppName}.Android/{AppName}.Android.csproj $BUILD_VERBOSITY /t:PackageForAndroid /t:SignAndroidPackage /p:Configuration=Dev /p:AndroidKeyStore=True
Просто замените {AppName} на имя папки вашего приложения / имя приложения, которое было таким же в моем случае. Аналогично для iOS
ios_qa_app:
stage: build
dependencies: []
tags:
- xamarin
script:
- rm -rf {AppName}.iOS/bin/iPhone/QA
- msbuild {AppName}.sln $BUILD_VERBOSITY /t:Clean /p:Platform=iPhone /p:Configuration=QA
- msbuild {AppName}.sln $BUILD_VERBOSITY /t:Build /p:Platform=iPhone /p:ArchiveOnBuild=true /p:Configuration=QA
artifacts:
paths:
- {AppName}.iOS/bin/iPhone/QA/{AppName}.ipa
- {AppName}.iOS/bin/iPhone/QA/{AppName}.app.dSYM
expire_in: 10 day
when: on_success
only:
- schedules
except:
variables:
- $ProdBuild == "true"
Обратите внимание, что в script
все работает так, как если бы вы использовали Терминал, поэтому вы также можете просто ввести что-то вроде ls
, чтобы распечатать список файлов в этой папке в журнале вывода, или cd ..
или cd DirectoryName
, чтобы изменить папки.
Итак, чтобы распространять артефакт Android, добавьте это в свой скрипт Android:
- appcenter distribute release --app {CompanyInAppCenter}/{AndroidAppNameInAppCenter} --group "Collaborators" --file {AppName}.Android/bin/QA/{BundleIdentifier}-Signed.apk --token=${APPCENTER_API_TOKEN}
Наконец, чтобы распространить артефакт iOS, добавьте это в свой скрипт iOS:
- appcenter distribute release --app {CompanyInAppCenter}/{iOSAppNameInAppCenter} --group "Collaborators" --file {AppName}.iOS/bin/iPhone/QA/{AppName}.ipa --token=${APPCENTER_API_TOKEN}
PS: Я написал статью о том, как делать некоторые из этих вещей с помощью GitHub Actions без использования собственного агента сборки.
person
Saamer
schedule
03.08.2020