Jenkins 2x笔记
环境配置
gitlab 安装
gitlab ssh 下安装
https://gitlab.cn/install/?version=ce
gitlab 常用命令
gitlab-ctl start # 启动所有 gitlab 组件
gitlab-ctl stop # 停止所有 gitlab 组件
gitlab-ctl restart # 重启所有 gitlab 组件
gitlab-ctl status # 查看服务状态
gitlab-ctl reconfigure # 启动服务
vim /etc/gitlab/gitlab.rb # 修改默认配置文件
gitlab-ctl tail # 查看日志
https://
在 docker 下安装
安装Docker
官方 安装文档
https://gitlab.cn/install/?version=ce
- 更新 yum 源
yum update
- 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
- 添加镜像
# 国外镜像
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 阿里镜像
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 查看源中可使用的版本
yum list docker-ce --showduplicates | sort -r
- 安装 docker
yum install docker-ce docker-ce-20.10.9-3.el7
- 配置开机启动项
systemctl start docker
systemctl enable docker
docker version
使用 docker 容器安装 gitlab
- 添加容器
注:将 hostname 改为自己的 IP
sudo docker run --detach \
--hostname 192.168.75.134 \
--publish 443:443 --publish 80:80 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
registry.gitlab.cn/omnibus/gitlab-jh:latest
- 启动容器
docker start gitlab
- 查看已存在的容器
docker ps -a
- 进入容器
docker exec -it gitlab /bin/bash
访问
http://192.168.75.134
当首次运行出现 502 错误的时候排查两个原因
- 虚拟机内存至少需要 4g
- 稍等一会儿再刷新就好了
管理员账号
用户名:root
密码存在下面文件夹中,登录后需要改密码不然 24 小时之后会失效
注:下面的命令是在 docker gitlab 容器内运行的命令,要先执行第 4 步进入 gitlab 容器
cat /etc/gitlab/initial_root_password
Jenkins 安装
安装 jdk
https://jenkins.io/zh/download
yum install -y java-1.8.0-openjdk
启动 jenkins
contos7 要开放8080端口 或关闭防火墙
java -jar jenkins.war
开放 8080 端口
irewall-cmd --zone=public --add-port=8080/tcp --permanent
systemctl restart firewalld.service
安装 Maven
- 下载 apache-maven-3.x.x-bin.tar.gz
https://maven.apache.org/download.cgi - 解压 tar.gz 包
tar zxvf apache-maven-3.8.6-bin.tar.gz
- 移动解压后的 maven 包
tar zxvf apache-maven-3.8.6-bin.tar.gz
- 运行 maven
/usr/local/maven/bin/mvn
安装 git
配置 Jenkins
- 安装 maven 插件
更新 jenkins 源
第一步:
进入 Manage Jenkins -》 Manage Plugin -> Advanced 最下面有 Update Site,设置为:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 或者http://mirror.xmission.com/jenkins/updates/update-center.json
第二步:修改服务器配置
进入 jenkins安装目录 下的/updates/default.json ,将其中的 updates.jenkins-ci.org/download 替换为 mirrors.tuna.tsinghua.edu.cn/jenkins,有些jenkins版本当中,是将updates.jenkins.io/download替换为 mirrors.tuna.tsinghua.edu.cn/jenkins
然后,把www.google.com 修改为 www.baidu.com
linux用户可用如下命令:
sed -i 's/updates.jenkins-ci.org/download/mirrors.tuna.tsinghua.edu.cn/jenkins/g' default.json
sed -i 's/www.google.com/www.baidu.com/g' default.json
第三步:重启Jenkins服务
重新登陆jenkins之后,进入插件管理中心,可以爽快的安装各种插件了。
构建 maven 项目
- 新建 maven 项目
- 配置项目
添加 git
配置 maven
jenkins 测试报告不显示演示
jenkins 管理 -> 脚本执行
System.setProperty(“hudson.model.DirectoryBrowserSupport.CSP”, “”)
jenkins 不能重启,如果重启效果就没有了。
当然也可以:groovy 插件,执行以上的 groovy 语句。不过需要本地 groovy 执行环境。
执行本地文件
添加 Groovy script
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")
pipeline 语法
pipeline 最简单的结构
pipeline {
agent any
stages {
stage('build') {
steps {
echo 'hello world'
}
}
}
}
结构 | 作用 |
---|---|
pipeline | 代表整条流水线,包含整条流水线的逻辑 |
stages | 流水线中多个 stage 的容器。stages 部分至少包含一个 stage |
stage | 代表流水线的阶段。每个阶段都必须有名称。本例中,build 就是此阶段的名称。 |
steps | 代表阶段中一个或多个具体步骤(step)的容器。steps 部分至少包含一个步骤,本例中,echo 就是一个步骤。在一个 stage 中有且只有一个 steps |
agent | 指定具体在哪里执行 |
note: 以上每一个部分(section)都是必须的,少一个,Jenkins 都会报错。 |
post 部分
post {
failure {
mail to: 'team@email.com', subject: 'The Pieline failed'
}
}
post 部分包含的是整个 pipeline 或阶段完成后一些附加的步骤。
post 部分是可选的,所以并不包含在 pipeline 最简结构中。但这并不代表它作用不大。
根据 pipeline 或阶段的完成状态,post 部分分成多种条件快,包括:
- always:不论当前完成时什么,都执行。
- changed:只要当前完成状态与上一次完成的状态不同就执行。
- fixed:上一次完成为失败或不稳定(unstable),当前完成状态为成功时执行。
- regression:上一次完成状态为成功,当前完成状态为失败、不稳定或终止(aborted)时执行。
- aborted:当前执行结束时时中止状态时(一般为人为中止)执行。
- failure:当前完成状态为失败时执行。
- success:当前完成状态为成功时执行。
- unstable:当前完成状态为不稳定时执行。
- cleanup:清理条件块。不论当前完成状态是什么,在其他所有台哦见快执行完成后都执行。post 部分可以包含多种条件块。以下时 post 部分的完整示例。
pipeline {
agent any
stages {
stage('build') {
steps {
echo "build stage"
}
post {
always {
echo "stage post always"
}
}
}
}
post {
changed {
echo "pipeline post changed"
}
always {
echo "pipeline post always"
}
success {
echo "pipeline post success"
}
// 省略其它条件块
}
}
pipeline 支持的指令
显然,基本结构满足不了现实多变的需求。所以,Jenkins pipeline 通过各种指令(directive)来丰富自己。指令可以理解为对 Jenkins pipeline 基本结构的补充。
Jenkins pipeline 支持的指令有:
- environment:用于设置环境变量,可以定义在 stage 或 pipeline 部分。
- tools:定义在 pipelien 或 sage 部分。它会自动下载并安装我们指定的工具,并将其加入 PATH 变量中。
- input:定义在 stage 部分,会暂停 pipeline,提示你输入内容。
- options:用于配置 Jenkins pipeline 本身的选项,比如 options {retry (3) } 指当 pipeline 失败时在重试 2 次。options 指令定义在 stage 部分或 pipeline 部分。
- parallel:并行执行多个 step。在 pipeline 插件 1.2 版本后, parallel 开始支持对多个阶段进行并行执行。
- parameters:与 input 不同,parameters 是执行 pipeline 前传入的一些参数。
- triggers:用于定义执行 pipeline 的触发器。
- when:当满足 when 定义的条件时,阶段才执行。
在使用指令时,需要注意的是每个指令都有自己的“作用域”。如果指令使用的位置不正确,Jenkins 将会报错。