Кто-нибудь успешно построил Xamarin.Forms с помощью gitlab-ci?

Я работаю над домашним проектом с Xamarin.Forms, и мне интересно, имел ли кто-нибудь опыт успешной настройки сборок gitlab-ci.yml. Похоже, что материал по настройке для .NET-сборок в целом ограничен, пытаюсь удачно построить одну, прежде чем объединить обе сборки. Пробовали для каждого проекта .csproj для пути сборки.

Любое понимание и опыт будут оценены.

Текущий .gitlab-ci.yml

image: mono

variables:
   Solution: Solution.sln

stages:
  - build
  - test
  - deploy

before_script:
  - nuget restore $Solution

build:
  stage: build
  script:
    - MONO_IOMAP=case xbuild /p:Configuration="Release" /p:Platform="iPhone" /t:Build $Solution

person Shazbot    schedule 13.03.2017    source источник
comment
Есть ли в этом успех?   -  person jzeferino    schedule 29.06.2017
comment
@jzeferino есть проблема с репозиторием GitLab для .NET, несколько примеров которой есть в комментариях. Пока ничего не объединено, но есть хорошие отправные точки. gitlab.com/gitlab-org/gitlab-ci-yml/issues/ 12   -  person Shazbot    schedule 30.06.2017
comment
Я посмотрю, но я планирую использовать с ним торт.   -  person jzeferino    schedule 30.06.2017
comment
Там есть пример Cake от @bravecobra, который может помочь, ха-ха.   -  person Shazbot    schedule 30.06.2017
comment
Для Xamarin.Forms вам нужен либо агент сборки для Windows, либо для Mac, я не думаю, что в gitlab есть какой-либо из них. Вы можете использовать appcenter.ms в любом случае бесплатно.   -  person Akash Kava    schedule 10.09.2018


Ответы (2)


Да, мы заставили его работать безупречно, без использования загрузки или 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
comment
Спасибо за ответ, Саамер! Я не прикасался к Xamarin годами, и у меня не будет возможности проверить себя, но если кто-то еще это сделает, дайте мне знать, и я помечу как принятый. - person Shazbot; 04.08.2020
comment
Не беспокойся, @Shazbot! Я просматривал самые старые оставшиеся без ответа вопросы Xamarin и нашел вот это. И понял, что использую GitLab для CI / CD приложений Xamarin iOS и Android. Так что я подумал, что поделюсь, тем более что многие люди, кажется, ищут ответ :) - person Saamer; 04.08.2020

еще нет, к сожалению, вам понадобится машина с Windows, предварительные условия:

  • Windows
    • Yeah! .NET Framework only works in Windows OS, so the machine you are going to use needs to be using Windows.
  • Git
    • Do you think we need Git installed? Alright, that’s a joke, it’s obvious we need git, by the way we are going to use GitLab!
  • MSBuild
    • To be able to build and publish our application, we need to have MSBuild installed.

Дополнительную информацию можно получить здесь на построении на .Net, от которого зависят новые формы Xamarin.

person LeRoy    schedule 22.08.2019