zoukankan      html  css  js  c++  java
  • gitlab与jenkins结合构建持续集成

    Jenkins是java编写,需要安装JDK,这里采用 yum 安装,对版本有需求的,可以到 oracle 官网下载 JDK。

    yum install -y java-1.8.0-openjdk
    

      

    一、安装 Jenkins

    添加yum源

    sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

    导入密钥

    sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

    安装

    yum install -y jenkins

    新版本的 gitlab 服务端口为 8080,为了不和 gitlab 的服务端口冲突,修改 Jenkins 的默认端口为 8088。

    查看端口

    netstat -antup|grep :80

    修改端口为8088

    vi /etc/sysconfig/jenkins
    JENKINS_PORT="8088"
    

    数据目录,可以自定义
    JENKINS_HOME="/var/lib/jenkins"

    二、启动 Jenkins

    systemctl start jenkins.service

    设置开机启动

    systemctl enable jenkins.service

    如果访问8088端口,发现访问不了,则先查看日志

    cat /var/log/jenkins/jenkins.log

    如果发现这种信息

    java.io.IOException: permission denied

    原因是 Jenkins 默认使用的是 Jenkins 用户,因此日志中出现了权限问题,修改 Jenkins 默认用户为 root。

    vi /etc/sysconfig/jenkins
    JENKINS_USER="root"
    

      

    三、配置jenkins使用gitlab更新代码

    安装插件
    Credentials Plugin # 签名证书管理
    Gitlab Plugin # 安装后从gitlab获取代码
    Git Plugin 和 Git Client Plugin # 用于 jenkins 在 gitlab中拉取源码
    Gitlab Hook # gitlab触发 jenkins 构建项目
    Gitlab Authentication # gitlab和 jenkins 认证相关的插件
    SSH Plugin # 远程执行 shell 脚本
    Publish Over SSH # 通过 ssh 部署应用

    如果 jenkins 安装插件超时,可以在 管理jenkins -> 插件管理 -> 高级 -> 升级站点 改为:

    https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

    如果换站点后,还是安装超时,则到下面网站手动下载安装

    http://updates.jenkins-ci.org/download/plugins/
    

      

    四、设置 gitlab 用户 root 可以通过 ssh 公钥直接下载代码

    生成的SSH密钥, 一路回车,注意我这里生成的是 root 用户,当然你也可以指定用户

    ssh-keygen

    查看公钥

    cat ~/.ssh/id_rsa.pub

    然后把公钥添加到 gitlab 项目->设置->版本库->部署密钥
    这样我们通过root用户拉取代码,就不需要输入用户名和密码了。

    git clone git@192.168.1.222:develop/web.git
    

      

    五、Jenkins 添加 gitlab 用户 root 的 私钥

    cat ~/.ssh/id_rsa

    在 凭据 -> 全局 -> 添加凭据 -> 选择类型 SSH Username with private key
    用户名输入 root,并添加私钥

    注意,root用户的公钥在 gitlab,私钥在 jenkins,这样 jenkins 就可以直接拉取 gitlab 上的代码。

    六、在 Jenkins 上添加项目

    新建一个item -> 输入任务名称 -> 选择构建一个自由风格的软件项目,然后点确定。

    然后 描述 根据需要自已填写,源码管理选择 git,并添加仓库URL为 git@192.168.1.222:develop/web.git。
    然后选择凭据为我们刚刚添加的 root,然后点保存。

    七、自动部署 web 项目

    可以通过执行命令或脚本方式进行代码发布,这里演示使用 root 用户在各服务器上发布代码。
    当然也可以建一些普通用户,但需要保持所有服务器上的用户ID一致,避免权限问题。

    比如我想把222主机上的代码自动部署到111主机上,我的222主机上安装了 gitlab 和 jenkins。

    1、首先要实现 root 用户无密码直接登陆111主机。

    将公钥复制到远程主机

    ssh-copy-id root@192.168.1.111
    ssh 192.168.1.111

    为了让 jenkins 登陆本机,也免密码,则在本机也复制一份

    ssh-copy-id root@192.168.1.222

    注意,你需要在哪台机器上自动发布代码,就需要让 jenkins 能使用root用户免密码登陆到那台机器上。

    2、我们在 jenkins 的主机上,先 clone 一份代码

    cd /data
    git clone git@192.168.1.222:develop/web.git

    3、然后编写 shell 执行命令,如 sync.sh

    #!/bin/bash
    echo $USER
    cd /data/web
    git pull
    scp -r ./* root@192.168.1.111:/data/wwwroot/

    4、在 jenkins 项目中点击配置,选择构建环境,增加构建步骤,选择 Execute shell,填入如下命令,并保存。

    sudo ssh root@192.168.1.222 /data/sync.sh

    5、然后点击 项目的 立即构建,看代码是否同步到了111主机上。

    八、实现 gitlab 触发 jenkins 自动部署

    1、安装 gitlab hook plugin 和 Build Authorization Token Root 和 Build Token Trigger 插件。

    2、生成身份验证令牌

    openssl rand -hex 16

    3、在 jenkins 项目 -> 配置 -> 构建触发器 -> 选中远程构建,并填入上一步生成的令牌。

    选中如下两项,然后点保存。
    Build when a change is pushed to GitLab. GitLab webhook URL: http://192.168.1.222:8088/project/web
    GitHub hook trigger for GITScm polling

    4、在 gitlab 项目 -> 设置 -> 集成 -> 增加web钩子

    链接URL格式:http://jenkins 地址/buildByToken/build?job=jenkins项目名&token=token值
    如:

    http://192.168.1.222:8088/buildByToken/build?job=web&token=46324e223bc203855552e62dd63b12c9

    5、点击测试,push events,如果返回 201 ,说明成功了。

    6、我们通过 git 添加文件,提交到版本库,看 jenkins 是否会触发自动构建。

    九、使用 Build Pipeline 插件以流程图的形式展示各个 job 的顺序

    Build Pipeline 插件作用: 这个插件能够以流程图的形式展示各个 job 的顺序,依赖关系等等。

    安装完插件后,我们添加一个视图,并选中 Build Pipeline View。

    在 Display Options 中

    No Of Displayed Builds 选择 3 ,

    Refresh frequency (in seconds) 填入 3。

    上面的选项表示显示最近 3 次的构建结果,当然也可根据需要自已填写。

  • 相关阅读:
    AX 2012 Security Framework
    The new concept 'Model' in AX 2012
    How to debug the SSRS report in AX 2012
    Using The 'Report Data Provider' As The Data Source For AX 2012 SSRS Report
    Deploy SSRS Report In AX 2012
    AX 2012 SSRS Report Data Source Type
    《Taurus Database: How to be Fast, Available, and Frugal in the Cloud》阅读笔记
    图分析理论 大纲小结
    一文快速了解Posix IO 缓冲
    #转载备忘# Linux程序调试工具
  • 原文地址:https://www.cnblogs.com/jkko123/p/11626027.html
Copyright © 2011-2022 走看看