Self-hosting gitlab autodeploy to aws ec2 server

Viewed 421

I'm asking this because because I cannot find a running example similar to my case. I have this self hosted Gitlab in a AWS EC2 machine (let's call this "machine 1" and I want to set autodeployment to my AWS EC2 remote server , called "machine 2".

My Gitlabs installation shows (machine 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

I have follow gitlab instructions to setting up CI & CD on gitlab documentation in my project I want to set autodeployment. The follow steps are follow:

1.I have create runner following gitlabs doc , not much to show here except (machine 2):

 url: https://url.to.my.compute.amazonaws.com
 Token : token given by gitlab
 Executor: shell
 Tags:  build  deploy  qa  stage

2.I have created my .gitlab-ci.yml (in root project) file with (even with two yml file version created i have tried):

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.I have set two SECRET VARIABLES

SSH_PRIVATE_KEY and DEPLOY_SERVERS (with secret key and ips respectively)

4.I have add a deploy.sh file (in root of my project)

#!/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

My gitlab-runner shows me at this momment: gitlab-runner verify WARNING: Running in user-mode.
WARNING: The user-mode requires you to manually start builds processing: WARNING: $ gitlab-runner run
WARNING: Use sudo for system-mode:
WARNING: $ sudo gitlab-runner...

And Running as sudo as says it show my runner :

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

but still in gitlabs ui is getting a "STUCK" tags and the job tell me to "job is stuck, check runners"

Questions:

  1. Are this all the steps to follow?

  2. Do you see anything (or process) I miss in all this configuration?

  3. In my gitlab remote I have "master" permissions, is this what i need to run a runner ?

  4. how can i debug at this point ( i'm using gitlab-runner --debug verify ) is that all I can?

Thanks in advance for you help.

1 Answers

When runner is "specific" , stages need a "tag" like:

stages:
- build
- deploy

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

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