【问题标题】:How to make gitlab runner access EC2 instance to make deploy?如何让 gitlab runner 访问 EC2 实例进行部署?
【发布时间】:2020-10-02 18:02:25
【问题描述】:

我创建了一个脚本来进行部署,但每次都会抛出这个错误: “不会分配伪终端,因为标准输入不是终端。 主机密钥验证失败。”

我的 .gitlab-ci.yml:

make_deploy:
  stage: deploy
  script:
    - apk update
    - apk add bash
    - apk add git
    - apk add openssh
    - bash scripts/deploy.sh
    - echo "Deploy succeeded!"
  only:
    - master

部署.sh:

#!/bin/bash

user=gitlab+deploy-token-44444
pass=passwordpass
gitlab="https://"$user":"$pass"@gitlab.com/repo/project.git"

ssh-keygen -R 50-200-50-15

chmod 600 key.pem

ssh -tt -i key.pem ubuntu@ec2-50-200-50-15.compute-1.amazonaws.com << 'ENDSSH'

rm -rf project
git clone $gitlab
cd project
npm i 
pm2 restart .

ENDSSH

exit

【问题讨论】:

    标签: amazon-web-services amazon-ec2 deployment gitlab gitlab-ci


    【解决方案1】:

    您需要更改您的身份验证类型,而不是使用用户名和密码,使用 ssh 密钥交换。

    这样,您的脚本将不会提示输入用户名和密码。

    但在此之前,您应该首先创建 ssh 密钥并将公钥上传到您的存储库设置,它将作为您在实例和 gitlab 服务器之间的主要身份验证。

    More info here.

    测试您的连接。

    ssh -T git@gitlab.com
    

    【讨论】:

    • 这部分gitlab工作,我在本地测试,错误是与ec2连接,无法进入那里的终端
    • 您应该在 EC2 本身中完成这些步骤,并在您验证主机密钥后创建配置 ec2 实例的映像作为 AMI,以便在您需要重新部署不需要的另一个实例时重新配置它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    • 2020-04-26
    • 1970-01-01
    • 2023-01-24
    相关资源
    最近更新 更多