Действия Github: сбой xcodebuild из-за отпечатка сервера

Я пытаюсь создать приложение для macOS с помощью Github Actions. Это уже работало очень хорошо, пока я не перенес свои зависимости в Swift Package Manager. Теперь при создании приложения я получаю следующую ошибку:

xcodebuild: error: Could not resolve package dependencies: The server SSH fingerprint failed to verify.

У меня есть частный репозиторий GitHub в качестве зависимости в моем приложении, добавленном как пакет Swift с использованием местоположения ssh. Поэтому мне нужно добавить свой ssh-ключ для зависимости на шаге Set up ssh-agent. Клонирование репозитория вручную на шаге с использованием git clone работает нормально, но мне нужно заставить его работать с xcodebuild, чтобы успешно создать мое приложение.

Файл рабочего процесса

name: Main
on:
  push:
    tags:
      - 'v*.*.*'

jobs:
  build:
    name: Release
    runs-on: macOS-latest
    steps:
      - name: Checkout
        uses: actions/checkout@master
        with:
          fetch-depth: 1
      - name: Set up ssh-agent
        uses: yakuhzi/action-ssh-agent@v1
        with:
          public: ${{ secrets.SSH_PUBLIC_KEY }}
          private: ${{ secrets.SSH_PRIVATE_KEY }}
      - name: Build application
        run: |
          sudo xcode-select -switch /Applications/Xcode_11.app
          xcodebuild -project Application.xcodeproj -scheme Application -configuration Release -derivedDataPath $HOME/Application build

person Yakuhzi    schedule 26.09.2019    source источник
comment
Отпечаток SSH сервера - это не ваш SSH-ключ, это отпечаток в вашем .ssh/known_hosts файле. Вам нужно добавить шаг, который регистрирует правильный отпечаток пальца в known_hosts и, возможно, сохраняет правильный отпечаток пальца в виде файла в вашем репо. (Или секрет репо, если хотите, но он не обязательно должен быть секретом, поскольку это отпечаток открытого ключа). Я не знаю синтаксиса в голове, но я найду его и напишу ответ, если меня никто не опередит.   -  person rmunn    schedule 27.09.2019
comment
Шаг Set up ssh-agent, который я написал для добавления ключей ssh, также добавляет отпечаток github.com к известным_hosts, но это, похоже, не помогает.   -  person Yakuhzi    schedule 27.09.2019
comment
Хм. Глядя на исходный код вашего yakuhzi/action-ssh-agent репозитория, я понимаю, что все кажется правильным ... Я в тупике, извините.   -  person rmunn    schedule 27.09.2019
comment
та же проблема на лазурном CI, но действительно не знаю, как реализовать решение в файле yaml ????   -  person itMaxence    schedule 02.02.2021


Ответы (6)


Наконец я разобрался. Похоже, это известная проблема в Xcode 11 (https://developer.apple.com/documentation/xcode_release_notes/xcode_11_release_notes).

Спасибо Dosium за этот пост (https://discuss.bitrise.io/t/xcode-11-resolving-packages-fails-with-ssh-fingerprint/10388), мне удалось заставить его работать.

Решение состоит в том, чтобы выполнить следующую команду перед запуском xcodebuild: for ip in $(dig @8.8.8.8 github.com +short); do ssh-keyscan github.com,$ip; ssh-keyscan $ip; done 2>/dev/null >> ~/.ssh/known_hosts

person Yakuhzi    schedule 01.10.2019
comment
Это сработало и для меня на bitbucket.org. Пробовал более короткую версию этого шага, и это не сработало, поэтому я предлагаю другим, кто сталкивается с этим, использовать это! - person Procrastin8; 21.12.2019
comment
@yakuhzi Не могли бы вы поделиться своим файлом рабочего процесса после добавления этой команды. Спасибо - person Abin Baby; 13.02.2020
comment
@AbinBaby Я вообще не менял свой рабочий файл. Я настроил действие Github Action, которое настраивает мои ключи ssh. Вы можете найти коммит здесь: github.com/yakuhzi/ent-ssh / commit / - person Yakuhzi; 14.02.2020
comment
Я не могу понять, почему это не работает для меня, вы можете опубликовать файл yml или выполнить этап? - person SRMR; 31.03.2020
comment
У нас возникла эта проблема в CircleCI после обновления до Xcode 12, и это решение сработало для нас. - person vauxhall; 24.09.2020
comment
Серьезно, позор Apple, Xcode 12.1 отсутствует, проблема все еще сохраняется. В основном Xcode Server НЕ может правильно подключаться к частным библиотекам git. объяснение всей этой проблемы одним предложением! - person Trevor; 30.10.2020

Для CircleCI:

Добавляя к ответу Якухзи, вот как выглядит шаг в yaml-файле Circle Ci:

- run:
    name: Enable SSH
    command: |
       for ip in $(dig @8.8.8.8 github.com +short); do ssh-keyscan github.com,$ip; ssh-keyscan $ip; done 2>/dev/null >> ~/.ssh/known_hosts
person Rob Caraway    schedule 06.01.2021

Откройте проект на машине, которая строит. Зайдите в журналы Workspace. Дважды щелкните красную запись журнала, в которой говорится, что пакет не прошел проверку. Теперь у вас появится окно с просьбой доверять хосту. Поверьте, и все готово.

Изменить: я был неправ. Хотя он доверяет хосту, и вы можете открыть и запустить проект на машине CI, процесс CI по-прежнему не работает ...

person Tycho Pandelaar    schedule 27.03.2020
comment
Поскольку машины сборки размещены на GitHub, у меня нет прямого доступа к машине. Но проблема уже решена, как вы можете видеть в моем принятом ответе. - person Yakuhzi; 28.03.2020
comment
Ну, отключает, мое решение не помогает процессу CI. Я обновил ответ, чтобы отразить это ... - person Tycho Pandelaar; 29.03.2020
comment
это помогло мне, когда у меня была проблема с локальными сборками - person Jason; 01.03.2021
comment
Хотел бы я видеть это вчера! Для локальных сборок это лучшее решение! - person choli; 04.03.2021

TS запросил проблему с зависимостью от частного репозитория, но на всякий случай, если есть люди, которые столкнулись с этой проблемой из-за зависимости публичного репозитория, убедитесь, что вы используете HTTPS вместо SSH для адрес репозитория зависимости.

Пример:

https://github.com/Alamofire/Alamofire.git

вместо того

[email protected]:Alamofire/Alamofire.git
person Muhammad Yusuf    schedule 10.06.2020
comment
Это было решением для меня, когда я столкнулся с вышеупомянутой ошибкой xcodebuild: error: Could not resolve package dependencies: The server SSH fingerprint failed to verify. при запуске конвейера сборки в Azure DevOps. Спасибо! - person kentrh; 12.02.2021

Если вы ищете что-то конкретное для действий GitHub, я обновил ответ @ rob-caraway, чтобы он соответствовал синтаксису GitHub. Я нашел следующий шаг, вставленный перед попыткой построить для меня работы:

    - name: Trust the GitHub SSH keys
      run: |
        for ip in $(dig @8.8.8.8 github.com +short); do ssh-keyscan github.com,$ip; ssh-keyscan $ip; done 2>/dev/null >> ~/.ssh/known_hosts
person Jason Barrie Morley    schedule 03.04.2021

попробуйте добавить токен Github в качестве секрета и использовать его на этапе оформления заказа:

build:
    runs-on: macOS-latest
    steps:
    - uses: actions/[email protected]
      with: 
        token:  ${{ secrets.YOUR_CI_ACCOUNT_TOKEN }}

или добавьте свой закрытый ключ SSH в качестве секрета и используйте его:

build:
    runs-on: macOS-latest
    steps:
    - uses: actions/[email protected]
      with: 
        ssh-key:  ${{ secrets.YOUR_CI_ACCOUNT_SSH_KEY }}
person Xaxxus    schedule 13.10.2020