#flutter #continuous-integration #testflight #github-actions #fastlane-match
#сбой #непрерывная интеграция #testflight #github-действия #fastlane-совпадение
Вопрос:
Я следовал этому руководству, чтобы настроить действие Github для автоматизации создания и развертывания приложений iOS с помощью Testflight. Если я использую testlane локально, все работает должным образом, и приложение отправляется в TestFlight. Но в действиях Github сборка завершается успешно, но когда мне нужно загрузить приложение в Appstore Connect, я получаю сообщение об ошибке:
ошибка: не найден профиль для команды ‘XXX’, соответствующий ‘match AppStore com.XXX.XXX’: Xcode не удалось найти профили подготовки, соответствующие ‘XXX / match AppStore com.XXX.XXX’
Я правильно добавил все необходимые секреты, но по какой-то причине fastlane match не может найти мои профили подготовки и мой сертификат подписи. Любая помощь будет принята с благодарностью. Я добавляю свою конфигурацию yaml ниже:
name: Build Flutter for iOS
# This workflow is triggered on pushes to the repository.
on: [push]
# workflow_dispatch:
env:
flutter_version: '1.22.1'
java_version: '12.x'
gcloud_version: '290.0.1'
jobs:
build:
name: Build
runs-on: macos-latest
steps:
# ===== APPSTORE SIGNING BUILD====#
- uses: actions/checkout@v2
- name: Select Xcode version
run: sudo xcode-select -s '/Applications/Xcode_11.3.app/Contents/Developer'
- name: Bundle install
run: cd ./ios amp;amp; bundle install
# ==== SETUP FLUTTER
- name: Setup JDK
uses: actions/setup-java@v1
with:
java-version: ${{ env.java_version }}
# https://github.com/subosito/flutter-action/issues/16
- uses: actions/cache@v2
with:
path: /opt/hostedtoolcache/flutter
key: ${{ runner.OS }}-flutter-install-cache-${{ env.flutter_version }}
- uses: subosito/flutter-action@v1.4.0
with:
flutter-version: ${{ env.flutter_version }}
channel: 'stable'
- name: Install tools
run: |
flutter pub get
cd ./ios amp;amp; pod install
- name: Setup SSH Keys and known_hosts for fastlane match
run: |
SSH_PATH="$HOME/.ssh"
mkdir -p "$SSH_PATH"
touch "$SSH_PATH/known_hosts"
echo "$PRIVATE_KEY" > "$SSH_PATH/id_rsa"
chmod 700 "$SSH_PATH"
ssh-keyscan github.com >> ~/.ssh/known_hosts
chmod 600 "$SSH_PATH/known_hosts"
chmod 600 "$SSH_PATH/id_rsa"
eval $(ssh-agent)
ssh-add "$SSH_PATH/id_rsa"
env:
PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
- name: Deploy to TestFlight
run: |
cd ./ios amp;amp; bundle exec fastlane beta
env:
TEAM_ID: ${{ secrets.TEAM_ID }}
ITC_TEAM_ID: ${{ secrets.ITC_TEAM_ID }}
FASTLANE_USER: ${{ secrets.FASTLANE_USER }}
FASTLANE_PASSWORD: ${{ secrets.FASTLANE_PASSWORD }}
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD: ${{ secrets.FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD }}
FASTLANE_SESSION: ${{ secrets.FASTLANE_SESSION }}
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
MATCH_KEYCHAIN_NAME: ${{ secrets.MATCH_KEYCHAIN_NAME }}
MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }}
И это мой файл fastfile:
platform :ios do
desc "Push a new beta build to TestFlight"
lane :beta do
build_app(workspace: "Runner.xcworkspace", scheme: "Runner")
upload_to_testflight
if is_ci
create_keychain(
name: ENV['MATCH_KEYCHAIN_NAME'],
password: ENV["MATCH_KEYCHAIN_PASSWORD"],
default_keychain: true,
unlock: true,
timeout: 3600,
lock_when_sleeps: false
)
end
match(
type: "appstore",
readonly: is_ci,
keychain_name: ENV['MATCH_KEYCHAIN_NAME'],
keychain_password: ENV["MATCH_KEYCHAIN_PASSWORD"],
)
build_app(
workspace: "Runner.xcworkspace",
scheme: "Runner",
export_method: "development"
)
upload_to_testflight
end
end
Комментарии:
1. То же самое здесь. Вы нашли решение?
2. Вы дважды
upload_to_testflight
вызывали. Первый раз происходит до того, как вы вызвалиmatch
иbuild_app
.
Ответ №1:
убедитесь, что если тип: «appstore», то export_method: «app-store»
например:
match(
type: "appstore",
readonly: is_ci,
keychain_name: ENV['MATCH_KEYCHAIN_NAME'],
keychain_password: ENV["MATCH_KEYCHAIN_PASSWORD"],
)
build_app(
workspace: "Runner.xcworkspace",
scheme: "Runner",
export_method: "app-store"
)