zoukankan      html  css  js  c++  java
  • gitlab+jenkins+nginx持续集成

    环境

    centos7.2  2CPU 内存4G

    gitlab:192.168.186.132  

    Jenkins:centos7.2 192.168.186.133 

    nginx:centos7.2 192.168.186.134

    配置yum源

    mkdir -p /etc/yum.repos.d/old

    mv /etc/yum.repos.d/* old

    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

    关闭selinux并确定是出于关闭状态

    sed -i ‘s/SELINUX=enforcing/SELINUX=disabled’ /etc/selinux/config`

    或者临时关闭

    setenforce 0

    gitlab安装


    安装依赖包
    yum install curl policycoreutils openssh-server openssh-clients postfix -y

    启动postfix

    systemctl start postfix

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

    [root@node1 ~]# vim /etc/yum.repos.d/gitlab-ce.repo
    [gitlab-ce]
    name=gitlab-ce
    baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
    repo_gpgcheck=0
    gpgcheck=0
    enabled=1
    gpgkey=https://packages.gitlab.com/gpg.key
    [root@node1 ~]# yum makecache
    [root@node1 ~]# yum install -y gitlab-ce

    在安装一个git客户端
    yum -y install git
    配置并启动gitlab-ce
    [root@node1 ~]# gitlab-ctl reconfigure
    ##时间可能比较长,请你耐心等待即可!~~~
    ##关闭:gitlab-ctl stop
    ##启动:gitlab-ctl start
    ##重启:gitlab-ctl restart
    可以使用gitlab-ctl管理查看gitlab 例如查看gitlab状态:

    默认安装的gitlab,主要有四个目录: 
    /opt/gitlab/ ## 主目录 
    /etc/gitlab/ ## 放置配置文件 
    /var/opt/gitlab/ ## 各个组件 
    /var/log/gitlab/ ## 放置日志文件

    检查gitlab各组件状态: 
    gitlab-ctl status

    重启gitlab: 
    gitlab-ctl restart

    只重启某个组件: 
    gitlab-ctl restart nginx

    git常用命令

    查看远程分支 

    git branch -a    ##remotes 表示远程分支

    查看本地分支

    git branch 

    强制更新分支信息

    git fetch origin --prune

    Clone指定分支,并且下载到指定目录下

    git clone -b 分支名 git路径 "指定目录"

    切换分支

    当前在test分支下切换到master

    git checkout master

    创建远程分支
    #本地开发我们可能会创建一个新的分支(远程并没有此分支)
    #本地
    git checkout -b f-category
    #然后mkdir a.txt
    git add a.txt
    #此时 git push origin,会出错是因为远程没有此分支。
    git push origin f-category #将此分支推到远程,并在远程创建分支(或者 f-category:dev方式推送到远程分支)

     确保80端口没有被占用,被占用的话,建议修改gitlab端口或者使用docker容器搭建gitlab
    访问192.168.186.132 会提示让设置一个密码,设置的密码自己记住就可以.至少8位数

    进入登陆界面 输入用户名及密码 用户root 密码为刚才设置的密码(我这里因为试装了中文汉化版,可参考https://www.cnblogs.com/straycats/p/7637373.html

     

     

    创建新项目

    在创建好的项目里面,点击README顺便输入点文字

    为了保证安全取消用户能够自己注册 (在下面找到seve保存)

     

    现在登陆就能发现没有注册了
    0创建ssh免秘钥登陆 模拟使用gitlab这台服务器当做客户端
    ssh-keygen -t rsa -C “你的邮箱”回三次车,密码为空

    [root@test-1 ~]# cat .ssh/id_rsa.pub
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMV06cQt2fVDwhJ8IocyRDIkgXsvNiaLJW7+4HHF7yMSYf6i2LORK+IEp+gzPO010slfeupw1Kd0QKE993eXMjz5h1x6rm3f/SH7+s/86gi/1vCcx4l1by2nOutixomf4dd3JvnZwVEIXI9HOVCqLRJxn6XnUWzvZsz5tO+8tlPNPxKQ6NZ+gMXcCqUJPQfR2D2JbImfrWSEA5UFC17S/HB7v2GJ7+gitMmFXdHNE0ozu3/SFwmEOQ8LuMKcK0tpG3vDqfKEas17bQs6TDu9nwwQ4kF7540RLLHZ7XTqElnsLz2Ek/mjS+mXna5pkiU8uorXSx66haWL6ij9d4ySab *************@139.com

    把公钥粘贴到gitlab用户当中

     

    创建访问令牌用于后面Jenkins拉取代码

     修改gitlab的拉取地址为主机IP
    vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

     

     重启gitlab-ce 
    [root@node1 ~]# gitlab-ctl restart

    拉取gitlab devops项目

    创建一个index.html用来模拟开发写代码并提交
    [root@node1 test]# pwd
    /root/devops
    [root@node1 test]# cat index.html 
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
    <h1>devops 测试</h1> 
    </body>
    </html>
    #cd devops/
    #git add .
    #git commit --m "add index.html"
    #git push
    ###参数说明
    [root@node1 test]# git add *    ##提交所有更改信息(删除 增加文件)
    [root@node1 test]# git config --global user.email "******@139.com"   ##身份验证
    [root@node1 test]# git config --global user.name "root"             ##身份验证
    [root@node1 test]# git commit -m "HEAD"         ## 提交所有变更的文件

    [root@node1 test]#git push origin master

     验证查看gitlab上是否有提交刚刚创建的文件

    以上就是gitlab搭建过程以及拉取、上传验证

     jenkins安装

    Jenkins是Java编写的,所以需要先安装JDK,这里采用yum安装,如果对版本有需求,可以直接在Oracle官网下载JDK。

    配置yum源

    mkdir -p /etc/yum.repos.d/old

    mv /etc/yum.repos.d/* old

    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

    [root@node2 ~]# yum -y install java-1.8.0
    [root@node2 ~]# yum -y install wget git
    [root@node2 ~]# cd /etc/yum.repos.d/
    [root@node2 yum.repos.d]# wget http://pkg.jenkins.io/redhat/jenkins.repo
    [root@node2 yum.repos.d]#rpm --import http://pkg.jenkins.io/redhat/jenkins.io.key
    [root@node2 yum.repos.d]# yum install -y jenkins
    [root@node2 ~]#  systemctl start jenkins

    [root@node2 ~]# systemctl enable jenkins
    访问jenkins 192.168.186.133:8080 (如端口有冲突也可以在配置文件进行修改)
    [root@node2 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword ##查看密码

    第二种方法

    直接下载 rpm 安装

    各个版本地址 https://pkg.jenkins.io/

    wget https://pkg.jenkins.io/redhat/jenkins-2.156-1.1.noarch.rpm
    rpm -ivh jenkins-2.156-1.1.noarch.rpm

    配置
    vim /etc/sysconfig/jenkins
    
    #监听端口
    JENKINS_PORT="8080"

    配置权限

    为了不因为权限出现各种问题,这里直接使用root

    修改用户为root

    vim /etc/sysconfig/jenkins
    
    #修改配置
    $JENKINS_USER="root"

    修改目录权限

    chown -R root:root /var/lib/jenkins
    chown -R root:root /var/cache/jenkins
    chown -R root:root /var/log/jenkins

    重启

    service jenkins restart
    ps -ef | grep jenkins
    systemctl start jenkins

     
     

     

     

    安装两个插件 gitlab-plugin gitlab hook-plugin Pipeline Maven Integration、Maven Integration、Publish Over SSH、Gitee 
    安装gitlab gitlab hook即可
    要是找不到可以在插件地址下载然后在上传 (这里我装了很多插件,也可以按自己的需要安装即可)

     

     系统设置,配置远程应用服务器 

     

    添加完主机之后,新建一个项目,开始配置构建操作

     

     

     因不想画图借用别人得图(IP地址与用户名不对应) 192.168.186.132 root

     

     

     另一种方法用shell也可以

    配置gitlab,当有代码提交时,触发jenkins的部署操作

     

     

    测试提交代码是否会部署到远程主机

    git clone git@192.168.186.132:data/yht.git
    cd yht/
    echo '测试Jenkins' > index.html
    git add .
    git commit -m 'add index.html'
    git push

     因不想打命令,这里我把上传步骤写在脚本里,直接执行

     

    小坑:

    • 错误提示:

      #很多朋友使用最新版本的gitlab做自动部署时,在增加web钩子那一步,
      #点击test  push events时会报错:Url is blocked: Requests to the local network are not allowed

    解决方法:

    #这是因为新版的gitlab为了安全默认禁止了本地局域网地址调用web hook
    #我们在设置里允许就行,具体步骤如下:

     

     参考文档:https://blog.51cto.com/bigboss/2129477






     
  • 相关阅读:
    Output in PowerShell
    Best practice for Invoke other scripts or exe in PowerShell
    Array.Add () and += in PowerShell
    Hash table in PowerShell
    PowerShell Remove all user defined variable in PowerShell
    C# Regex ignoring non-capturing group
    C# Convert an enum to other type of enum
    what does Html.HiddenFor () for ?
    How to configure connectingstrings in Web.config
    Select specified items from Tuple List
  • 原文地址:https://www.cnblogs.com/yanghaitao/p/11556201.html
Copyright © 2011-2022 走看看