如何在通过 ssh 部署到 DigitalOcean 时在 Travis CI 中输入密码
How to input a password in Travis CI while deploy to DigitalOcean via ssh
我正在设置 CI 从我的 github 回购到 Digital Ocean droplet。
按照互联网上的说明,我创建了 SSH 密钥,对其进行加密并配置我的 .travis.yml 文件
但在工作期间,Travis 需要密码才能将代码部署到 Droplet。
Link 到我的一个构建:
https://travis-ci.com/KletskovG/kletksovg.tech/builds/132806624
我尝试在 bash 中安装 expect 包并像这样写入我的 deploy.sh 脚本:
期待"password"
发送"My_droplet_user_password"
我的.travis.yml配置
language: node_js
node_js:
- 10
notifications:
email: false
addons:
ssh_known_hosts:
- kletskovg.tech
before_install:
- openssl aes-256-cbc -K $encrypted_89e65714f577_key -iv $encrypted_89e65714f577_iv -in travis_rsa.enc -out travis_rsa -d
- chmod 600 travis_rsa
- mv travis_rsa ~/.ssh/id_rsa
- sudo apt-get install -y expect
install:
- cd client
- npm i webpack-cli -g
- npm i
before_script:
- echo -e "Host kletskovg.tech\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
- echo -e "Host github.com\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
script:
- npm test
deploy:
provider: script
skip_cleanup: true
user: travis
password: TravisDeploy02
script: cd ../ && chmod +x ./deploy.sh && ./deploy.sh
on:
all_branches: true
#
#after_success:
# - bash ./deploy.sh
部署时的代码:
Deploying application
+echo '#### DEPLOY ####'
#### DEPLOY ####
+'[' master == master ']'
++ssh-agent -s
+eval 'SSH_AUTH_SOCK=/tmp/ssh-zAgy7iJpDFB6/agent.7731; export SSH_AUTH_SOCK;
SSH_AGENT_PID=7732; export SSH_AGENT_PID;
echo Agent pid 7732;'
++SSH_AUTH_SOCK=/tmp/ssh-zAgy7iJpDFB6/agent.7731
++export SSH_AUTH_SOCK
++SSH_AGENT_PID=7732
++export SSH_AGENT_PID
++echo Agent pid 7732
Agent pid 7732
+ssh-add /home/travis/.ssh/id_rsa
Identity added: /home/travis/.ssh/id_rsa (gfgfddglebtravis@gmail.com)
+echo TRYING TO DEPLOY
TRYING TO DEPLOY
+git init
Reinitialized existing Git repository in /home/travis/build/KletskovG/kletksovg.tech/.git/
+git remote add deploy travis@kletskovg.tech:/var/www/kletskovg.tech
+git config user.name 'Travis CI'
+git config user.email gfgfddgleb@gmail.com
+git add .
+git commit -m Deploy
[detached HEAD 4561161] Deploy
2 files changed, 42 insertions(+)
mode change 100644 => 100755 deploy.sh
+git push --force deploy master
Warning: Permanently added the ECDSA host key for IP address '138.68.30.170' to the list of known hosts.
travis@kletskovg.tech's password:
我该如何解决这个问题?
谢谢。
我只是在新的存储库中从头开始创建所有内容。
现在可以使用了。
我正在设置 CI 从我的 github 回购到 Digital Ocean droplet。 按照互联网上的说明,我创建了 SSH 密钥,对其进行加密并配置我的 .travis.yml 文件
但在工作期间,Travis 需要密码才能将代码部署到 Droplet。
Link 到我的一个构建: https://travis-ci.com/KletskovG/kletksovg.tech/builds/132806624
我尝试在 bash 中安装 expect 包并像这样写入我的 deploy.sh 脚本:
期待"password"
发送"My_droplet_user_password"
我的.travis.yml配置
language: node_js
node_js:
- 10
notifications:
email: false
addons:
ssh_known_hosts:
- kletskovg.tech
before_install:
- openssl aes-256-cbc -K $encrypted_89e65714f577_key -iv $encrypted_89e65714f577_iv -in travis_rsa.enc -out travis_rsa -d
- chmod 600 travis_rsa
- mv travis_rsa ~/.ssh/id_rsa
- sudo apt-get install -y expect
install:
- cd client
- npm i webpack-cli -g
- npm i
before_script:
- echo -e "Host kletskovg.tech\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
- echo -e "Host github.com\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
script:
- npm test
deploy:
provider: script
skip_cleanup: true
user: travis
password: TravisDeploy02
script: cd ../ && chmod +x ./deploy.sh && ./deploy.sh
on:
all_branches: true
#
#after_success:
# - bash ./deploy.sh
部署时的代码:
Deploying application
+echo '#### DEPLOY ####'
#### DEPLOY ####
+'[' master == master ']'
++ssh-agent -s
+eval 'SSH_AUTH_SOCK=/tmp/ssh-zAgy7iJpDFB6/agent.7731; export SSH_AUTH_SOCK;
SSH_AGENT_PID=7732; export SSH_AGENT_PID;
echo Agent pid 7732;'
++SSH_AUTH_SOCK=/tmp/ssh-zAgy7iJpDFB6/agent.7731
++export SSH_AUTH_SOCK
++SSH_AGENT_PID=7732
++export SSH_AGENT_PID
++echo Agent pid 7732
Agent pid 7732
+ssh-add /home/travis/.ssh/id_rsa
Identity added: /home/travis/.ssh/id_rsa (gfgfddglebtravis@gmail.com)
+echo TRYING TO DEPLOY
TRYING TO DEPLOY
+git init
Reinitialized existing Git repository in /home/travis/build/KletskovG/kletksovg.tech/.git/
+git remote add deploy travis@kletskovg.tech:/var/www/kletskovg.tech
+git config user.name 'Travis CI'
+git config user.email gfgfddgleb@gmail.com
+git add .
+git commit -m Deploy
[detached HEAD 4561161] Deploy
2 files changed, 42 insertions(+)
mode change 100644 => 100755 deploy.sh
+git push --force deploy master
Warning: Permanently added the ECDSA host key for IP address '138.68.30.170' to the list of known hosts.
travis@kletskovg.tech's password:
我该如何解决这个问题? 谢谢。
我只是在新的存储库中从头开始创建所有内容。 现在可以使用了。