Gitlab CI-SSH経由でリモートサーバーにデプロイ


12

Gitlab CIを使用したGitlab環境があります。これは、コンパイル済みファイルについて証言し、rsyncを介して運用サーバーにコピーする新しいプロジェクト用です。

これらのリソースのビルドがexecであるマシンはdocker(ノード6)のイメージですが、Linuxを使用してそのコンテナーDockerコマンドからサーバーに結果ファイルをコピーする必要があります...私の問題はssh経由で接続することですrsync。

現在、私は以下を持っています:

stages:
  - deploy

before_script:
    - npm i
    - npm run build

job_deploy:
  stage: deploy
  script:
    - ssh-keygen -t rsa -b 4096 -C '' -f ~/.ssh/deploy_rsa
    - ssh-keyscan -H 8.8.8.8 >> ~/.ssh/known_hosts
    - ssh-copy-id -i ~/.ssh/deploy_rsa.pub $SERVER_USER@8.8.8.8
    - rsync -avuz $CI_PROJECT_DIR/dist/ $SERVER_USER@8.8.8.8:/var/wwww/example.com
  only:
    - master

これによって私は得ています:

    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    Permission denied, please try again.
    Permission denied, please try again.
    Permission denied (publickey,password).

3
私はここで強調していません:ビルドごとに新しいsshキーをその場で生成していますか?you.need pwdでssh leysを使用してpubキーをデプロイするポイントはどこですか?
lrkwz

@lrkwzのように、とにかくパスワードの入力を求められるときに、すべてのビルドで新しいキーを送信するポイントもありません。また、私は、リモートサーバー上のauthorized_keysファイル...見てみたい
ファビオ・デュケ・シルバ

回答:



1

sshキーをrsyncに渡していません。sshキーを適切に識別するためにsshコマンドを実行する次のようなことを行う必要があります。

rsync -avuz -e 'ssh -i ~/.ssh/deploy_rsa' $CI_PROJECT_DIR/dist/ $SERVER_USER@8.8.8.8:/var/wwww/example.com
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.