Gitlab CI-SSH를 통해 원격 서버에 배포


12

컴파일 된 파일에 대해 증언하고 rsync를 통해 프로덕션 서버로 복사하는 새 프로젝트를 위해 Gitlab CI를 사용하는 Gitlab 환경이 있습니다.

이 리소스의 빌드가 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 키를 생성하고 있습니까? pub 키를 배포하기 위해 ssh leys를 사용하는 지점은 어디입니까?
lrkwz

@lrkwz와 마찬가지로 어쨌든 암호를 물을 때마다 모든 빌드에서 새 키를 보내는 지점이 누락되었습니다. 또한, 나는 원격 서버
Fábio Duque Silva

답변:


3

ssh-copy-id가 비밀번호를 요청합니다. sshpass -eGitlab에서 SSHPASS 환경 변수를 사용 하고 설정할 수 있습니다 .


예를 추가 할 수 있습니까?
Yashu Mittal

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.