使用不同的端口22将代码从GitLab推送到Dokku

时间:2018-09-18 21:21:05

标签: gitlab gitlab-ci dokku

我使用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

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