自托管gitlab自动部署到AWS EC2服务器

时间:2018-11-13 11:51:17

标签: gitlab gitlab-ci gitlab-ci-runner

我之所以这样问,是因为因为找不到与我的案例类似的正在运行的示例。我在AWS EC2机器上拥有了这个自托管的Gitlab(我们称其为“机器1”,我想将自动部署设置为称为“机器2”的AWS EC2远程服务器。

我的Gitlabs安装显示(机器1):

gitlab-ce 10.4.4 gitlab-config-template 10.4.4
gitlab-cookbooks 10.4.4
gitlab-ctl 10.4.4
gitlab-healthcheck
gitlab-monitor
gitlab-pages
gitlab-psql
gitlab-rails
gitlab-scripts
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 run
    警告:在系统模式下使用sudo:
    警告:$ sudo gitlab-runner ...

以sudo的身份运行,显示我的跑步者:

 Verifying runner... is alive                        runner=
 Verifying runner... is alive                        runner=
 Verifying runner... is alive                        runner=

但是仍然在gitlabs中,ui仍显示“ STUCK”标签,并且作业告诉我“作业卡住了,请检查跑步者”

问题:

  1. 这是要遵循的所有步骤吗?

  2. 在这种配置下,您是否看到任何我想念的东西(或过程)?

  3. 在我的gitlab遥控器中,我具有“主”权限,这是我需要运行跑步者吗?

  4. 我现在如何调试(我正在使用gitlab-runner --debug verify)是我所能做的?

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

当runner是“ specific”时,阶段需要一个“ tag”,例如:

stages:
- build
- deploy

 build:
  stage: build
  script: echo "Building the app"

 deploy_staging:
   stage: deploy
   script:
   - echo "Deploy to staging server"
   tags:
     - deploy