如何使用 gitlab runners 在 ec2 上自动部署?
How to auto deploy on ec2 using gitlab runners?
我想在 gitlab 上自动部署 node.js 项目。
目前我在 .gitlab-ci.yml
上使用以下配置
deploy_to_dev_aws:
only:
- development
script:
- echo "$EC2_SSH_KEY" >> "key.pem"
- chmod 600 key.pem
- ssh -T -i key.pem -o StrictHostKeyChecking=no ubuntu@$EC2_HOST_IP <<EOF
- cd ~/projects
- rm myproject
- git checkout git://myprojectpath
- cd myproject
- pm2 delete all
- pm2 start app.js
- logout
- EOF
stage: build
这是正确的方法吗,因为我正在登录 ec2 并执行所有操作?
还有哪些其他方法可以做到这一点?
我找到了一种使用 ssm agent 进行部署的方法,通过这种方法我们可以使用标签(不需要 .pem 密钥)部署到多个 EC2 实例
步骤:
1) 在 EC2 实例上安装 SSM,将该实例标记为 environment=qa
2) 使用 Gitlab 运行ner 向这个标记的实例发送命令
deploy_to_prod_dev_aws:
image: python:latest
only:
- qa
script:
- pip install awscli
- export AWS_ACCESS_KEY_ID=$AWS_KEY_ID
- export AWS_SECRET_ACCESS_KEY=$AWS_SECRET
- export AWS_DEFAULT_REGION=$AWS_REGION
- aws ssm send-command --targets "Key=tag:environment,Values=qa" --document-name "AWS-RunShellScript" --comment "Deployment" --parameters commands="cd /project && git clean -fd && git fetch && git checkout qa && git pull origin qa && npm install && pm2 delete all && pm2 start app.js" --output text
stage: build
environment:
name: qa
在上面的命令中
--targets
指定我们要部署到哪些 ec2 实例,由标签定义
--parameters commands
定义在 ec2 instance.I 运行 git pull
上 运行 的哪些命令,最新代码 & pm2 start
希望这对某人有所帮助。
我想在 gitlab 上自动部署 node.js 项目。
目前我在 .gitlab-ci.yml
上使用以下配置deploy_to_dev_aws:
only:
- development
script:
- echo "$EC2_SSH_KEY" >> "key.pem"
- chmod 600 key.pem
- ssh -T -i key.pem -o StrictHostKeyChecking=no ubuntu@$EC2_HOST_IP <<EOF
- cd ~/projects
- rm myproject
- git checkout git://myprojectpath
- cd myproject
- pm2 delete all
- pm2 start app.js
- logout
- EOF
stage: build
这是正确的方法吗,因为我正在登录 ec2 并执行所有操作?
还有哪些其他方法可以做到这一点?
我找到了一种使用 ssm agent 进行部署的方法,通过这种方法我们可以使用标签(不需要 .pem 密钥)部署到多个 EC2 实例
步骤:
1) 在 EC2 实例上安装 SSM,将该实例标记为 environment=qa
2) 使用 Gitlab 运行ner 向这个标记的实例发送命令
deploy_to_prod_dev_aws:
image: python:latest
only:
- qa
script:
- pip install awscli
- export AWS_ACCESS_KEY_ID=$AWS_KEY_ID
- export AWS_SECRET_ACCESS_KEY=$AWS_SECRET
- export AWS_DEFAULT_REGION=$AWS_REGION
- aws ssm send-command --targets "Key=tag:environment,Values=qa" --document-name "AWS-RunShellScript" --comment "Deployment" --parameters commands="cd /project && git clean -fd && git fetch && git checkout qa && git pull origin qa && npm install && pm2 delete all && pm2 start app.js" --output text
stage: build
environment:
name: qa
在上面的命令中
--targets
指定我们要部署到哪些 ec2 实例,由标签定义
--parameters commands
定义在 ec2 instance.I 运行 git pull
上 运行 的哪些命令,最新代码 & pm2 start
希望这对某人有所帮助。