美文网首页
CentOS上安装gitlab和自动部署

CentOS上安装gitlab和自动部署

作者: hawkzz | 来源:发表于2017-11-01 19:03 被阅读0次

    缘由

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

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

    环境

    • centos 6.8
    • nginx
    • git
    • gitlab

    安装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里就自动部署了代码;

    相关文章

      网友评论

          本文标题: CentOS上安装gitlab和自动部署

          本文链接:https://www.haomeiwen.com/subject/meggpxtx.html