标签: fastlane

Jenkins/Fastlane:致命错误:无法读取“[存储库 url]”的用户名:设备未配置

在我的Jenkins CI-Pipeline 中,我使用Fastlane操作push_to_git_remote来执行 git 推送(在之前的步骤中,完成了自动提交)。但是,当我触发 Jenkins 构建时,出现以下错误:

fatal: could not read Username for 'https://...': Device not configured

在其他 stackoverflow 线程上,我找到了没有提交的解决方案。然而,这不是问题所在。另外,当我在构建服务器上本地执行 fastlane 操作(没有 Jenkins)时,我必须添加我的 git 存储库凭据,然后一切正常。

你有什么想法?

git push github jenkins fastlane

6
推荐指数
0
解决办法
707
查看次数

带有 Github Actions 和 Fastlane 的 Android CI/CD

我正在使用 fastlane 自动部署到 Play 商店。这里以 alpha 通道为例。

lane :alpha do    
    gradle(task: 'clean')
    gradle(
      task: 'assemble',
      build_type: 'Release',
      properties: {
        "android.injected.signing.store.file" => ENV["ANDROID_KEYSTORE"],
        "android.injected.signing.store.password" => ENV["ANDROID_KEYSTORE_PASSWORD"],
        "android.injected.signing.key.alias" => ENV["ANDROID_KEY_ALIAS"],
        "android.injected.signing.key.password" => ENV["ANDROID_KEY_PASSWORD"],
      }
    )
    upload_to_play_store(track: 'alpha')
end
Run Code Online (Sandbox Code Playgroud)

我想使用 Github 操作自动执行此部署。每当发生提交时staging,运行fastlane alpha. 然而,我遇到的问题是版本控制。我需要versionCode在我的build.gradle文件中添加它。我在运行之前一直手动执行此操作fastlane alpha

我想在提交之前无需手动更改此值,如何实现此目的?

我见过这个fastlane 插件可以增加版本代码。例如,如果我在 versionCode 为 1 时提交一次,那么我的工作流程将自动将 增加到 2。versionCode当我再次提交时,theversionCode仍将是 1,Github 会将其更改为 2。但是,Play 商店需要versionCode3. 理想的解决方案是让 Github 从 Google Play 商店查询versionCode …

android github fastlane github-actions

6
推荐指数
1
解决办法
5825
查看次数

Fastlane iOS 错误:没有与“com.companyname.appname”匹配的团队“team_id”的配置文件

我几天来就面临这个错误,并且由于这个问题我也无法手动发布 .ipa 文件

错误:找不到与“com.companyname.appname”匹配的团队“team_id”的配置文件:Xcode 找不到任何与“team_id/com.companyname.appname”匹配的配置文件。安装配置文件(通过将其拖放到 Xcode 的停靠项上)或在目标编辑器的“签名和功能”选项卡中选择不同的配置文件。(在项目“ProjectName”的目标“TargetName”中)

早些时候,我能够使用相同的配置文件构建并提交应用程序。

这是我在 fastfile 中的测试版名称

lane :beta do   
    version = get_version_number(target: 'TargetName')
    get_certificates           # invokes cert
    get_provisioning_profile   # invokes sigh
    
    increment_version_number(version_number: version)   
    increment_version_number(bump_type: 'patch')
   
    build_app(workspace: "ProjectName.xcworkspace", scheme: "SchemeName", skip_profile_detection: true )
    upload_to_testflight
   
  end

Run Code Online (Sandbox Code Playgroud)

请注意,我的代码签名设置为“手动”

我能够使用上述相同的配置提交应用程序进行测试飞行,但突然它停止工作。

我已尝试以下方法来解决该问题

  1. 我已经检查了代码,正如 fastlane 文档所建议的那样。
  2. 我已更改文件夹权限以允许所有用户访问。
  3. 我已向存储配置文件的用户授予权限。
  4. 我尝试将构建代码包装在gym()中
   Dir.chdir('../Pods') do
      disable_automatic_code_signing(
      path: 'ProjectName.xcodeproj',
      team_id: 'team_id',
      targets: ['TargetName'],
      profile_name: 'com.companyname.appname'
    )
      gym(workspace: 'ProjectName.xcworkspace',scheme: "SchemeName", clean: true)    
    upload_to_testflight
   end
Run Code Online (Sandbox Code Playgroud)
  1. 我还尝试移动“配置配置文件”文件夹以自动创建一个新文件夹。使用以下命令mv ~/Library/MobileDevice/Provisioning\ Profiles ~/Library/MobileDevice/Old\ Provisioning\ Profile 即使使用新创建的配置文件,问题仍然存在

仍然无法解决问题。

请帮忙。

提前致谢

ruby ios provisioning-profile react-native fastlane

6
推荐指数
1
解决办法
5900
查看次数

快车道,调用多平台

我有一个 React Native 项目。我能够像这样构建 iOS 和 Android 版本:

fastlane android build
fastlane ios build
Run Code Online (Sandbox Code Playgroud)

然而,这就是我想做的,所以 iOS 和 Android 都构建了。

fastlane all build
Run Code Online (Sandbox Code Playgroud)

这是我的 Fastfile 的简化版本:

default_platform(:android)

platform :android do
  desc "Simply build a release apk"
  lane :build do |options|
    gradle(
        project_dir: "android",
        task: "clean assemble",
        build_type: "Release",
    )
  end
end

platform :ios do
  desc "Simply build a release ipa"
  lane :build do |options|
    build_app(workspace: "ios/myproject.xcworkspace")
  end
end
Run Code Online (Sandbox Code Playgroud)

有人告诉我这都是 Ruby 代码,我应该能够做任何我想做的事情。所以,我希望“all”同时调用 Android 和 iOS。但是,我不懂 Ruby,所以非常感谢您的帮助。

ruby fastlane

6
推荐指数
1
解决办法
802
查看次数

是否可以使 fastlane 匹配默认选择苹果分发证书类型

Apple有不同的证书类型,现在当我构建我的项目时,fastlaneiOS distribution默认选择证书。显示错误:

error: No signing certificate "iOS Distribution" found: No "iOS Distribution" signing certificate matching team ID "***" with a private key was found. (in target 'Runner' from project 'Runner')
Run Code Online (Sandbox Code Playgroud)

我检查我的本地机器证书,发现该证书是最新的Apple Distribution证书。

  • 为什么选择快车道iOS distribution
  • 可以让它Apple Distribution默认选择吗?
  • fastlane如何选择证书?

这是我的本地计算机证书(现在我重复使用该证书来签署应用程序):

在此输入图像描述

这是我的 fastlane 比赛配置:

default_platform(:ios)

platform :ios do
  desc "Description of what the lane does"
  lane :beta do
    xcode_select "/Applications/Xcode_12.4.app"

    create_keychain(
        name: ENV['MATCH_KEYCHAIN_NAME'],
        password: ENV["MATCH_KEYCHAIN_PASSWORD"],
        default_keychain: true,
        unlock: true,
        timeout: 3600,
        lock_when_sleeps: false
    )

    match( …
Run Code Online (Sandbox Code Playgroud)

ios fastlane

6
推荐指数
1
解决办法
909
查看次数

具有 fastlane 和 flutter 的 Github 工作流缓存路径

我正在尝试使用缓存优化 android 和 ios 的 CICD 部署工作流程,但缓存路径有问题。当不缓存工作流程时效果很好,但在缓存时,fastlane 操作找不到 flutter 或 pod,并且我收到类似“error: /Users/runner/work/xxx/xxx/ios/Flutter/Release.xcconfig:1: ”的错误:在搜索路径中找不到包含的文件“Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig”(在项目“Runner”的目标“Runner”中)”

name: Deploy staging

on:
  workflow_dispatch:
    inputs:
      lane:
        description: "Staging lane to use : alpha or beta"
        required: true
        default: "alpha"

jobs:
  deploy-to-ios:
    runs-on: macos-latest
    timeout-minutes: 30

    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Setup Flutter Cache
        id: cache-flutter
        uses: actions/cache@v2
        with:
          path: /Users/runner/hostedtoolcache/flutter
          key: ${{ runner.os }}-flutter
          restore-keys: |
            ${{ runner.os }}-flutter-

      - name: Setup Flutter
        uses: subosito/flutter-action@v1
        if: steps.cache-flutter.outputs.cache-hit != 'true'
        with:
          channel: …
Run Code Online (Sandbox Code Playgroud)

caching ios fastlane flutter github-actions

6
推荐指数
0
解决办法
1533
查看次数

EAS 构建找不到 aws-exports

我有一个使用 AWS Amplify 的 Expo 项目。我目前正在使用 Expo 的 EAS 在移动设备上进行部署。

\n

我经常遇到这个错误:

\n
\xe2\x9d\x8c Metro encountered an error:\nUnable to resolve module ./src/aws-exports from /Users/expo/workingdir/build/App.tsx:\n\nNone of these files exist:\n  * src/aws-exports(.native|.ios.ts|.native.ts|.ts|.ios.tsx|.native.tsx|.tsx|.ios.js|.native.js|.js|.ios.jsx|.native.jsx|.jsx|.ios.json|.native.json|.json)\n  * src/aws-exports/index(.native|.ios.ts|.native.ts|.ts|.ios.tsx|.native.tsx|.tsx|.ios.js|.native.js|.js|.ios.jsx|.native.jsx|.jsx|.ios.json|.native.json|.json)\n  11 | import Amplify from 'aws-amplify';\n> 12 | import awsconfig from './src/aws-exports';\n  15 | Amplify.configure(awsconfig);\n
Run Code Online (Sandbox Code Playgroud)\n

但是,我确实有该文件aws-exports,并且可以在本地正常运行。有时我可以毫无问题地构建。还没有弄清楚它何时发生或不发生的模式。

\n

我怀疑这可能与gitignore(我认为EAS可能会在上传到服务器之前检查它)有关。我已经尝试运行该命令--clear-cache,但没有注意到任何效果。

\n

关于我能做什么有什么建议吗?:)

\n

typescript fastlane expo aws-amplify

6
推荐指数
1
解决办法
2532
查看次数

测试 SPM 包时 Fastlane 扫描随机失败 - IDEContainerErrorDomain Code=6

我有一个由多个 SPM 包组成的项目。我正在使用 Fastlane 对每个包执行测试,如下所示

lane :tests do
  TEST_PACKAGES.each { |package|
    single_test(package: package, devices: TEST_DEVICES)
  }
end

lane :single_test do |options|
  package = options[:package]
  devices = options[:devices]
  scan(
      package_path: package,
      scheme: package,
      devices: devices,
      output_directory: './' + package  + '/' + TEST_OUTPUT_DIR,
      buildlog_path: TEST_BUILDLOG_PATH,
      derived_data_path: DERIVED_DATA_PATH,
      code_coverage: true,
      result_bundle: true,
      fail_build: false,
      clean: true,
      configuration: "Debug"
    )     
end
Run Code Online (Sandbox Code Playgroud)

问题是,这会随机失败 - 有时在第一个包上,有时在第二个包上,有时在其他包上,并出现与此类似的错误:

错误:错误 Domain=com.apple.dt.IDEContainerErrorDomain 代码=6“无法将“swift-custom-dump”作为“Swift 包代理”打开,因为它已作为“Swift 用户管理的包文件夹”打开。”

出现几个类似的错误,涉及特定包使用的依赖项。

这种行为没有一致性,因为简单地fastlane tests再次调用而不进行任何更改,将导致不同包的测试失败。

可能是什么原因?

ios fastlane swift-package-manager

6
推荐指数
1
解决办法
1839
查看次数

应用扩展可以有条件地包含在构建中吗?

我正在开始开发 2 个应用程序扩展,我想按如下方式设置我的构建:

  • 面向 App Store 的构建不应包含任何扩展
  • 用于 TestFlight 的构建应包括几乎准备就绪的扩展
  • 本地构建应包含两个扩展

目前,我对每个项目都有不同的构建配置,以显示和隐藏应用程序的其他方面(在某些情况下也包括编译器标志)。我使用 fastlane 来进行构建。

据我所知,添加或删除应用程序扩展的唯一方法是:

  • 将主目标复制两次,并为上述每个构建使用一个(缺点 - 必须维护 3 个目标副本,直到扩展完全完成)
  • 在构建之前手动添加/删除扩展(缺点 - 无法从 CI 环境中的给定分支构建 TestFlight 和 App Store,因为需要手动干预)

有人能想出更好的解决方案来有条件地包含应用程序扩展吗?

xcode conditional-compilation xcodebuild ios-app-extension fastlane

5
推荐指数
1
解决办法
253
查看次数

向 Play 商店提交 Expo 版本时显示“此应用程序不允许使用 APK”

我正在尝试向 Google Play 内部测试提交构建,但失败并出现以下错误: Google Api Error: Invalid request - APKs are not allowed for this application

我正在运行以下命令:

eas build --profile development --platform android # works successfully
eas submit -p android
Run Code Online (Sandbox Code Playgroud)

运行时,提交Select a build from EAS不起作用(返回Couldn't find any Android builds for this project on EAS servers. It looks like you haven't run 'eas build' yet.),因此我从构建命令提供构建 ID。我已经设置buildTypeapp-bundle,但它仍然会返回错误。在提交日志中,我注意到:

skip_upload_apk | false

我可以将其更改为吗true?这会有帮助吗?我在运行 eas commit 之前手动更新了构建。可能相关的问题:在手动上传期间,它也不接受 APK 文件,因此我必须上传 AAB。

eas.json

{
  "cli": { …
Run Code Online (Sandbox Code Playgroud)

android google-api react-native fastlane expo

5
推荐指数
1
解决办法
3521
查看次数