Jenkins 集成Gitlab

  • Jenkins构建步骤
  • Jenkins pipeline语法
  • pipeline 测试
  • 配置Jenkins 连接到 Gitlab,实现拉取代码
  • gitlab,创建组,项目(Jenkins)
  • Jenkins语法生成器,配置语法连接到gitlab
  • 使用语法生成器
  • Repository URL
  • 配置密钥对,连接到gitlab(这个密钥对作用是Jenkins可以从gitlab托取代码)
  • Jenkins集成gitlab web hook 实现提交代码自动构建
  • Jenkins安装插件
  • gitlab生成令牌(token)
  • Jenkins系统配置gitlab 身份token
  • Jenkins构建项目添加构建触发条件两种方式
  • 使用token方式
  • 使用密码登录方式
  • 提交代码,查看是否自动构建
  • 当Jenkins和gitlab在同一台服务器时,gitlab提示连接Jenkins失败解决方案


Jenkins构建步骤

拉取代码
代码构建
单元测试
质量扫描
部署开发环境

Jenkins pipeline语法

Stage:阶段,一个pipeline可划分为若干个stage,没个stage代表一组操作。例如Build,Test,Deploy。注意点:Stage是一个逻辑分组的概念,可以跨多个Node
Node:节点,一个节点就是一个Jenkins节点,或者是master,或者是agent是执行step的具体运行环境,所有任务都是在node上执行
Step:步骤,Step是最基本的操作单元,小到创建一个目录,大到构建一个Docker镜像,由各类Jenkins Plugin提供,例如:sh ‘make’

pipeline 测试

pipeline script

pipeline {
    agent any

    stages {
        stage('Hello') {
            steps {
                echo 'Hello World'
            }
        }
        stage('拉取代码') {
            steps {
                echo 'code pull'
            }
        }
        stage('代码构建') {
            steps {
                echo 'code build'
            }
        }
        stage('unit test') {
            steps {
                echo 'unit test'
            }
		}
        stage('是否部署开发环境') {
           steps {
                input  '是否部署'
            }
        }
   }   
 }

jenkins pipeline git 指定目录 jenkins git pull_Jenkins

保存后构建

jenkins pipeline git 指定目录 jenkins git pull_Jenkins_02

配置Jenkins 连接到 Gitlab,实现拉取代码

gitlab,创建组,项目(Jenkins)

jenkins pipeline git 指定目录 jenkins git pull_Jenkins_03

在这个组下创建项目Jenkins
配置密钥对,把公钥上传到gitlab 实现服务器免密登录到gitlab,拉取代码(这个在gitlab有写,需要注意的是全局的密钥对还是某个项目的密钥对)

Jenkins语法生成器,配置语法连接到gitlab

使用语法生成器

jenkins pipeline git 指定目录 jenkins git pull_git_04


jenkins pipeline git 指定目录 jenkins git pull_jenkins_05


jenkins pipeline git 指定目录 jenkins git pull_Jenkins_06

Repository URL

从gitlab找到克隆的网址,选择ssh的方式

jenkins pipeline git 指定目录 jenkins git pull_Jenkins_07

配置密钥对,连接到gitlab(这个密钥对作用是Jenkins可以从gitlab托取代码)

配置密钥对可以通过网上查找linux 生成密钥对
点击Jenkins,对Jenkins添加密钥对

jenkins pipeline git 指定目录 jenkins git pull_Jenkins_08

jenkins pipeline git 指定目录 jenkins git pull_git_09

还是报错是因为是全局的key不是项目的,要在gitlab里把公钥添加到项目

jenkins pipeline git 指定目录 jenkins git pull_git_10

在Jenkins上重新选择,点击Generate Pipeline Script 生成语句,并添加到Pipeline Script,保存构建(这条生成的语句是为了连接到gitlab)

jenkins pipeline git 指定目录 jenkins git pull_docker_11

jenkins pipeline git 指定目录 jenkins git pull_Jenkins_12

Jenkins集成gitlab web hook 实现提交代码自动构建

目的:当开发提交代码,Jenkins自动构建任务

Jenkins安装插件

gitlab,gitlab hook, gitlab authentication

jenkins pipeline git 指定目录 jenkins git pull_docker_13

gitlab生成令牌(token)

jenkins pipeline git 指定目录 jenkins git pull_Jenkins_14

Jenkins系统配置gitlab 身份token

jenkins pipeline git 指定目录 jenkins git pull_docker_15

jenkins pipeline git 指定目录 jenkins git pull_docker_16

Jenkins构建项目添加构建触发条件两种方式

使用token方式

jenkins pipeline git 指定目录 jenkins git pull_Jenkins_17

复制下图的URL添加到gitlab里

jenkins pipeline git 指定目录 jenkins git pull_jenkins_18


jenkins pipeline git 指定目录 jenkins git pull_git_19


取消下面 SSL verification认证

使用密码登录方式

jenkins pipeline git 指定目录 jenkins git pull_git_20

测试完成后,就可以测试更改代码,提交后看Jenkins是否自动构建任务

提交代码,查看是否自动构建

jenkins pipeline git 指定目录 jenkins git pull_jenkins_21

当Jenkins和gitlab在同一台服务器时,gitlab提示连接Jenkins失败解决方案

在gitlab admin配置里,找到Outbound requests,允许Jenkins和gitlab在同一台服务器时启用webhooks

jenkins pipeline git 指定目录 jenkins git pull_docker_22