【发布时间】:2019-04-16 06:04:32
【问题描述】:
我问这个是因为我找不到与我的案例类似的运行示例。我在 AWS EC2 机器中有这个自托管的 Gitlab(我们称之为“机器 1”,我想将自动部署设置为我的 AWS EC2 远程服务器,称为“机器 2”。
我的 Gitlabs 安装显示(机器 1):
gitlab-ce 10.4.4
gitlab-config-template 10.4.4
gitlab 食谱 10.4.4
gitlab-ctl 10.4.4
gitlab 健康检查
gitlab 监视器
gitlab 页面
gitlab-psql
gitlab-rails
gitlab 脚本
gitlab-selinux
gitlab-shell
gitlab-workhorse
我已按照 gitlab 说明在我想要设置自动部署的项目中的 gitlab 文档上设置 CI 和 CD。以下步骤如下:
1.我在 gitlabs doc 之后创建了跑步者,除了(机器 2)之外,这里没什么可展示的:
url: https://url.to.my.compute.amazonaws.com
Token : token given by gitlab
Executor: shell
Tags: build deploy qa stage
2.我已经创建了我的 .gitlab-ci.yml(在根项目中)文件(即使我尝试过创建了两个 yml 文件版本):
yml 2:
stages:
- build
- deploy
build:
stage: build
script: echo "Building the app"
deploy_staging:
stage: deploy
script:
- echo "Deploy to staging server"
yml 1:
#develop stage
deploy:
stage: deploy
before_script:
#generate ssh key
- mkdir -p ~/.ssh
- echo -e "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
script:
- bash .gitlab-deploy.sh
environment:
name: develop
url: https://my.domain.com
when: manual
3.我设置了两个秘密变量
SSH_PRIVATE_KEY 和 DEPLOY_SERVERS(分别带有密钥和 ips)
4.我添加了一个 deploy.sh 文件(在我的项目的根目录中)
#!/bin/bash
#Get servers list
set -f
string=$DEPLOY_SERVERS
array=(${string//,/ })
#Iterate servers for deploy and pull last commit
for i in "${!array[@]}"do
echo "Deploy project on server ${array[i]}"
ssh ubuntu@${array[i]} "cd /var/www/html/app && git pull origin develop"
done
我的 gitlab-runner 向我展示了这一刻:
gitlab-runner 验证
警告:在用户模式下运行。
警告:用户模式要求您手动开始构建处理:
警告:$ gitlab-runner 运行
警告:将 sudo 用于系统模式:
警告:$ sudo gitlab-runner...
并以 sudo 的方式运行,因为它显示了我的跑步者:
Verifying runner... is alive runner=
Verifying runner... is alive runner=
Verifying runner... is alive runner=
但仍然在 gitlabs 中,用户界面得到一个“STUCK”标签,工作告诉我“工作被卡住,检查跑步者”
问题:
这是要遵循的所有步骤吗?
您是否看到我在所有这些配置中遗漏的任何内容(或过程)?
在我的 gitlab 遥控器中,我有“主”权限,这是我运行跑步者所需要的吗?
此时我该如何调试(我正在使用 gitlab-runner --debug verify)是我能做的吗?
提前感谢您的帮助。
【问题讨论】:
标签: gitlab gitlab-ci gitlab-ci-runner