Symfony - 带有 Deployer 的 Gitlab CI/CD

Symfony - Gitlab CI/CD with Deployer

我正在尝试使用 Deployer 在我的 Symfony 项目上设置 Gitlab CI/CD,但我做不到。 在我的管道上执行部署时,我有一个 Operation timed out error,这意味着我的配置是错误的。

我的gitlab-ci.yml :

image: php:7.4-cli-alpine

stages:
  - deploy

before_script:
  - apk add --update git openssh-client
  - mkdir -p ~/.ssh && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
  - eval $(ssh-agent -s)
  - echo "$SSH_PRIVATE_KEY" | ssh-add -

deploy:
  stage: deploy
  script:
    - curl --show-error --silent https://getcomposer.org/installer | php
    - php composer.phar install -d app/
    - app/vendor/bin/dep deploy dev -vvv
  environment:
    name: prod

我的hosts.yml库存:

dev-server.com:
  stage: dev
  hostname: XX.XXX.XX.X
  user: deployer
  branch: develop
  identityFile: ~/.ssh/gitlab
  deploy_path: /var/www/recruitment_back
  keep_releases: 1

我的Gitlab管道错误:

$ app/vendor/bin/dep deploy dev -vvv
✈︎ Deploying develop on XX.XXX.XX.X
• done on [dev-server.com]
➤ Executing task deploy:prepare
[dev-server.com] > export APP_ENV='prod'; echo [=13=]
[dev-server.com] < ssh multiplexing initialization
[dev-server.com] < ssh: connect to host XX.XXX.XX.X port 22: Operation timed out
➤ Executing task deploy:failed
• done on [dev-server.com]
✔ Ok [0ms]

我还在 Gitlab CI/CD 设置中添加了变量 SSH_PRIVATE_KEY,还在我的服务器上的 authorized_keys 中添加了我的 public ssh 密钥。 在我的本地机器上执行时部署工作正常。

我的配置有什么问题?

我的解决方案:

  1. 为Gitlab生成临时ssh密钥CI并在Gitlab中添加PRIVATE_KEY 变量
  2. 在我的 AWS EC2 服务器上生成 ssh 密钥并将 Gitlab 中的 public ssh 密钥添加到 接受 git cloneDeployer 执行的操作
  3. 通过执行命令 ssh-keyscan -t rsa gitlab.com >> ~/.ssh/known_hosts
  4. 在我的 AWS EC2 服务器上接受 gitlab 主机连接
  5. 确保您的 AWS EC2 服务器接受 gitlab runner 的 ssh 连接。我已经接受了所有 ip 但有没有最好的解决方案?例如通过 gitlab IP 限制 ?

我的gitlab-ci.yml:

image: php:7.4

stages:
  - deploy

before_script:
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
  - eval $(ssh-agent -s)
  - ssh-add <(echo "$PRIVATE_KEY")
  - mkdir -p ~/.ssh
  - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'

  - apt-get install -y curl git
  - curl -LO https://deployer.org/deployer.phar
  - mv deployer.phar /usr/local/bin/dep
  - chmod +x /usr/local/bin/dep

deploy:
  stage: deploy
  script:
    - dep deploy dev -vvv
  only:
    - develop

如果有更好的解决办法。请告诉我。