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 密钥。
在我的本地机器上执行时部署工作正常。
我的配置有什么问题?
我的解决方案:
- 为Gitlab生成临时ssh密钥CI并在Gitlab中添加
PRIVATE_KEY
变量
- 在我的 AWS EC2 服务器上生成 ssh 密钥并将 Gitlab 中的 public ssh 密钥添加到
接受
git clone
Deployer 执行的操作
- 通过执行命令
ssh-keyscan -t rsa gitlab.com >> ~/.ssh/known_hosts
在我的 AWS EC2 服务器上接受 gitlab 主机连接
- 确保您的 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
如果有更好的解决办法。请告诉我。
我正在尝试使用 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 密钥。
在我的本地机器上执行时部署工作正常。
我的配置有什么问题?
我的解决方案:
- 为Gitlab生成临时ssh密钥CI并在Gitlab中添加
PRIVATE_KEY
变量 - 在我的 AWS EC2 服务器上生成 ssh 密钥并将 Gitlab 中的 public ssh 密钥添加到
接受
git clone
Deployer 执行的操作 - 通过执行命令
ssh-keyscan -t rsa gitlab.com >> ~/.ssh/known_hosts
在我的 AWS EC2 服务器上接受 gitlab 主机连接
- 确保您的 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
如果有更好的解决办法。请告诉我。