CentOS上安装gitlab和自动部署

2017-11-01  本文已影响0人  hawkzz

缘由

买服务器有些日子了,都是用ftp来上传项目文件;也有用过git二次上传(即先上传到服务器库里,然后再到服务器的项目地址里git pull拉代码),知道这种方式很麻烦,试过githook自动部署,在网上找资料,没有成功过;应该是自己太笨,不然别人怎么可以成功呢?然后就一直搁着了;

昨天,朋友说要用服务器,我就说用我的,但是如果每次都要通过我上次代码,或者部署代码不是很麻烦,于是,就又捡起了怎么能自动部署这个想法。今天一天基本上都是在搞这个事情,头都是大的,幸好,皇天不负有心人,终于搞定了,因此有此一记;

环境

安装gitlab

nginx和git的安装就不说了,网上很多,我的另一篇文章中也有,可参考;

安装HTTP 和 SSH

sudo yum install -y curl policycoreutils-python openssh-server cronie

sudo lokkit -s http -s ssh

安装Postfix邮件服务器

sudo yum install postfix
sudo service postfix start
sudo chkconfig postfix on

安装gitlab包

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash

设置gitlab服务器地址

sudo EXTERNAL_URL="http://gitlab.example.com" yum -y install gitlab-ee

Nginx反向代理gitlab

gitlab配置文件

打开gitlab的配置文件,在 /etc/gitlab/gitlab.rb中;

找到 #nginx['listen_port'] = nil
去掉前面的 # ,然后更改端口号为8099

重载gitlab配置文件

gitlab-ctl reconfigure

Nginx配置文件

打开自己安装的Nginx配置文件,在/etc/nginx/nginx.conf中;
增加如下命令:

server {
    listen 80;
    server_name gitlab.example.com;
    location / {
        # 这个大小的设置非常重要,如果 git 版本库里面有大文件,设置的太小,文件push 会失败,根据情况调整
        client_max_body_size 50;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 反向代理到 gitlab 内置的 nginx
        proxy_pass http://gitlab.example.com:8099;
    }
}

重启Nginx服务器

nginx -s reload

打开浏览器,登录;

自动部署

安装gitlab-runner

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash

yum install gitlab-ci-multi-runner

注册runner

gitlab-ci-multi-runner register
#引导会让你输入gitlab的url,输入自己的url,例如http://gitlab.example.com/
#引导会让你输入token,去相应的项目下找到token,例如ase12c235qazd32
#引导会让你输入tag,一个项目可能有多个runner,是根据tag来区别runner的,输入若干个就好了,比如shell
#引导会让你输入executor,这个是要用什么方式来执行脚本,图方便输入shell就好了

这里token怎么寻找?Admin area => Overview => Runners

vps1.png

做完上面的以后,刷新,如下图就成功了

vps2.png

配置.gitlab.yml文件

首先,在gitlab服务器上,创建项目,然后将项目克隆到本地;接着在本地的根目录下,新建.gitlab.yml文件;添加如下代码

stages:
- deploy
deploy:
stage: deploy
script:
    - mkdir -p /var/www/gitlab/myApp
    - git --work-tree=/var/www/gitlab/myApp checkout -f
only:
    - master
tags:
    - shell

參考GitLab官方資料,這裡最重要的就script;

设置权限

在服务器上创建/var/www/gitlab文件夹,并设置这个文件夹的用户组为gitlab-runner:gitlab-runner

chown -hR gitlab-runner:gitlab-runner /var/www/gitlab

然后提交代码:

git add .gitlab.yml
git commit -am 'add .gitlab.yml'
git push

最后,在服务器上的/var/www/myAPP里就自动部署了代码;

上一篇下一篇

猜你喜欢

热点阅读