Программно развернуть в Heroku - PullRequest
0 голосов
/ 30 января 2020

Мне нужна помощь для программного развертывания приложения в Heroku. У Heroku есть приложение для управления вашими приложениями. По команде heroku login запись в ~/.netrc ключ API:

machine api.heroku.com
  login email@gmail.com
  password 6450sdf8-bd51-40da-9706-e39s85mc251f

В документах я могу найти эту https://devcenter.heroku.com/articles/git#http - git -утентификацию , где записано

Конечная точка Heroku HTTP Git принимает только аутентификацию HTTP Basi c на основе API-ключей. Имя пользователя не требуется, и любое значение, переданное для имени пользователя, игнорируется.

Мой код использует https://github.com/src-d/go-git:

    r, err := git.PlainOpen("go-getting-started")
    if err != nil {
        log.Fatal(err)
    }
    r.CreateRemote(&config.RemoteConfig{
        Name: "heroku",
        URLs: []string{"https://git.heroku.com/afternoon-ocean-91922.git"},
    })

    err = r.Push(&git.PushOptions{
        Auth: &http.BasicAuth{
            Username: "email@gmail.com",
            Password: "6450sdf8-bd51-40da-9706-e39s85mc251f",
        },
    })
    if err != nil {
        log.Fatal(err)
    }

И есть ошибка

2020/01/30 17:38:23 требуется проверка подлинности

статус выхода 1

ОК, тогда я set -i; GIT_TRACE=2 GIT_CURL_VERBOSE=2 GIT_TRACE_PERFORMANCE=2 GIT_TRACE_PACK_ACCESS=2 GIT_TRACE_PACKET=2 GIT_TRACE_PACKFILE=2 GIT_TRACE_SETUP=2 GIT_TRACE_SHALLOW=2 git push heroku master -v -v; set +i и вижу в журнале эту строку

Host: git.heroku.com
User-Agent: git/2.25.0
Accept: */*
Accept-Encoding: deflate, gzip
Accept-Language: ru-RU, *;q=0.9
Pragma: no-cache

* Mark bundle as not supporting multiuse
< HTTP/1.1 401 Unauthorized
< Content-Type: text/plain
< Date: Thu, 30 Jan 2020 15:00:44 GMT
< Request-Id: c0786480-055d-40bc-90b3-d795304c2777
< Server: endosome/development (instance=6283027; pid=4272)
< Www-Authenticate: Basic realm="Heroku"
< Content-Length: 249
< Connection: keep-alive
< 
* Ignoring the response-body
* Connection #0 to host git.heroku.com left intact
* Issue another request to this URL: 'https://git.heroku.com/infinite-garden-93715.git/info/refs?service=git-receive-pack'
* Found bundle for host git.heroku.com: 0x5616ad25b0a0 [serially]
* Can not multiplex, even if we wanted to!
* Re-using existing connection! (#0) with host git.heroku.com
* Connected to git.heroku.com (54.225.111.180) port 443 (#0)
* Server auth using Basic with user 'email@gmail.com'
> GET /infinite-garden-93715.git/info/refs?service=git-receive-pack HTTP/1.1
Host: git.heroku.com
Authorization: Basic aHJkY29ka...Mzk2MmJkZTI1MWY=
User-Agent: git/2.25.0
Accept: */*
Accept-Encoding: deflate, gzip
Accept-Language: ru-RU, *;q=0.9
Pragma: no-cache

Строка aHJkY29ka...Mzk2MmJkZTI1MWY= in

Авторизация: Basi c aHJkY29ka ... Mzk2MmJkZTI1MWY =

is email:token in base64. Почему я не могу выполнить авторизацию с ключом от ~/.netrc? Как я могу pu sh в удаленном репозитории программно? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...