11.2 C
New York
Wednesday, March 12, 2025

Github Actions .NET MAUI iOS publish error: No legitimate iOS code signing keys present in keychain


I’ve a .net8.0 maui utility that I’m making an attempt to add to testflight through github actions with xcode 16. I’ve created a brand new signing certificates and an Apple Retailer provisioning profile that makes use of that certificates. I am utilizing Steven Thewessen’s workflow from this information, however I am getting this error from my dotnet publish step:

- identify: Construct iOS
        run: dotnet publish ${{ inputs.project-file }} -c ${{ inputs.build-config }} -f ${{ inputs.dotnet-version-target}}-ios /p:ArchiveOnBuild=true --no-restore

/Customers/runner/.dotnet/packs/Microsoft.iOS.Sdk.net8.0_18.0/18.0.8319/instruments/msbuild/iOS/Xamarin.Shared.targets(1835,3): error : No legitimate iOS code signing keys present in keychain. You'll want to request a codesigning certificates from https://developer.apple.com. [/Users/runner/work/App/App/App/App.csproj::TargetFramework=net8.0-ios]
/Customers/runner/.dotnet/packs/Microsoft.iOS.Sdk.net8.0_18.0/18.0.8319/instruments/msbuild/iOS/Xamarin.Shared.targets(1835,3): error :          [/Users/runner/work/App/App/App/App.csproj::TargetFramework=net8.0-ios]

That is my cd-ios.yml workflow (with out all of the inputs from my cd-build.yml):

identify: iOS Publish

jobs:
  publish-ios:
    runs-on: macos-latest

    steps:
      - makes use of: maxim-lobanov/setup-xcode@v1
        identify: Set XCode model
        with:
          xcode-version: ${{ inputs.xcode-version }}

      - identify: Import iOS Certs
        makes use of: apple-actions/import-codesign-certs@v3
        with:
          p12-file-base64: ${{ secrets and techniques.dist-cert-p12 }}
          p12-password: ${{ secrets and techniques.dist-cert-password }}
      
      - identify: Obtain Provisioning Profiles
        id: provisioning
        makes use of: apple-actions/download-provisioning-profiles@v1
        with: 
          bundle-id: ${{ inputs.package-name }}
          profile-type: 'IOS_APP_STORE'
          issuer-id: ${{ secrets and techniques.appstore-issuer }}
          api-key-id: ${{ secrets and techniques.appstore-keyid }}
          api-private-key: ${{ secrets and techniques.appstore-private-key }}

      - identify: Checklist Certificates
        run: safety find-identity -v -p codesigning

      - identify: Checklist Downloaded Provisioning Profiles
        run: ls -lah ~/Library/MobileDevice/Provisioning Profiles/
    
      - identify: Checkout Repository
        makes use of: actions/checkout@v4

      - identify: Setup .NET ${{ inputs.dotnet-version }}
        makes use of: actions/setup-dotnet@v3
        with:
          dotnet-version: ${{ inputs.dotnet-version }}

      - identify: Set up MAUI Workloads
        run: dotnet workload set up maui

      - identify: Restore NuGet Packages
        run: dotnet restore ${{ inputs.sln-file }} --configfile ${{ inputs.nuget-config }}
        env:
          TELERIK_NUGET_KEY: ${{ secrets and techniques.telerik-nuget-api-key }}

      - identify: Model the app
        makes use of: managedcode/MAUIAppVersion@v1
        with:
          csproj: ${{ inputs.project-file }}
          model: ${{ github.run_number }}
          displayVersion: ${{ inputs.build-version }}.${{ github.run_number }}
          printFile: true

      - identify: Construct iOS
        run: dotnet publish ${{ inputs.project-file }} -c ${{ inputs.build-config }} -f ${{ inputs.dotnet-version-target}}-ios /p:ArchiveOnBuild=true --no-restore

      - identify: Add app to TestFlight
        makes use of: apple-actions/upload-testflight-build@v1
        with:
          app-path: ${{ github.workspace }}/${{ inputs.project-folder }}/bin/${{ inputs.build-config }}/${{ inputs.dotnet-version-target}}-ios/ios-arm64/publish/*.ipa
          issuer-id: ${{ secrets and techniques.appstore-issuer }}
          api-key-id: ${{ secrets and techniques.appstore-keyid }}
          api-private-key: ${{ secrets and techniques.appstore-private-key }}

The step downloading my provisioning profiles returns this:

Run apple-actions/download-provisioning-profiles@v1
Wrote IOS_APP_STORE profile 'iOS Staff Retailer Provisioning Profile: com.myteam.myapp' to '/Customers/runner/Library/MobileDevice/Provisioning Profiles/.mobileprovision'.
Wrote IOS_APP_STORE profile 'GithubActionsMobileApp' to '/Customers/runner/Library/MobileDevice/Provisioning Profiles/.mobileprovision'.

The second profile listed is the proper profile I wish to use.

The Checklist Certificates part returns this:

Run safety find-identity -v -p codesigning
  1)  "Apple Distribution: My Staff Identify (TeamID)"
     1 legitimate identities discovered

Which is the proper signing certificates, however I nonetheless get the error.

I’ve tried specifying within the publish step with /p:CodeSignProvision= to specify which of the 2 and I get the identical error.

I’ve tried downloading my profile, base64 encoding it and manually including it to my keychain with the steered code from github actions docs.

I’ve tried extracting the Provisioning Profile UUID and passing it on to the publish command with -p:CodesignProvision=$PROFILE_UUID, however that additionally does nothing.

I’ve revoked the signing certificates and deleted the provisioning profile, and created new ones. My provisioning profile is a App Retailer Join Distribution profile, and my certificates is a Distribution kind with the identify of my Staff because the ‘Certificates Identify’. Nothing appears to have any impact.

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest Articles