Ubuntu18.04安装Jenkins
由于太懒没设置图床,图片无法访问,可以移步至Jenkis安装
1.添加jenkis的软件包存储库
用于自动安装和升级。要使用此存储库,首先将密钥添加到您的系统
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
2. 添加一个 Jenkins apt 存储库条目
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
3. 更新本地包索引,然后最后安装 Jenkins
sudo apt-get update
sudo apt-get install jenkins
apt-update过程中可能会出现以下错误:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XFehUrTY-1633522235899)(Jenkins安装/源错误.png)]
原因就是jenkis的证书好像有问题,解决如下
sudo apt install ca-certificates
然后重新apt-install,可能提示找不到jdk
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D8i6xgNs-1633522235904)(Jenkins安装/缺java.png)]
根据提示type -p java后找到jdk的安装路径,添加软链接
ln -s /home/data/java/jdk1.8.0_261/bin/java /usr/bin/java # 前面换成自己的路径
4.验证安装
systemctl status jenkins
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7I8JIH6T-1633522235906)(Jenkins安装/1633497135575.png)]
5.更改端口
Jenkis默认端口是8080,经常会冲突
- 修改/etc/init.d/jenkins文件do_start函数的check_tcp_port命令,端口号从8080换成8123
vi /etc/init.d/jenkins
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GX5jULwZ-1633522235909)(Jenkins安装/1633497779633.png)]
- 修改/etc/default/jenkins文件,将HTTP_PORT从8080改成8123
vi /etc/default/jenkins
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aUqiUNaZ-1633522235910)(Jenkins安装/1633497825451.png)]
- 重启Jenkis
systemctl restart jenkins
- 查看状态
systemctl status jenkins
6.登录Web页面
ip+端口(http://192.168.0.106:8123/login?from=%2F)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bsT18rD9-1633522235911)(Jenkins安装/1633498044704.png)]
执行以下命令获取初始密码
cat /var/lib/jenkins/secrets/initialAdminPassword
接下来,图形界面安装建议的插件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P9jiJWeK-1633522235912)(Jenkins安装/1633501611018.png)]
点击“Install suggested plugins” ,安装过程将会立即开始:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ng2WQ9K2-1633522235913)(Jenkins安装/1633501638828.png)]
一旦插件被安装,你将会被提示去设置第一个管理员账号。填写必要的信息,并且点击“Save and Continue”。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pU70iq3x-1633522235914)(Jenkins安装/1633501655838.png)]
下一页将会问你,设置 Jenkins 实例的 URL 地址。这个文本域将会被自动填写生成的 URL。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HWPWYDW6-1633522235915)(Jenkins安装/1633501676850.png)]
通过点击"Save and Finish"按钮,确认 URL,并且设置过程将会完成。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BRyTOZfz-1633522235916)(Jenkins安装/1633501709840.png)]
7.插件设置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eyvYvXnY-1633522235917)(Jenkins安装/1633501758728.png)]
7.1 插件下载地址修改
因为国外地址访问比较慢,所以修改成国内下载地址会提高插件的下载速度 ,修改站点地址为:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PTCpUXRE-1633522235918)(Jenkins安装/1633501816227.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FMOjmwIg-1633522235919)(Jenkins安装/1633501830274.png)]
7.2 Publish Over SSH插件安装
安装该插件的目的是为了在创建任务的构建环节添加Send files or execute commands over SSH即通过SSH的方式将包上传至指定文件夹。
在可选插件中搜索直接安装
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B8NyDICR-1633522235920)(Jenkins安装/1633501983561.png)]
7.3 其他插件
其他插件安装方式类似
8.全局工具配置
主要是配置Java、Maven、Git等工具
8.1 JDK配置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GMNTYr8Q-1633522235920)(Jenkins安装/1633502122889.png)]
8.2 Maven配置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HjHIFGHY-1633522235921)(Jenkins安装/1633502159856.png)]
8.3 Git配置
Git使用默认就行,前提是提前安装了Git
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VQ5HbKDf-1633522235922)(Jenkins安装/1633502207498.png)]
9 系统配置
9.1 Publish over SSH配置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bZD4tRqP-1633522235923)(Jenkins安装/1633502328556.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RlA30IIx-1633522235923)(Jenkins安装/1633502393300.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-16fDXbTy-1633522235924)(Jenkins安装/1633502433283.png)]
9.2 Gitee配置
在插件管理可选插件中搜索Gitee并安装
安装后进入系统配置中的Gitee配置
- 前往 Jenkins -> Manage Jenkins -> Configure System -> Gitee 配置 -> Gitee 链接
- 在 链接名 中输入 Gitee 或者你想要的名字
- Gitee 域名 URL 中输入码云完整 URL地址: https://gitee.com (码云私有化客户输入部署的域名)
- 证书令牌 中如还未配置码云 APIV5 私人令牌,点击 Add - > Jenkins
- Domain 选择 全局凭据
- Kind 选择 Gitee API 令牌
- Scope 选择你需要的范围
- Gitee API Token 输入你的码云私人令牌,获取地址:https://gitee.com/profile/personal_access_tokens
ID, Descripiton 中输入你想要的 ID 和描述即可。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-akonh7mf-1633522235925)(Jenkins安装/1633503010615.png)]
- Credentials 选择配置好的 Gitee APIV5 Token
- 点击 Advanced ,可配置是否忽略 SSL 错误(适您的Jenkins环境是否支持),并可设置链接测超时时间(适您的网络环境而定)
- 点击 Test Connection 测试链接是否成功,如失败请检查以上 3,5,6 步骤。
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sS4jyyqU-1633522235925)(Jenkins安装/1633503100519.png)]
10.基于Docker部署SpringBoot项目
10.1 创建任务
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O6AsKWJh-1633522235926)(Jenkins安装/1633519992497.png)]
10.2 源码管理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sp7OqoiY-1633522235927)(Jenkins安装/1633520056851.png)]
10.3 构建触发器
这个一般不适合生产,推荐使用手动构建,所以这一步忽略
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tnGJeATp-1633522235928)(Jenkins安装/1633520153210.png)]
一般是通过WebHooks触发构建,红框中的URL是Gitee回调的地址,也就是当代码发生改变,Gitee会调用这个接口告诉Jenkis让其拉代码开始构建
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sNezHaQk-1633522235928)(Jenkins安装/1633520278051.png)]
WebHook密码也需要填写在Gitee仓库的管理下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CRdTQOlf-1633522235929)(Jenkins安装/1633520348523.png)]
10.4 构建脚本
这一过程主要分三步:
- maven打包
- 备份,将jar包从jenkis默认目录复制到自定义指定目录,最后生成dockerfile
- 通过SSH连接远程服务器,再通过执行脚本使用dockerfile构建镜像后,docker run 镜像启动容器应用
maven打包
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Ag474E8-1633522235930)(Jenkins安装/1633520595481.png)]
备份,将jar包从jenkis默认目录复制到自定义指定目录,最后生成dockerfile
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JLFxkn0i-1633522235931)(Jenkins安装/1633520608940.png)]
#!/bin/bash
# 上面这个东西不加,会报空间不足异常
# 注意:所有镜像,容器和应用的命名,最好不要有大写字母
# docker镜像/容器名字
SERVER_NAME=blockchain-api
# 操作/项目路径(Dockerfile和Jar存放的路径)
BASE_PATH=/home/data/jenkis/data/$SERVER_NAME
# 备份目录
BACKUP_PATH=/home/data/jenkis/backup
# jar名字
JAR_NAME=$SERVER_NAME-0.0.1-SNAPSHOT.jar
# 源jar路径(注:更新任务名需要同步更新这个路径,例:baiduapplet)
SOURCE_PATH=/var/lib/jenkins/workspace/$SERVER_NAME/target/$JAR_NAME
# 当前日期时间
DATE=`date +%Y%m%d-%H%M%S`
# 备份
function backup(){
if [ ! -d $BACKUP_PATH ]; then
mkdir $BACKUP_PATH
else
echo "备份文件夹已存在"
fi
if [ -f "$BASE_PATH/$JAR_NAME" ]; then
echo "$JAR_NAME 备份..."
cp $BASE_PATH/$JAR_NAME $BACKUP_PATH/$SERVER_NAME-$DATE.jar
echo "备份 $JAR_NAME 完成"
else
echo "$BASE_PATH/$JAR_NAME不存在,跳过备份"
fi
}
# 迁移,构建好的Jar包,复制到DockerFile一起
function transfer(){
echo "迁移代码开始"
rm -rf $BASE_PATH
mkdir -p $BASE_PATH
echo "最新构建代码 $SOURCE_PATH 迁移至 $BASE_PATH ...."
cp $SOURCE_PATH $BASE_PATH
echo "迁移完成"
}
# 生成Dockerfile文件
function dockerfile(){
echo "开始生成Dockerfile文件"
echo """
FROM java:8
ADD $JAR_NAME $JAR_NAME
#更改容器时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 容器启动后执行的操作
CMD java -jar $JAR_NAME
""" > $BASE_PATH/Dockerfile
echo "生成Dockerfile文件成功"
}
#入口
backup # 1:备份
transfer # 2:迁移
dockerfile # 3:生成dockerfile
通过SSH连接远程服务器,再通过执行脚本使用dockerfile构建镜像后,docker run 镜像启动容器应用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gyF6MFoC-1633522235931)(Jenkins安装/1633520958819.png)]
#!/bin/bash
# 上面这个东西不加,会报空间不足异常
# 注意:所有镜像,容器和应用的命名,最好不要有大写字母
# docker镜像/容器名字
SERVER_NAME=blockchain-api
# 操作/项目路径(Dockerfile和Jar存放的路径)
BASE_PATH=/home/data/jenkis/data/$SERVER_NAME
# 端口号
APP_PORT=8081 #应用的端口
E_PORT=8081 #服务暴露给外部调用的端口
# 容器id
CID=$(docker ps -a | grep "$SERVER_NAME" | awk '{print $1}')
# 镜像id
IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
function dockerBuild(){
if [ -n "$CID" ]; then
echo "存在$SERVER_NAME容器,CID=$CID,删除容器 ..."
docker rm -f $CID
echo "$SERVER_NAME容器删除完成..."
else
echo "不存在$SERVER_NAME容器..."
fi
if [ -n "$IID" ]; then
echo "存在$SERVER_NAME镜像,IID=$IID"
docker rmi -f $IID
echo "镜像删除完成"
cd $BASE_PATH
docker build -t $SERVER_NAME .
echo "镜像构建完成"
else
echo "不存在$SERVER_NAME镜像,开始构建镜像"
cd $BASE_PATH
docker build -t $SERVER_NAME .
echo "镜像构建完成"
fi
echo "启动容器..."
docker run --name $SERVER_NAME -d --privileged -p $E_PORT:$APP_PORT $SERVER_NAME
echo "容器启动完成"
}
dockerBuild # 4:停止->删除旧容器,删除旧镜像,重建镜像,run容器
10.5 构建
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jRoi75vG-1633522235932)(Jenkins安装/1633521144678.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IokBfJtN-1633522235933)(Jenkins安装/1633521172563.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lSCnrmEa-1633522235933)(Jenkins安装/1633521186039.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HMeT3Spm-1633522235934)(Jenkins安装/1633521198044.png)]