安装部署 docker jenkins 环境
创建一个文件夹 用于存放 jenkins 相关配置
mkdir /Users/mengfanxiao/docker/jenkins
下载 docker jenkins 镜像
`docker pull jenkins/jenkins
当前版本:Jenkins 2.243`
启动镜像
docker run -d -p 8080:8080 -p 50000:50000 --name jenkins --privileged=true -v /Users/mengfanxiao/docker/jenkins:/var/jenkins_home jenkins/jenkins
访问 jenkins
http://localhost:8080/
PS : 如果一直在 Please wait while Jenkins is getting ready to work… 页面,资源访问过慢加载不出来
解决方法
` 找到 /Users/mengfanxiao/docker/jenkins 目录下的
hudson.model.UpdateCenter.xml 文件,
将 https://updates.jenkins.io/up…
替换为 http://mirror.xmission.com/je…
然后重启启动 docker jenkins`
登陆账号
输入密码
` 启动命令中有一个文件映射 将 docker 中的配置文件映射到本地电脑
即 -v /Users/mengfanxiao/docker/jenkins:/var/jenkins_home jenkins/jenkins
既然 docker jenkins 已经启动 那么配置文件也从 docker 映射到本地一份了 `
` 由上面 [输入密码] 截图可以看要去 /var/jenkins_home/secrets/initialAdminPassword 文件中找初始密码
(发现截图上的目录少了一个 jenkins)
那么只需要从 本地文件 /Users/mengfanxiao/docker/jenkins/secrets/initialAdminPassword 即可 `
安装插件
这里选择安装推荐的插件
PS : 这里等待时间太久 如何解决?
解决办法:
修改更新配置源
- 找到 /Users/mengfanxiao/docker/jenkins/updates/default.json
- 把 “www.google.com”改成 “http://www.baidu.com/”
- 把 “updates.jenkins-ci.org/download” 替换成 “mirrors.tuna.tsinghua.edu.cn/jenkins”
快速更新的办法
使用 vim 的命令
- 替换所有插件下载的 url
:1,$s/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g
- 替换连接测试 url
:1,$s/http:\/\/www.google.com/https:\/\/www.baidu.com/g
注意:进入 vim 先输入:然后再粘贴上边的:后边的命令,注意不要写两个冒号!修改完成保存退出:wq
心理 PS:速度卡卡的快啊(留下了幸福的眼泪)
创建用户
创建好用户之后 就可以进入到首页了
检查并修复插件
查看失败插件
- 打开系统管理页面 如果有安装失败的插件 则会显示(失败插件名称及原因)
- 查看已安装的插件
`http://localhost:8080/pluginManager/installed
报红的则是安装失败的插件 `
- 功能不全
假如 如果在创建任务的时候没有 [构建一个 maven 项目] 选项 则需要安装 maven 插件
如何安装插件
以上面的功能不全 - 没有 [构建 maven 项目] 为例
- 点开可选插件 输入 maven
http://localhost:8080/pluginManager/available
- 安装后的效果
重启使得刚刚安装的插件生效
` 如果插件有了改变 则已安装插件页面的最下面有一个重启的提示,
重启了之后 刚刚已安装的插件就会生效 `
通过 jenkins 部署项目
创建一个任务
General 配置
Git 配置
git 信息配置
访问 git 的账号配置
指定分支的含义是 获取指定 git 地址下面的指定分支进行代码部署
build
这里需要配置下 maven
`clean package -U -Dmaven.test.skip=true
- U 表示强制更新 `
Post Steps
` 在这一步之前的操作是 jenkins 通过 maven 将指定的项目编译打 jar 或 war 包或其他形式的
这一步是 访问指定的服务器 在指定的路径下面 执行指定的脚本 启动 jar 或 war 或其他
所以需要先配置下服务器:系统管理 - 系统配置 -SSH Server
并测试下是否可以连接 `
- 源文件 表示当前项目编译打包之后是 jar 包还是 war 包
- 可执行文件
“root@iZuf6heduaqlfxz2wj9zc3Z:~# cat /home/jenkins/vote-api/vote-api-test.sh
!/bin/bash
配置 jdk 环境
export JAVA_HOME=/usr/local/software/jdk1.8.0_141
export JAR_HOME=$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
配置项目名称
APP_NAME=vote-api.jar
判断进程是否存在 若存在 则 kill
is_exist(){
pid=ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'
如果不存在返回 1, 存在返回 0
if [-z “${pid}” ]; then
return 1
else
return 0
fi
}
is_exist
if [$? -eq “0”]; then
kill -9 $pid
else
echo “${APP_NAME} is not running”
fi
删除上一次编译打包后的文件
rm -rf /home/test-vote-api/*.jar
将 jenkins 打包编译之后的文件复制到指定位置
cp -rf /home/jenkins/vote-api/target/*.jar /home/test-vote-api/${APP_NAME}
启动项目
nohup java -jar -Dspring.profiles.active=dev /home/test-vote-api/${APP_NAME} -Xms256m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m –server.port=8082 >/home/test-vote-api/logs/vote-api.log 2>&1 &
echo “ 程序已启动 …”
进程是否存在
is_exist
if [$? -eq “0”]; then
echo “${APP_NAME} is running. pid is ${pid} “
else
echo “${APP_NAME} is not running.”
fi
exit“
注意点
- 上述脚本中的文件夹先创建好
mkdir /home/test-vote-api/logs
- PS: 文件访问权限问题
` 如果 jenkins 在配置 server 的时候访问用户不是 root 用户
比如是 jenkins 用户 `
` 查看文件的访问权限 上面是当前用户可以读写可执行、当前用户所属于用户组可读可写可执行、其他用户可读可写可执行
只有这样 jenkins 用户才可以访问
如果不是这样 则需要 chmod 777 /home/jenkins -R 设置下文件夹访问权限 `
邮件通知项目部署情况
构建
后记
` 至此,已经说完了 jenkins 环境搭建过程和如何通过 jenkins 部署一个项目的过程,
我就不演示了构建的过程了 因为我用的公司的服务器,担心内存不够,把公司运行的项目给搞停掉????`
本文使用 mdnice 排版