我正在与Xamarin.Forms合作开展一个宠物项目,我想知道是否有人有成功配置gitlab-ci.yml构建的经验。一般来说,配置.NET构建的材料似乎有限,在将两个版本串联起来之前,试着成功构建一个。已经尝试了每个项目.csproj的构建路径。
任何见解和经验都将受到赞赏。
目前.gitlab-ci.yml
id
答案 0 :(得分:0)
还没有,不幸的是,您需要Windows机器,前提条件:
您可以获取有关{.3}的更多信息,有关在.Net上构建新Xamarin形式所依赖的信息。
答案 1 :(得分:0)
是的,我们无需使用启动程序或AzureDevops即可完美运行。正如@AkashKava提到的那样,我必须使它运行在Mac构建代理/运行器上,并且我使用AppCenter's CLI commands作为其分发部分,还存储了证书,密钥库和配置文件。
因此,在一切运行之前,请确保还原nuget软件包并安装必要的库nuget
,msbuild
,appcenter
,...:
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的情况下进行某些操作。