Fastlane + Github Actions:在路径上找不到 gradlew

问题描述

我正在尝试使用 Github Actions 和 Fastlane 为 Flutter 实现 CI/CD 工作流程。但是,当车道正在执行时会抛出以下错误

enter image description here

我在 android 文件夹中创建了 Fastlane 文件夹。喜欢图片

enter image description here

这是我的Fastfile内容

update_fastlane

default_platform(:android)

platform :android do
  desc "Deploy to closed beta track"
  lane :closed_beta do
    begin
      gradle(task: "clean")
      gradle(
        task: "bundle",build_type: 'Release'
      )
      upload_to_play_store(
        track: 'Closed beta',aab: '../build/app/outputs/bundle/release/app-release.aab',skip_upload_Metadata: true,skip_upload_images: true,skip_upload_screenshots: true,release_status: "draft",version_code: Flutter_version()["version_code"],)
    end
  end
end

我的 GitHub 操作工作流程允许进行构建和部署,如下所示。 Run Fastlane 步骤是错误

name: Continuous Delivery to Play Store

on:
  push:
    branches:
      - "v*"

jobs:
  # Continuous integration
  build_android:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Setup Java
        uses: actions/setup-java@v1
        with:
          java-version: 12.x
      - name: Decrypt Android keys
        run: sh ./.github/scripts/decrypt_android_keys.sh
        env:
          ANDROID_KEYS_SECRET_PAsspHRASE: ${{ secrets.ANDROID_KEYS_SECRET_PAsspHRASE }}
      - name: Setup Flutter
        uses: subosito/Flutter-action@v1
        with:
          Flutter-version: 1.22.5
      - name: Install Flutter dependencies
        run: Flutter pub get
        # Add build runner commands here if you have any
      - name: Format files
        run: Flutter format --set-exit-if-changed .
      - name: Analyze files
        run: Flutter analyze .
      - name: Run the tests
        run: Flutter test
      - name: Build the APK
        run: Flutter build apk
      - name: Upload artifact to Github
        uses: actions/upload-artifact@v1
        with:
          name: release-apk
          path: build/app/outputs/apk/release/app-release.apk
  # Continuous delivery
  deploy_android:
    runs-on: ubuntu-latest
    needs: [build_android]
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Setup Java
        uses: actions/setup-java@v1
        with:
          java-version: 12.x
      - name: Decrypt Android keys
        run: sh ./.github/scripts/decrypt_android_keys.sh
        env:
          ANDROID_KEYS_SECRET_PAsspHRASE: ${{ secrets.ANDROID_KEYS_SECRET_PAsspHRASE }}
      - name: Setup Flutter
        uses: subosito/Flutter-action@v1
        with:
          Flutter-version: 1.22.5
      - name: Install Flutter dependencies
        run: Flutter pub get
      - name: Build app bundle
        run: Flutter build appbundle
      - uses: actions/checkout@v2
      - uses: ruby/setup-ruby@v1
        with:
          ruby-version: 2.6
          bundler-cache: true
      - name: Check file existence
        run: echo find . -name "gradlew"
      - uses: maierj/fastlane-action@v2.0.0
        with:
          lane: closed_beta
          subdirectory: android

欢迎提出任何建议。谢谢!

解决方法

我有同样的问题,我发现 gradlew 被排除在你的 flutter 项目的 /android 文件夹内的 .gitignore 中。

当下面在你的本地机器上运行时,它不会运行 Github runner:

gradle(task: "clean")
gradle(
    task: "bundle",build_type: 'Release'
  )

考虑从 Fastfile 中删除上面的行,因为您已经在 Github 上构建了 在这里代表:

名称:构建 APK

运行:flutter build apk

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...