Skip to content

安装

Docker

https://www.jenkins.io/doc/book/installing/docker/ 宿主机目录:/var/lib/docker/volumes/jenkins-data/_data

bash
$ 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

image.png

Ubuntu

https://www.jenkins.io/doc/book/installing/linux/

bash
# Java SDK
sudo apt-get install openjdk-8-jdk

wget -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 update
sudo apt-get install jenkins

# 验证是否安装成功及相关命令
# 使用 systemctl启动Jenkins
sudo systemctl start jenkins

# 使用其status命令来验证是否成功启动
sudo systemctl status jenkins

# 安装成功会显示以下
wuchendi@WuChendi:~/下载$ sudo systemctl status jenkins
 jenkins.service - LSB: Start Jenkins at boot time
     Loaded: loaded (/etc/init.d/jenkins; generated)
     Active: active (exited) since Mon 2020-10-19 22:00:52 CST; 12h ago
       Docs: man:systemd-sysv-generator(8)
      Tasks: 0 (limit: 18959)
     Memory: 0B
     CGroup: /system.slice/jenkins.service

# 重启Jenkins
sudo systemctl restart jenkins

image.png

配置Jenkins

默认初始本地地址

bash
// ip:8080	(默认为8080端口,可修改)
192.168.xx.xxx:8080

// 重启Jenkins
192.168.xx.xxx:8080/restart
  1. 解锁 Jenkins

image.png

  1. 安装插件

install suggestes plugins(安装建议插件)

image.png

  1. 创建用户

    安装完成后,系统将提示设置一个管理员用户。可以跳过,使用上面使用的初始化密码作为admin登录。

image.png

  1. 配置 URL

image.png

  1. 重启

image.png

  1. 初始化页面

image.png

修改时区

验证的话可以在 [http://ip:808](http://ip:8081)0/systemInfo中查看 user.timezone 因为 Jenkins 容器使用的是 UTC 时间,和我们的北京时间差了正好 8 个小时,针对我们是 Docker 部署的,解决方法如下

bash
# 推荐(已验证)
# 容器修改完时间后需要重新启动容器
mkdir -p /usr/share/zoneinfo/Asia
touch /etc/timezone
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "Asia/Shanghai" > /etc/timezone
docker 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

构建参数化

  1. 添加选项参数

image.png

  1. 添加字符参数

image.png

  1. 最终页面显示

image.png

  1. 构建 - 执行shell
bash
#!/bin/bash
DATE=$(date "+%Y%m%d-%H%M%S")

# 备份目录
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:"$OldFile
		rm -rf $FileDir/$OldFile
		let "FileNum--"
	done

	if [ -d $PATH ]; then
		echo "The file already exists"
	else
		mkdir -p $PATH
	fi
	# 进入项目目录-执行构建命令
	cd $WORKSPACE
	npm install
	npm run build
	# 将打包好的资源备份到相应目录,覆盖已存在的目标
	cp -rf ${WORKSPACE}/dist/* $PATH
	echo "备份完成"
	echo "Completing!!!"
	;;
rollback)
	if [ -n "$VERSION" ]; then
		echo "$DATE -- $JOB_NAME项目回滚版本: $VERSION"

		if [ -d $ROLLBACK_FILEDIR ]; then
			# 删除当前构建产物
			rm -rf dist*
			if [ -d 'dist' ]; then
				echo "The file already exists"
			else
				mkdir -p dist
			fi
			# 进入回滚版本目录
			cd $ROLLBACK_FILEDIR
			# TODO: 这里需要调整,生产环境的包不需要复制到项目目录下,发到cos上(或资源服务器)
			# 将备份拷贝到程序打包目录中,并覆盖之前的资源
			cp -rf * ${WORKSPACE}/dist/
			echo "Completing!!!"
		else
			echo "找不到备份目录, 请检查输入版本是否存在构建失败任务. tip: 设置保留备份个数最大值:5, 请检查恢复版本是否存在!!!"
			exit 1
		fi
	else
		echo "当前回滚版本为空, 请输入需要回滚的版本号!!!"
		exit 1
	fi
	;;
*)
	exit
	;;
esac
  1. 构建成功会保存5个最新的备份

image.png