有没有人用gitlab-ci成功构建Xamarin.Forms?

时间:2017-03-13 05:24:17

标签: xamarin xamarin.forms gitlab-ci

我正在与Xamarin.Forms合作开展一个宠物项目,我想知道是否有人有成功配置gitlab-ci.yml构建的经验。一般来说,配置.NET构建的材料似乎有限,在将两个版本串联起来之前,试着成功构建一个。已经尝试了每个项目.csproj的构建路径。

任何见解和经验都将受到赞赏。

目前.gitlab-ci.yml

id

2 个答案:

答案 0 :(得分:0)

还没有,不幸的是,您需要Windows机器,前提条件:

  • Windows
    • 是的! .NET Framework仅在Windows OS中有效,因此要使用的计算机必须使用Windows。
  • Git
    • 您认为我们需要安装Git吗?好吧,这是个玩笑,很明显,我们要使用GitLab的方式需要git!
  • MSBuild
    • 要能够构建和发布我们的应用程序,我们需要安装MSBuild。

您可以获取有关{.3}的更多信息,有关在.Net上构建新Xamarin形式所依赖的信息。

答案 1 :(得分:0)

是的,我们无需使用启动程序或AzureDevops即可完美运行。正如@AkashKava提到的那样,我必须使它运行在Mac构建代理/运行器上,并且我使用AppCenter's CLI commands作为其分发部分,还存储了证书,密钥库和配置文件。

因此,在一切运行之前,请确保还原nuget软件包并安装必要的库nugetmsbuildappcenter,...:

before_script:
  - nuget restore

然后,用于创建Android质量检查apk文件:

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:我已经写了一篇文章,介绍如何using GitHub Actions在不使用您自己的Build Agent的情况下进行某些操作。