安装
Docker
https://www.jenkins.io/doc/book/installing/docker/ 宿主机目录:/var/lib/docker/volumes/jenkins-data/_data
$ docker run -u root --rm -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean$ docker exec -it boring_margulis /bin/bash$ cat /var/jenkins_home/secrets/initialAdminPassword
Ubuntu
# Java SDKsudo apt-get install openjdk-8-jdkwget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > \/etc/apt/sources.list.d/jenkins.list'sudo apt-get updatesudo apt-get install jenkins# 验证是否安装成功及相关命令# 使用 systemctl启动Jenkinssudo systemctl start jenkins# 使用其status命令来验证是否成功启动sudo systemctl status jenkins# 安装成功会显示以下wuchendi@WuChendi:~/下载$ sudo systemctl status jenkins● jenkins.service - LSB: Start Jenkins at boot timeLoaded: loaded (/etc/init.d/jenkins; generated)Active: active (exited) since Mon 2020-10-19 22:00:52 CST; 12h agoDocs: man:systemd-sysv-generator(8)Tasks: 0 (limit: 18959)Memory: 0BCGroup: /system.slice/jenkins.service# 重启Jenkinssudo systemctl restart jenkins
配置Jenkins
默认初始本地地址
// ip:8080 (默认为8080端口,可修改)192.168.xx.xxx:8080// 重启Jenkins192.168.xx.xxx:8080/restart
- 解锁 Jenkins

- 安装插件
install suggestes plugins(安装建议插件)
- 创建用户
安装完成后,系统将提示设置一个管理员用户。可以跳过,使用上面使用的初始化密码作为admin登录。

- 配置 URL

- 重启

- 初始化页面
修改时区
验证的话可以在
[http://ip:808](http://ip:8081)0/systemInfo中查看user.timezone因为Jenkins容器使用的是UTC时间,和我们的北京时间差了正好 8 个小时,针对我们是Docker部署的,解决方法如下
# 推荐(已验证)# 容器修改完时间后需要重新启动容器mkdir -p /usr/share/zoneinfo/Asiatouch /etc/timezoneln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeecho "Asia/Shanghai" > /etc/timezonedocker restart practical_khayyam# 未验证# 猜想可以设置时区的方式docker run -u root --rm -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai
构建参数化
- 添加选项参数

- 添加字符参数

- 最终页面显示

备份目录
FileDir=”/fe_release_history/$JOB_NAME”
创建每次要备份的目录
PATH=”$FileDir/$BUILD_NUMBER”
回滚目录文件
ROLLBACK_FILEDIR=$FileDir/$VERSION
保留备份个数
BUILD_SAVE=5
case $METHOD in deploy) echo “$DATE — $JOB_NAME项目部署 - $METHOD”
# 进入备份目录cd $FileDir# 获取目录个数FileNum=$(ls -l | grep '^d' | wc -l)while (($FileNum > $BUILD_SAVE)); do# 获取排序最小的文件夹OldFile=$(ls -rt | head -1)echo $DATE "Delete File:"$OldFilerm -rf $FileDir/$OldFilelet "FileNum--"doneif [ -d $PATH ]; thenecho "The file already exists"elsemkdir -p $PATHfi# 进入项目目录-执行构建命令cd $WORKSPACEnpm installnpm run build# 将打包好的资源备份到相应目录,覆盖已存在的目标cp -rf ${WORKSPACE}/dist/* $PATHecho "备份完成"echo "Completing!!!";;
rollback) if [ -n “$VERSION” ]; then echo “$DATE — $JOB_NAME项目回滚版本: $VERSION”
if [ -d $ROLLBACK_FILEDIR ]; then# 删除当前构建产物rm -rf dist*if [ -d 'dist' ]; thenecho "The file already exists"elsemkdir -p distfi# 进入回滚版本目录cd $ROLLBACK_FILEDIR# TODO: 这里需要调整,生产环境的包不需要复制到项目目录下,发到cos上(或资源服务器)# 将备份拷贝到程序打包目录中,并覆盖之前的资源cp -rf * ${WORKSPACE}/dist/echo "Completing!!!"elseecho "找不到备份目录, 请检查输入版本是否存在构建失败任务. tip: 设置保留备份个数最大值:5, 请检查恢复版本是否存在!!!"exit 1fielseecho "当前回滚版本为空, 请输入需要回滚的版本号!!!"exit 1fi;;
*) exit ;; esac
```
- 构建成功会保存5个最新的备份

