1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Azure Pipelines で使用する vmImage の種類を確認したいとき

Posted at

概要

Azure PipelinesでCI対応して定期ビルドしている環境でvmImageをlatest指定するのではなく、特定のバージョンで固定している場合、定期的にvmImageの最新情報を知りたいときどうしたらいいのか少し迷いまして。

今回は、XamarinでiOSおよびAndroidをmacOSのvmImageを使ってアプリビルドしている環境をフォーカスしてまとめていきます。

Can't resolve the reference 'System.Void UIKit.UITabBar::set_ScrollEdgeAppearance

背景としてこのエラーが起きてXamarinのiOSがビルドできなくなり、調査して解消できた詳細のまとめでもあります。

"/Users/runner/work/1/s/xxxxxxxxxx.sln" (default target) (1) ->
"/Users/runner/work/1/s/xxxxxxxxxx.iOS/xxxxxxxxxx.iOS.csproj" (default target) (4) ->
(_CompileToNative target) -> 
  MTOUCH : error MT2101: Can't resolve the reference 'System.Void UIKit.UITabBar::set_ScrollEdgeAppearance(UIKit.UITabBarAppearance)', referenced from the method 'System.Void Xamarin.Forms.Platform.iOS.TabbedRenderer::UpdateiOS15TabBarAppearance()' in 'Xamarin.iOS, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065'. [/Users/runner/work/1/s/xxxxxxxxxx.iOS/xxxxxxxxxx.iOS.csproj]

    7 Warning(s)
    1 Error(s)

Time Elapsed 00:02:22.74
##[error]Xamarin.iOS task failed with error Error: The process '/Library/Frameworks/Mono.framework/Versions/Current/Commands/msbuild' failed with exit code 1. For guidance on setting up the build pipeline, see https://go.microsoft.com/fwlink/?LinkId=760847.

ググったところXamarin.Formsのissuesにも同じエラーで質問している人がいるもののXamarinをバージョンアップすれば解消できたとあり、Closeされてるもののその後にまだエラー起きてると書き込んでいる人もいるので、とりあえず作業してみることに。

vmImages

公式のMicrosoft がホストする Azure Pipelines - Azure Pipelines のソフトウェアの表に指定できるvmImageについてまとめられている。ただし、ここに記載されている情報は最低限のものなので、”含まれるソフトウェア”の列にあるリンク先で最新情報が把握できる。

現在2022/03/08時点では、actions/virtual-environments/tree/main/images/macosを確認してもmacOSで指定できる最新バージョンは 11.6 ことが確認できた。

スクリーンショット 2022-03-08 18.27.40.png

select-xamarin-sdk.sh

上記、公式ドキュメントの”MacOS で Xamarin SDK のバージョンを設定する”で解説されている内容でAzure PipelinesのYAMLからvmImage内のXamarinのバージョンを指定できることがわかる。

開発中のXamarinのバージョンを確認するには次のように詳細を確認できる。
Xamarinプロジェクト内でXamarinのバージョンを指定する設定が見当たらないので諸々注意が必要。

そしてvmImage内でどんなバージョンを指定できるのか先ほどのmacos-11-Readme.mdのXamarinを確認するとXamarin bundlesに表があるので確認する。
※スクショは、現在2022/03/08時点の内容なので必ず本家を確認すること。

スクリーンショット 2022-03-09 11.02.38.png

Xcode

Xamarin同様にXcodeのバージョンも指定できるので最新がどのバージョンなのかを確認する。
※スクショは、現在2022/03/08時点の内容なので必ず本家を確認すること。

スクリーンショット 2022-03-09 11.03.07.png

azure-pipelines.yml

一部抜粋して上記の内容を実際に設定すると以下のようになる。

  - job: iOS
    pool:
      vmImage: 'macOS-11'

    variables:
      DOTNET_SDK_VERSION: '3.1.415'
      MONO_VERSION: '6_12_13'
      XCODE_ROOT_PATH: '/Applications/Xcode_13.2.1.app'

    steps:
      - task: UseDotNet@2
        inputs:
          packageType: 'sdk'
          version: '$(DOTNET_SDK_VERSION)'

      - script: sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh $(MONO_VERSION)

      - script: echo '##vso[task.setvariable variable=MD_APPLE_SDK_ROOT;]'$(XCODE_ROOT_PATH);sudo xcode-select --switch $(XCODE_ROOT_PATH)/Contents/Developer


1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?