我使用Dokku托管我的应用程序。
我使用GitLab托管我的代码。
我使用GitLab-CI进行持续集成。
before_script:
- mkdir -p ~/.ssh
- echo "$SSH_PRIVATE_KEY" | tr -d "\r" > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
- echo -e "Host $APP_NAME\n\tStrictHostKeyChecking no\n\tHostName $HOSTNAME\n\tUser $USERNAME\n\tPort $PORT\n\tIdentityFile ~/.ssh/id_rsa\n\n" > ~/.ssh/config
- ssh-keyscan -H "$HOSTNAME" >> ~/.ssh/known_hosts
我想将代码从GitLab推送到Dokku。
$USERNAME is dokku
$APP_NAME is hostname in .ssh/config
$APP_NAME_STAGING is name of Dokku application
我的SSH Dokku服务器端口是1990,而不是22。
问题是我必须在配置中使用主机名才能推送远程回购。
$ git-push ssh://$USERNAME@$APP_NAME:$APP_NAME_STAGING master
getaddrinfo example: Name does not resolve
getaddrinfo example: Name does not resolve
getaddrinfo example: Name does not resolve
fatal: No path specified. See 'man git-pull' for valid url syntax
ERROR: Job failed: exit code 1
答案 0 :(得分:0)
首先,您的url语法错误...
正确的语法是protocol://user@hostname:port/path
,因此您的情况是ssh://$USERNAME@$APP_NAME/$APP_NAME_STAGING
使用您当前的语法,它将$APP_NAME:APP_NAME_STAGING
解释为主机名,这就是为什么它返回Name does not resolve
对于自定义端口(如上述),例如:
# User: 'dokku'
# Server adress: 'myserver.com'
# Port: '32'
# Appname: 'myawesomeapp'
ssh://dokku@myserver.com:32/myawesomeapp
在您的情况下:
ssh://$USERNAME@$APP_NAME:1990/$APP_NAME_STAGING
您应该看一下:https://github.com/dokku/dokku/blob/master/docs/community/tutorials/deploying-with-gitlab-ci.md