Jenkins

 ·  ☕ 8  · 👀...

介绍

安装

CentOS

1
2
3
> wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
> rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
> yum install jenkins
1
2
3
4
5
6
7
8
9
> wget https://pkg.jenkins.io/redhat-stable/jenkins-2.222.4-1.1.noarch.rpm
> yum -y localinstall jenkins-2.222.4-1.1.noarch.rpm 
> vim /etc/sysconfig/jenkins 
##### 修改如下内容 ##### 
JENKINS_USER="root"
JENKINS_PORT="80"
##### 内容结束 ##### 
> systemctl start jenkins
> systemctl enable jenkins
  • 安装目录:/var/lib/jenkins/
  • 配置文件目录:/etc/sysconfig/jenkins

初始化

  1. http://localhost
  2. 【选择】“选择插件来安装”–>【点击】无–>【点击】安装。

配置插件源为国内源

1
2
> cd /var/lib/jenkins/updates 
> sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
  • 【点击】Manage Jenkins–>点击Correct–>点击Advanced,下拉找到Update Site,然后把输入框的内容从https://updates.jenkins.io/update-center.json换成https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/2.89/update-center.json。–>【点击】Submit。
  • 重启jenkins http://localhost/restart

配置全局变量

Manage Jenkins–>configureSystem–>Global Properties,添加三个全局变量:JAVA_HOME=、M2_HOME=/usr/local/maven、PATH+EXTRA=$M2_HOME/bin。

Ubuntu

1
> 

Docker

1
> 

配置Jenkins

安装插件

  • Localization: Chinese (Simplified) 语言插件。
  • Role-based Authorization Strategy 角色管理插件。
    【Manage Jenkins】–【Configure Global Security】–> 授权策略切换为“Role-Based Strategy”。
  • Credentials Binding 凭证管理插件。
    支持五种类型的凭据:Username with password、SSH Username with private key、Secret file、Secret text、Certificate。
  • Git 需要在物理主机上安装git。
  • Deploy to container 远程部署到容器,如tomcat。
  • Maven Integration 构建一个maven项目。
  • Pipeline 创建流水线类型项目。

配置Gitlab的webhook构建触发器

Jenkins内置4种构建触发器:

  • 触发远程构建
  • 其它攻城构建后触发(Build after other projects are build)
  • 定时构建(Build periodically)
  • 轮训SCM(Poll SCM)
    定时扫描本地代码仓库的代码是否有变更,如果代码有变更就触发项目构建。这种构建触发器会定时扫描本地整个项目的代码,增大系统的开销,不建议使用。
  1. 安装 Gitlab HookGitLab 插件。
    安装好以后,在构建触发器种,就会多了一种“Build when a change is pushed to Gitlab.Gitlab webhook URL: xxxx”
  2. Jenkins设置自动构建。
  3. 配置Gitlab开启web hook功能。
    【管理中心】 –> 【设置】–> 【网络】–> 【外发请求】–> 【勾选】“Allow requests to the local network from web hooks and services”、“Allow requests to the local network from system hooks”。–> 【Save changes】。
  4. 配置Jenkins的Webhook权限
    【系统管理】–>【系统配置】–>【Gitlab】–>“Enable authentication for ‘/project’ end-point”取消勾选–>【保存】
  5. 配置webhook地址。
    在项目下(注意),【设置】–>【集成】,将步骤1中的url填入“URL”中。–> 【Add webhook】

配置参数化构建

【General】–>【勾选】“This project is parameterized”–>【添加参数】–>【String Parameter】–>名称:branch;默认值:master;描述:请输入一个分之的名称。

配置邮箱服务器发送构建结果

  1. 安装Email Extension Template插件
  2. 设置邮箱相关参数
    【系统管理】–>【系统配置】–>【Jenkins Location】–>【系统管理员邮件地址】–>“wanglibing@xxx.com”
  3. 设置邮件参数
    【系统管理】–>【系统配置】–>【邮件通知】–>
    SMTP服务器:smtp.exmail.qq.com
    用户默认邮件后缀:@xxx.com
    使用SMTP认证:勾选
    用户名:wanglibing
    密码:xxx
    使用SSL协议:勾选
    Use TLS:不勾选
    SMTP端口:465
    Reply-To Address:wanglibing@xxx.com
    字符集:UTF-8
    通过发送测试邮件测试配置:勾选
    Test e-mail recipient:iamwanglibing@qq.com

时区设置为北京时间

打开 【系统管理】->【脚本命令行】运行下面的命令

1
> System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')

配置JDK

配置Git

配置Maven

配置邮件

配置SSH

配置Glang自动发布

源码管理

  • Repository URL:http://192.168.2.91/backgroup/bc-end.git
  • 指定分支(为空时代表any):dev
  • 仓库的本地子目录:/var/lib/jenkins/workspace/bc-end-dev

构建触发器

  • Build when a change is pushed to GitLab. GitLab webhook URL: http://192.168.2.92/project/bc-end-dev
  • Push Events
  • Rebuild open Merge Requests:Never
  • Approved Merge Requests (EE-only)
  • Comments
  • Comment (regex) for triggering a build:Jenkins please retry a build
  • Enable [ci-skip]
  • Ignore WIP Merge Requests
  • Set build description to build cause (eg. Merge request or Git Push )
  • Allowed branches:Allow all branches to trigger this job
  • Secret token:873968f0c376665e7be033922ba9e054

构建环境

构建

执行 shell

1
2
3
4
pwd
go env -w GOPROXY=https://goproxy.cn,direct
go build -o main.dev
pwd

构建后操作

SSH Server
  • Name: 192.168.2.93
  • Exec command:kill -9 $(netstat -nlp | grep 8091| awk ‘{print $7}’ | awk -F “/” ‘{print $1}’ ) || true
SSH Server
  • Name: 192.168.2.93
  • Source files:**/*.dev
  • Remote directory:back/bc-end-dev
  • Exec command:
    pwd
    cd /root/back/bc-end-dev
    chmod u+x ./main.dev
    nohup ./main.dev server -c config/settings.dev.yml -p 8091 > test.log 2>&1 &
SSH Server
  • Name: 192.168.2.93
  • Source files:**/docs/*
  • Remote directory:back/bc-end-dev

配置VUE自动发布

源码管理

  • Repository URL:http://192.168.2.91/frontgroup/bc-front.git
  • 指定分支(为空时代表any):refs/heads/develop
  • 仓库的本地子目录:/var/lib/jenkins/workspace/bc-front-dev

构建触发器

  • Build when a change is pushed to GitLab. GitLab webhook URL: http://192.168.2.92/project/bc-front-dev
  • Push Events
  • Rebuild open Merge Requests:Never
  • Approved Merge Requests (EE-only)
  • Comments
  • Comment (regex) for triggering a build:Jenkins please retry a build
  • Enable [ci-skip]
  • Ignore WIP Merge Requests
  • Set build description to build cause (eg. Merge request or Git Push )
  • Allowed branches:Allow all branches to trigger this job
  • Secret token:873968f0c376665e7be033922ba9e054

构建环境

  • Provide Node & npm bin/ folder to PATH
  • NodeJS Installation:12.18.0
  • npmrc file:- use system default
  • Cache location:Default(~/.npm or %APP_DATA%\npm-cache)

构建

执行 shell

1
2
3
4
5
6
pwd
npm config set registry https://registry.npm.taobao.org
npm config set sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
npm install --unsafe-perm &&
npm run build
tar -czvf dist.tar.gz ./dist/*

构建后操作

SSH Server
  • Name: 192.168.2.93
  • Source files:**/*.gz
  • Remote directory:front/bc-front-dev
  • Exec command:
    pwd
    cd front/bc-front-dev
    tar -xvf ./dist.tar.gz

管理插件

  • Jackson 2 API
  • Git plugin(Git 源码管理插件)
  • Maven Integration plugin(maven 打包插件)
  • Publish Over SSH(远程访问的SSH插件)
  • NodeJS(Node.js插件)
  • Build Timeout
  • Command Agent Launcher Plugin
  • Docker Pipeline
  • Email Extension Plugin
  • GitHub Branch Source
  • Gitlab Hook Plugin
  • GitLab Plugin
  • Go Plugin
  • Gradle Plugin
  • LDAP Plugin
  • Localization: Chinese (Simplified)
  • Matrix Authorization Strategy Plugin
  • NodeJS Plugin
  • OWASP Markup Formatter Plugin
  • PAM Authentication plugin
  • Pipeline
  • Pipeline: Declarative Agent API
  • Pipeline: GitHub Groovy Libraries
  • SSH Build Agents plugin
  • Subversion Plug-in
  • Timestamper
  • WMI Windows Agents Plugin
  • Workspace Cleanup Plugin

安装Pipeline插件

打开 Jenkins 找到 【系统管理】->【插件管理】->【可选插件】,然后在搜索框输入 “Pipeline”

安装BlueOcean插件

打开 Jenkins 找到 【系统管理】->【插件管理】->【可选插件】,然后在搜索框输入 “BlueOcean”

常见错误

初始化安装插件报错

问题原因

插件下载失败,一般都是网络的原因,只要更换到国内的软件源就可以了。

解决办法

  1. 直接点击继续,先完成初始化步骤。
  2. 【点击】Manage Jenkins–>点击Correct–>点击Advanced,下拉找到Update Site,然后把输入框的内容从https://updates.jenkins.io/update-center.json换成https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/2.89/update-center.json,如果不行,换成http://mirror.esuni.jp/jenkins/updates/update-center.json

参考


Wanglibing
Wanglibing
Engineer,Lifelong learner