docker安装Jenkins
踩过的坑
- docker安装的Jenkins在配置maven时有黄色的提示【不在挂载目录】
- gitee 构建项目
- Jenkins新建item后无法构建项目
参考文章
解决docker安装后导致无法使用maven拉取项目的问题
解决构建项目的前期配置,maven拉包配置
https://blog.csdn.net/u012702547/article/details/126156584https://blog.csdn.net/weixin_46034375/article/details/127572547后续构建配置
脚本提供
部分图片也是直接cv过来的,如果有侵权什么的请联系删除
如果大家有其他方式欢迎分享!!!
安装Jenkins
1.选择的镜像版本
jenkins/jenkins:2.346.3-2-centos7-jdk8
2.构建容器
docker run -d \
-p 8080:8080 \
-p 50000:50000 \
-v /usr/local/src/jenkins:/var/jenkins_home \
-v /etc/localtime:/etc/localtime \
--name jenkins \
jenkins/jenkins:2.346.3-2-centos7-jdk8
-v /usr/local/src/jenkins:/var/jenkins_home :挂载Jenkins的主目录
3.登录Jenkins
通过容器日志查看密码
安装Jenkins插件
Jenkins 在构建 maven 项目时,需要先安装 【Maven Integration】插件。
安装 Publish Over SSH 插件
安装git插件和gitee插件
安装git
通过yum命令安装即可,再配置一下。可以通过git命令拉取代码就行
安装maven
1.直接通过压缩包安装【简单一点】
2.然后将maven移动到Jenkins的挂载目录下【上文的/usr/local/src/jenkins】
切换阿里源
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
<mirror>
<id>ibiblio</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</mirror>
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>google-maven-central</id>
<name>Google Maven Central</name>
<url>https://maven-central.storage.googleapis.com</url>
<mirrorOf>central</mirrorOf>
</mirror>
<!-- 中央仓库在中国的镜像 -->
<mirror>
<id>maven.net.cn</id>
<name>oneof the central mirrors in china</name>
<url>http://maven.net.cn/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
安装jdk
和maven的道理相同
不过看其他文章说Jenkins有默认的jdk也可以不用安装【没试过】
配置Jenkins全局工具配置
从容器中查看是否挂载成功【路径后面有用】
docker exec -it jenkins bash 进入容器
cd var/jenkins_home/ 进入目录
ls 查看
maven配置【注意:文件路径是Jenkins容器中的路径,并不是宿主机的路径】
jdk配置【注意:文件路径是Jenkins容器中的路径,并不是宿主机的路径】【可能可以不配】
git配置【这个路径就是宿主机的路径】
【注意】 /usr/local/git/bin/git 是 git 文件的路径,不是 git 的安装路径,如果使用 yum 或 dnf 安装的 git 会在 /usr/bin/git 路径下。
maven【注意:文件路径是Jenkins容器中的路径,并不是宿主机的路径】
系统配置
Gitee配置
SSH配置【将jar包发到虚拟机上】
往下拉找到 Publish Over SSH,然后点击新增,开始配置,Hostname 位置填写你服务器的域名或者 IP
构建自动化部署
需要注意的是:只有在 Jenkins 中安装了 Maven Integration 插件,才会有【构建一个 maven 项目】的选项
注意:如果在安装 git 的时候,设置了保存用户名和密码,那么就不需要配置 【Credentials】 下的登录凭证信息,如果没有保存用户名和密码,就需要设置【Credentials】下的信息,下面是配置【Credentials】的步骤,已经保存账户名和密码可以忽略下面步骤
GiteeHooks配置
继续构建配置
虚拟机需要的东西
1.start.sh脚本
# 源jar路径
SOURCE_PATH=/usr/local/src/jenkins/workspace/ostomy/target
# Dockerfile路径,不用放在/target目录,因为每一次打包会重置target目录。当然,也可以是其他目录做相应更改
DOCKER_FILE_PATH=/usr/local/src/jenkins/workspace/ostomy
# 容器id
CID=$(''docker ps | grep "ostomy" | awk '{print $1}''')
echo $CID
# 运行docker容器
function run(){
echo "开始构建镜像..."
cd $DOCKER_FILE_PATH
echo "当前路径如下"
pwd
# 构建前判断是否存在镜像,存在则删除
if [ -n "$CID" ]; then
echo "存在demo容器,CID=$CID,重启docker容器 ..."
# 停止容器运行
sudo docker stop $CID
# 删除容器
sudo docker rm $CID
# 删除镜像
sudo docker rmi ostomy
echo "删除镜像和容器成功,下面开始构建新镜像"
else
echo "不存在ostomy容器,下面直接开始构建镜像"
fi
# 构建镜像
docker build -t ostomy .
echo "创建容器成功"
docker images
# 杀死特定端口进程
# mypid=$(netstat -apn|grep 9001|awk '{print $7}'|cut -d/ -f1);
# echo $mypid
# kill -9 $mypid
docker run -d --restart=always --name ostomy -p 8081:8081 ostomy
}
#入口
run
2.Dockerfile脚本
FROM java:8
MAINTAINER xiaobai
WORKDIR /project
COPY ./target/ostomy.jar /project/ostomy.jar
CMD ["java","-Duser.timezone=Asia/Shanghai","-jar","ostomy.jar","-Dfile.encoding=utf-8"]
构建即可
可能遇到的问题
- Exec exit status not zero. Status [126]
原因: 对应的.sh 脚本权限不足,修改需执行的脚本权限即可
chmod +777 start.sh