代码之家  ›  专栏  ›  技术社区  ›  Ciasto piekarz

ssh部署机器并运行python文件时,即使存在错误,也会导致找不到错误

  •  2
  • Ciasto piekarz  · 技术社区  · 8 年前

    我已经更改了gitlab runner将用于登录到运行临时服务器的其他计算机的用户的密码(让我们称他为staging\u user),

    而在 .gitlab-ci.yml

    staging_deploy:
      stage: deploy
      variables:
        SSH_EXEC: "ssh staging_user@staging_server"
        DEPLOY_PATH: "/home/staging_user/project_site"
      only:
        - staging
      script:
        - ${SSH_EXEC} "if [ -d ${DEPLOY_PATH} ]; then \rm -r ${DEPLOY_PATH}/*; else mkdir -p ${DEPLOY_PATH}; fi"
        - echo -e ${GITSSHKEY} > conf/.ssh/id_rsa
        - scp -r * staging-user@staging_server://home/staging_user/project_site/
        - ${SSH_EXEC} "cd ${DEPLOY_PATH}/; docker-compose build --no-cache --force-rm; docker-compose up -d"
        - ${SSH_EXEC} "docker exec website_staging python /var/www/website.com/src/manage.py collectstatic --no-input"
    

    gitlab runner在git01机器上运行,从那里gitlab runner ssh到staging_服务器用户是staging_用户(请参阅上面的ssh_EXEC值)

    我注意到 GITSSHKEY 是存储在gitlab项目中的变量,位于: gitlab.com/test_group/project_site/settings/ci_cd .所以我认为需要更新这个SSH密钥,但我有点困惑,不确定在哪里运行SSH keygen来生成新密钥并粘贴到这里,不管我是从gitlab runner正在SSH'ing的地方还是在git01上运行SSH keygen staging_server 机器

    我明白了 错误 :

    Service 'web' failed to build: error pulling image configuration: Get https://dseasb33srnrn.cloudfront.net/registry-v2/docker/registry/v2/blobs/sha256/0a/0a2bad7da9b55f3121f0829de061f002ef059717fc2ed23c135443081200000e/data?Expires=1526503430&Signature=LZNRPPcqYzFoeE94jHgdxyN7gONaewh3ZF2688IVPhrOFKt-DB20gcSZIytqiDff8Hk7CS60SFKoROkU4VWMroByNqAcrFeMJGEAG-GKSSLXKPqQUsxYeXyW5rRGGbC8CqARQKsj1GBR-fTvRstcrnfhQVrn9gv~IFtqRXNB-LM_&Key-Pair-Id=APKAJECH5M7VWIS5YZ6Q: net/http: TLS handshake timeout
    website_web_1 is up-to-date
    $ ${SSH_EXEC} "ls -lh /var/www/website.com/src/manage.py"
    -rw-rw-r-- 1 staging_user staging_user 280 May 15 16:26 /var/www/website.com/src/manage.py
    $ ${SSH_EXEC} "docker exec website_web_1 python /var/www/website.com/src/manage.py collectstatic --no-input"
    python: can't open file '/var/www/website.com/src/manage.py': [Errno 2] No such file or directory
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   VonC    8 年前

    关于最初的问题,请注意:更改密码不应影响ssh密钥,因为它依赖于远程服务器上的公钥 ~staging_user/.ssh/authorized_keys .

    需要在源计算机上生成新的ssh密钥(将ssh启动到远程计算机的密钥),并且需要首先将公钥部署到远程计算机 ~staging_user/。ssh/authorized\u密钥 文件

    经过讨论 OP Ciasto piekarz in the comments :

    我发现,如果容器已经在运行,那么就会出现此错误,但是如果我们停止运行的容器并更新分支以便gitlab runner运行管道,那么部署就会成功