我一直在以几乎正常的方式构建我的移动管道,包括 react-native 和 flutter。我正在尝试建立这第一次快速通道管道,到目前为止它有点粗糙。这是一个包含 android 和 iOS 文件夹的 react-native 项目。我正在关注这个博客https://blog.logrocket.com/fastlane-build-test-ship-react-native-apps/所以我的设置是相似的。只是我正在做一个 firebase 分配通道。在 GitHub 上,
actions/setup-ruby@v1
已被 ruby/setup-ruby@v1
取代。
构建总是失败并显示以下内容,即使像这样的设置:ruby --version 仍然显示
2.7.7
/opt/hostedtoolcache/Ruby/2.7.7/x64/lib/ruby/gems/2.7.0/gems/bundler-2.2.27/lib/bundler/definition.rb:441:in `validate_ruby!': Your Ruby version is 3.0.2, but your Gemfile specified 2.7.7
在过去的几个小时里,我一直在抓挠我的头发,想知道我可能做错了什么。以下是 GitHub 操作
name: Android developer build
on:
push:
branches:
- feat/splitting-dev-from-uat-builds
# - develop*
# - feat/*
jobs:
android-build:
name: Android Build
runs-on: ubuntu-latest
environment: dev
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup JDK
uses: actions/setup-java@v1
with:
java-version: 8
- name: Install npm dependencies
run: |
yarn install
- uses: ruby/setup-ruby@v1
with:
ruby-version: '2.7'
- name: Checking Ruby Component versions
run: |
ruby --version
# gem install bundler
# gem install fastlane
# # Install the Firebase app distribution plugin with fastlane
# - name: Install Firebase app distribution plugin
# run: bundle exec fastlane add_plugin firebase_app_distribution
# Create a keystore file out of it's base64 string version from secrets
- name: Recreate android key store file
id: write_keysotre_file
uses: timheuer/[email protected]
with:
fileName: ${{ vars.DEV_ANDROID_KEYSTORE_NAME }}
fileDir: ${{ vars.DEV_ANDROID_KEYSTORE_FOLDER_PATH }}
encodedString: ${{ secrets.DEV_ANDROID_KEYSTORE_BASE64_FILE }}
- name: distribute to firebase
run: bundle exec fastlane android alpha
env:
FIREBASE_CLI_TOKEN: ${{ secrets.FIREBASE_CLI_TOKEN }}
FIREBASE_APP_ID: ${{ secrets.FIREBASE_APP_ID }}
ANDROID_KEYSTORE_FILE: ${{ vars.DEV_ANDROID_KEYSTORE_FOLDER_PATH }}/${{ vars.DEV_ANDROID_KEYSTORE_NAME }}
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.DEV_ANDROID_KEYSTORE_PASSWORD }}
ANDROID_KEYSTORE_KEY_ALIAS: ${{ secrets.DEV_ANDROID_KEYSTORE_KEY_ALIAS }}
FIREBASE_DIST_GROUP: dev-android
主要的 Fastfile 如下所示
platform :android do
desc "This is a dev release, we will call it alpha"
lane :alpha do
increment_version_code(app_project_dir:'./android/app')
increment_version_name(app_project_dir: './android/app', bump_type: 'patch')
gradle(task: 'clean',project_dir: './android')
gradle(task: 'assemble', bundle_type: 'Release', project_dir: './android', properties:{
"android.injected.signing.store.file" => ENV['ANDROID_KEYSTORE_FILE'],
"android.injected.signing.store.password" => ENV['ANDROID_KEYSTORE_PASSWORD'],
"android.injected.signing.key.alias" => ENV['ANDROID_KEYSTORE_KEY_ALIAS']
})
output_path = "./android/app/build/outputs/apk/"
firebase_app_distribution(
app: ENV['FIREBASE_APP_ID'],
firebase_cli_token: ENV['FIREBASE_CLI_TOKEN'],
groups: ENV['FIREBASE_DIST_GROUP'],
release_notes: "Git commit: #{last_git_commit[:abbreviated_commit_hash]}",
)
end
end
如果你不想深入研究,你可以尝试在你的操作文件或你的 .ruby-version 文件和 Gemfile 中将 ruby 版本更改为 3.0.2