Как установить частные модули с помощью GitHub Actions?

Я пытаюсь установить свои зависимости в свой сценарий рабочего процесса. Однако некоторые из них являются частными модулями, и когда я пытаюсь сделать bundle exec pod install, я получаю эту ошибку:

Cloning spec repo `cocoapods` from `https://github.com/CocoaPods/Specs`
Cloning spec repo `keterauk` from `https://github.com/KeteraUK/Strive-Pod-Specs`
[!] Unable to add a source with url `https://github.com/KeteraUK/Strive-Pod-Specs` named `keterauk`.
You can try adding it manually in `/Users/runner/.cocoapods/repos` or via `pod repo add`.
##[error]Process completed with exit code 1.

pod repo add... приводит к следующей ошибке: fatal: could not read Username for 'https://github.com': Device not configured даже если у меня добавлен личный токен доступа (секрет).

Вот мой полный сценарий:

name: Swift

on:
  push:
    branches: 
      - master
      - enhancement/*
      - develop
      - develop/*
      - release
      - release/*

jobs:
  test:
    name: Test
    runs-on: macOS-latest
    strategy:
      matrix:
        destination: ['platform=iOS Simulator,OS=13.3,name=iPhone 11']
        xcode: ['/Applications/Xcode_11.6.app/Contents/Developer']
    steps:
      - name: Checkout
        uses: actions/[email protected]
        with:
          token: ${{ secrets.STRIVE_ACTIONS_SECRET }} # PAT
      - name: Bundle Update
        run: gem install bundler:1.17.2
      - name: Bundle Install
        run: bundle install

# Currently fails here...
      - name: Specs Repo
        run: pod repo add Strive-Pod-Specs https://github.com/KeteraUK/Strive-Pod-Specs.git

      - name: Dependencies
        run: bundle exec pod install
        env:
          DEVELOPER_DIR: ${{ matrix.xcode }}
      - name: Build and test
        run: bundle exec fastlane scan --destination "${destination}" --scheme "CI"
        env:
          destination: ${{ matrix.destination }}
          DEVELOPER_DIR: ${{ matrix.xcode }}

Как я могу установить частные модули с моим сценарием действий GitHub для рабочего процесса?

Примечание: я также пытаюсь сделать это через организацию.

Вам просто не хватает имени пользователя / пароля в URL-адресе команды добавления репозитория модуля. Я привел примеры рабочих процессов и успешный запуск рабочего процесса, чтобы вы могли убедиться, что он работает.   —  person Luke97    schedule 02.09.2020

Первое, что я хотел бы попробовать, это обновить actions/checkout до v2. Со времени v1 было внесено много улучшений, и некоторые из них были связаны с сохранением учетных данных, чтобы на дальнейших этапах было проще использовать команды git.   —  person Luke97    schedule 07.09.2020

См. также:  График рабочего процесса действий GitHub не работает в ветке, отличной от стандартной
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 3
  1. Luke97

    Вы не указали токен API в команде pod repo add https://github..., и, скорее всего, он не работает из-за этого. Добавьте свой личный токен API в URL-адрес github, например <token>@github.com. Вы можете использовать secrets и env, чтобы сделать то же самое.

    Скорее всего, следующее поможет устранить возникшую ошибку:

    name: Swift
    
    on:
      push:
        branches: 
          - master
          - enhancement/*
          - develop
          - develop/*
          - release
          - release/*
    
    jobs:
      test:
        name: Test
        runs-on: macOS-latest
        strategy:
          matrix:
            destination: ['platform=iOS Simulator,OS=13.3,name=iPhone 11']
            xcode: ['/Applications/Xcode_11.6.app/Contents/Developer']
        steps:
          - name: Checkout
            uses: actions/[email protected]
            with:
              token: ${{ secrets.STRIVE_ACTIONS_SECRET }} # PAT
          - name: Bundle Update
            run: gem install bundler:1.17.2
          - name: Bundle Install
            run: bundle install
    
          - name: Specs Repo
            run: pod repo add Strive-Pod-Specs https://${POD_GITHUB_API_TOKEN}@github.com/KeteraUK/Strive-Pod-Specs.git
            env:
              POD_GITHUB_API_TOKEN: ${{ secrets.POD_GITHUB_API_TOKEN }}
          - name: Dependencies
            run: bundle exec pod install
            env:
              DEVELOPER_DIR: ${{ matrix.xcode }}
          - name: Build and test
            run: bundle exec fastlane scan --destination "${destination}" --scheme "CI"
            env:
              destination: ${{ matrix.destination }}
              DEVELOPER_DIR: ${{ matrix.xcode }}
    

    Измененные строки:

                run: pod repo add Strive-Pod-Specs https://${POD_GITHUB_API_TOKEN}@github.com/KeteraUK/Strive-Pod-Specs.git
                env:
                  POD_GITHUB_API_TOKEN: ${{ secrets.POD_GITHUB_API_TOKEN }}
    

    Убедитесь, что вы определили секретный POD_GITHUB_API_TOKEN с вашим личным токеном доступа.

    Привет, @manishg, у меня есть эта строка в моем источнике подфайла «github.com {private podspec url}». при попытке установить pod. после добавления pod repo он продолжает работать с фатальной ошибкой: не удалось прочитать имя пользователя для github.com: устройство не настроено person Luke97; 08.01.2021

  2. Luke97

    Ошибка говорит о том, что git требуется ваша аутентификация или авторизация. Так что у вас есть несколько вариантов для этого.

    Первый и наиболее рекомендуемый вариант — использовать SSH вместо HTTPS. Таким образом, машина будет использовать ключ автоматически и не будет запрашивать имя пользователя. и пароль каждый раз. Таким образом, URL-адрес будет иметь вид: ssh://<user>@github.com/KeteraUK/Strive-Pod-Specs.git

    Второй вариант — жестко запрограммировать имя пользователя и пароль git. Это НЕ рекомендуется и очень небезопасно. (Но все же вариант) Прочтите этот документ для получения более подробного описания Таким образом, URL-адрес будет похож на https://<user:pass>@github.com/KeteraUK/Strive-Pod-Specs.git

    Другой вариант — установить вспомогательное приложение, которое вводит пароль в процессе. Возможно, он уже настроен, но git может просто не найти его. На приведенной выше странице документа также есть информация об этой опции. Вы можете кэшировать его глобально с помощью git config --global credential.helper cache или постоянно хранить git config credential.helper store

  3. Luke97

    Вам нужно добавить имя пользователя и токен в репозиторий модуля. Проверьте настройку ниже с примерами

    Пример рабочего процесса с успешным запуском

    Пример кода рабочего процесса

     name: Swift
    
     on:
       push:
     jobs:
       test:
         name: Test
         runs-on: macOS-latest
         strategy:
           matrix:
             destination: ['platform=iOS Simulator,OS=13.3,name=iPhone 11']
             xcode: ['/Applications/Xcode_11.6.app/Contents/Developer']
         steps:
           - name: Checkout
             uses: actions/[email protected]
             with:
               token: ${{ secrets.GITHUBTOKEN }}
           - name: Bundle Update
             run: gem install bundler:1.17.2
           - name: Bundle Install
             run: bundle install
           - name: Specs Repo
             run: pod repo add ColorMatchTabs https://meroware:${{ secrets.GITHUBTOKEN }}@github.com/meroware/ColorMatchTabs.git
    

    ПРИМЕЧАНИЕ. В этом примере я сделал ColorMatchTabs частным репо, чтобы я мог настроить для этого конвейер. Дайте мне знать, если у вас возникнут дополнительные вопросы, но я думаю, что этого вполне достаточно для вашего вопроса

    , которая вас заботит о

        pod repo add ColorMatchTabs https://meroware:${{ secrets.GITHUBTOKEN }}@github.com/meroware/ColorMatchTabs.git
    

    Кроме того, вам не нужно создавать переменные env для всех ваших секретов. Вы можете просто использовать их прямо во время бега. Единственная причина добавить их в env — это действия или команды, которые захватывают их прямо из envs.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: