GoReleaser и ssh-agent Github Actions: почему не удалось прочитать имя пользователя... подсказки терминала отключены?

Я постоянно хожу между инструкциями для GitHub Actions, GoReleaser и Ssh-Agent и не могу заставить работать мой простой скрипт сборки релиза. Моя цель проста... У меня есть частный репозиторий go, содержащий приложение CLI, и его файл go.mod зависит от другого частного репозитория, который мы создали. Локальное создание приложения прошло успешно.

Проблема в том, что когда я пытаюсь создать это простое приложение в GitHub Action, все очень быстро становится очень сложным... секреты репозитория, ключ развертывания и несколько других движущихся частей. Как бы ни был распространен этот вариант использования, мне не удалось найти ни одного примера, где кто-то реализовал для него скрипт сборки релиза... Я почти готов переключиться на монорепозиторий из-за разочарования.

Подробности... Сценарий сборки github работает правильно до фактической сборки с использованием GoReleaser, которая дает сбой со следующим:

«ошибка выпуска после 6serror=hook failed: go mod tidy: exit status 1; вывод: go: загрузка…»

и

«фатальный: не удалось прочитать имя пользователя для« https://github.com »: подсказки терминала отключены»

Насколько я понимаю, Ssh-Agent должен настраивать доступ с использованием закрытого ключа SSH, который я настроил в нашей учетной записи. Следовательно, у GoReleaser не должно возникнуть проблем с доступом к любому репозиторию, у которого есть DEPLOY_KEY, содержащий открытый ключ SSH.

Я был бы очень признателен за вашу помощь в том, чтобы заставить все эти движущиеся части работать вместе. Я уверен, что есть много других людей, спорящих с этой проблемой.

Спасибо за ваше время и интерес

      name: Release

on:
  push:
    tags:
      - "v*.*.*"

jobs:
  build:
    name: Build Release Binaries
    runs-on: ubuntu-latest
    permissions:
      contents: write
      #packages: write
    steps:

      - name: Install SSH Client
        uses: webfactory/ssh-agent@v0.5.4
        with:
          ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}


      - name: Configure Go 1.18
        uses: actions/setup-go@v3
        with:
          go-version: 1.18

      - name: Debug
        run: |
          pwd
          echo ${HOME}
          echo ${GITHUB_WORKSPACE}
          echo ${GOPATH}
          echo ${GOROOT}

      - name: Debug2
        run: go env

      - name: Check out the code into the Go module directory.
        uses: actions/checkout@v3
        with:
          repository: 'myorg/myrepo'
          fetch-depth: 0            # See: https://goreleaser.com/ci/actions/
          path: go/src/github.com/myorg/myrepo

      - name: Run GoReleaser
        uses: goreleaser/goreleaser-action@v3
        with:
        # either 'goreleaser' (default) or 'goreleaser-pro'
          distribution: goreleaser
          version: latest
          args: release --rm-dist
          workdir: ${{ github.workspace }}/go/src/github.com/myorg/myrepo
        env:
          GITHUB_TOKEN: ${{ secrets.TOKEN }}
      Run goreleaser/goreleaser-action@v3
  with:
    distribution: goreleaser
    version: latest
    args: release --rm-dist
    workdir: /home/runner/work/myrepo/myrepo/go/src/github.com/myorg/myrepo
    install-only: false
  env:
    SSH_AUTH_SOCK: /tmp/ssh-HIEFX12pQLiS/agent.1733
    SSH_AGENT_PID: 1734
    APP_VERSION: v2.1.3
    BUILD_TIME: Tue Jul 19 07:03:53 UTC 2022
    GITHUB_TOKEN: ***
  
Downloading https://github.com/goreleaser/goreleaser/releases/download/v1.10.2/goreleaser_Linux_x86_64.tar.gz
Extracting GoReleaser
/usr/bin/tar xz --warning=no-unknown-keyword --overwrite -C /home/runner/work/_temp/0d57d027-19c9-4eee-b395-8e6b3c534c98 -f /home/runner/work/_temp/2d3cd5e7-7087-4ff0-b2db-c036bb8c5bc8
GoReleaser latest installed successfully
Using /home/runner/work/myrepo/myrepo/go/src/github.com/myorg/myrepo as working directory
v2.1.3 tag found for commit 'b94e310'
/opt/hostedtoolcache/goreleaser-action/1.10.2/x64/goreleaser release --rm-dist
  •starting release...
  • loading config file                              file=.goreleaser.yaml
  •loading environment variables
  •getting and validating git state
    • building...                                    commit=b94e310435835d012155fce67176ef54a687326e latest tag=v2.1.3
  •parsing tag
  •setting defaults
  •running before hooks
    • running                                        hook=go mod tidy
    •took: 6s
  ⨯release failed after 6serror=hook failed: go mod tidy: exit status 1; output: go: downloading 

1 ответ

я бы предложилConfigure git for private modulesв действии Github, добавив один простой шаг в свой рабочий процесс, например:

        - name: Configure git for private modules
    env:
      GITHUB_API_TOKEN: ${{ secrets.GH_API_TOKEN }}
    run: git config --global url."https://x:${GITHUB_API_TOKEN}@github.com".insteadOf "https://github.com"

И добавьтеGH_API_TOKENсекреты в репозитории, чтобы иметь возможность загружать модули go во времяgo mod tidyкоманда.

Другие вопросы по тегам