Я создаю конвейер для распространения моей сборки QA через тестер приложений, используя действия fastlane и git hub.
В рамках конвейера я также улучшаю код версии и создаю ветку. Задание Fastlane отлично работает при локальном запуске, например. fastlane deploy_firebase_test_build в моем терминале. Однако, когда я запускаю это задание через Github Actions, я получаю следующую ошибку.
FastlaneCore::Interface::FastlaneShellError: [!] Exit status of command 'git commit -am 'Version bump to 106'' was 128 instead of 0.
Author identity unknown
*** Please tell me who you are.
Run
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
Я попытался установить конфигурацию в моем файле .yml, но в этот момент я получаю сообщение об ошибке.
Fastfile
default_platform(:android)
platform :android do
before_all do
ENV["FIREBASE_LOGIN_CREDENTIALS"] = "fastlane/sandbox_firebase_auth.json"
ENV["FIREBASE_APP_ID"] = "*******************************"
end
#Firebase Distribution
desc "Submit test build to App Tester"
lane :deploy_firebase_test_build do |options|
#Increment version code
increment_version_code(gradle_file_path: "./app/build.gradle")
#Build and assemble sandbox debug
gradle(task: "clean")
gradle(task: "assemble", flavor: "sandbox", build_type: "debug")
#Fetch version code from gradle
new_version = get_version_name(
gradle_file_path:"./app/build.gradle",
ext_constant_name:"versionCode"
)
# find apk path
output_path = "./app/build/outputs/apk/sandbox/debug/"
output_json_path = output_path + "output-metadata.json"
build_output = load_json(json_path: output_json_path)
elements = build_output["elements"][0]
apk_path = output_path + elements["outputFile"]
firebase_app_distribution(
app: ENV["FIREBASE_APP_ID"],
apk_path: apk_path,
release_notes_file: "sandboxchangelog.txt",
groups_file: "fastlane/groups.txt",
service_credentials_file: ENV["FIREBASE_LOGIN_CREDENTIALS"]
)
#Checkout new branch with new version code
sh("git checkout -b 'JIRA-000-Version-Bump-#{new_version}'")
#Create commit with new version code
sh "git commit -am 'Version bump to #{new_version}'"
#Push commit
push_to_git_remote
end
end
.YML File
name: Build and Distribute - Manual
on:
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: git config --global user.name "*********"
- run: git config --global user.email "**************"
- name: Set up Ruby Environment
uses: ruby/setup-ruby@v1
with:
ruby-version: '2.7.2'
bundler-cache: true
- name: Install bundle
run: |
bundle config path vendor/bundle
bundle install --jobs 4 --retry 3
- name: Create Firebase Service Credentials file
run: |
echo "$FIREBASE_CREDENTIALS" > firebase_credentials.json.b64
base64 -d -i firebase_credentials.json.b64 > firebase_credentials.json
env:
FIREBASE_CREDENTIALS: ${{ secrets.FIREBASE_SANDBOX_CREDENTIALS }}
- name: Distribute Sanbox via Apptester
run: bundle exec fastlane deploy_firebase_test_build
env:
FIREBASE_APP_ID: ${{ secrets.SANDBOX_APP_ID }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Я совершенно новичок в действиях fastlane и github. Может ли кто-нибудь помочь мне здесь и направить меня в правильном направлении, или кто-нибудь может сказать мне, что мне нужно сделать, чтобы решить эту проблему?
заранее спасибо
Кстати, вы работаете отдельно bundle install, тогда как настройка bundler-cache: true делает всю работу автоматически за вас. См. github.com/ruby/setup-ruby#bundler. Похоже, вы можете просто пропустить шаг «Установить комплект».
Вы должны разместить предложенные строки конфигурации git непосредственно перед командой, которая выдала сообщение в вашей удаленной сборке, то есть до sh "git commit -am 'Version bump to #{new_version}'" и после #Create commit with new version code. Иначе легко вырваться из контекста:
#Checkout new branch with new version code
sh("git checkout -b 'JIRA-000-Version-Bump-#{new_version}'")
#Create commit with new version code
sh "git config --global user.email '[email protected]'"
sh "git config --global user.name 'Your Name'"
sh "git commit -am 'Version bump to #{new_version}'"
#Push commit
push_to_git_remote
Это также имеет то преимущество, что вы управляете этими свойствами кода новой версии рядом с его сообщением в Fastfile, и вы можете легко связать их как свойства сборки (не показано в примере, поскольку это не главное, и должно быть относительно ясно, учитывая Fastfile в вопросе, в противном случае комментарий).
Вы пытались опустить
--global?