欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > docker部署jenkins和jenkins的基本使用

docker部署jenkins和jenkins的基本使用

2024/10/24 8:32:07 来源:https://blog.csdn.net/m0_63790435/article/details/141036155  浏览:    关键词:docker部署jenkins和jenkins的基本使用

docker部署jenkins和jenkins的基本使用

  • 运行jenkins
  • 初始配置
    • 设置中文
    • 安装插件
    • 配置
  • 创建任务
    • 构建jar
    • 构建容器
  • CI/CD
  • 官仓构建

运行jenkins

docker pull jenkins/jenkins
docker run -d \-u root --privileged=true \-p 8080:8080 \-p 50000:50000 \-v /root/jenkins:/var/jenkins_home \-v /etc/localtime:/etc/localtime \-v /var/run/docker.sock:/var/run/docker.sock \-v /usr/bin/docker:/usr/bin/docker \--name=jenkins \jenkins/jenkins 

初始配置

设置中文

Manage Jenkins ->Manage Plugins -> 可选插件 -> 输入“Locale” -> 勾选并点击安装 -> http://主机ip:8080/restart” -> 重启;

重启后 -> Manage Jenkins -> Configure System -> Locale -> 输入“zh_CN” -> 点击保存和应用。

或者直接安装中文插件:搜索chinese。

安装插件

安装需要用到的插件。若安装插件较慢,可以更换源;若安装插件失败,可以尝试更换版本。

  • Maven Integration plugin: Maven 集成管理插件。
  • Docker plugin: Docker集成插件。
  • GitLab Plugin: GitLab集成插件。
  • Publish Over SSH:远程文件发布插件。
  • SSH: 远程脚本执行插件。

配置

系统管理 -> 全局工具配置 -> 找到Jdk、Git、Maven和docker。

配置好jdk、git、maven和docker的名称、路径等内容。

jdk容器中自带;git可以勾选自动安装;maven同样可以勾选自动安装;docker已经映射了本地的。

创建任务

构建jar

创建一个自由风格的软件项目 -> 填好git仓库地址和用户后 -> 添加maven构建,内容为“clean install -Dmaven.test.skip=true [-f pom.xml]” -> 保存 -> 点击build now即可开始自动拉取代码构建为jar包。

由于第一次构建去才会去自动下载maven,而maven的默认源很慢,可以先取消构建,修改为阿里的源后,在重新启动任务。

<mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url>
</mirror>

构建容器

1、在项目中加上依赖:

<plugin><groupId>com.spotify</groupId><artifactId>dockerfile-maven-plugin</artifactId><version>1.4.13</version><configuration><!--镜像名称有三部分组成:<registry>/<repository>:<tag>,tag默认为latest--><!--仓库名称--><repository>${project.artifactId}</repository><buildArgs><JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE></buildArgs></configuration>
</plugin>

2、在pom.xml同级目录下添加Dockerfile文件。

# 设置JAVA版本
#FROM openjdk:8	#新版docker用这个
#FROM  java:8-alpine #旧版docker用这个,更轻量
#新版用java:8-alpine的方法:
FROM ningbiluoer/java-alpine
# 拷贝运行JAR包
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
# 设置JVM运行参数, 这里限定下内存大小,减少开销
ENV JAVA_OPTS="\
-server \
-Xms256m \
-Xmx512m \
-XX:MetaspaceSize=256m \
-XX:MaxMetaspaceSize=512m"
#空参数,方便创建容器时传参
ENV PARAMS=""
# 入口点, 执行JAVA运行命令
ENTRYPOINT java -jar $JAVA_OPTS /app.jar $PARAMS
# 通过脚本执行
#ENTRYPOINT ["/tmp/start.sh"]

3、创建自由风格项目,源码管理选择git,填上项目地址和凭证。

4、添加构建步骤,类型为Invoke top-level Maven targets:选择maven版本和填上目标内容为:

clean install -Dmaven.test.skip=true dockerfile:build [-f pom.xml]

注意:根据自己的实际代码路径配置

-Dmaven.test.skip=true 跳过测试

dockerfile:build 启动dockerfile插件构建容器

-f heima-leadnews-user/pom.xml 指定需要构建的文件(必须是pom)

5、添加构建步骤,类型为Execute shell

注:JOB_NAME为任务名称,由于构建出来的镜像名称被repository标签指定为了项目的artifactId,所以任务名称要和artifactId一样。

if [ -n  "$(docker ps -a -f  name=$JOB_NAME  --format '{{.ID}}')" ]
then
#删除之前的容器
docker rm -f $JOB_NAME
# 清理无用镜像
docker image prune -f 
docker run -d --net=host -e --name $JOB_NAME $JOB_NAME# 启动docker服务
#docker run -d --net=host -e PARAMS="--spring.profiles.active=prod"  --name $JOB_NAME $JOB_NAME

CI/CD

前面两步和构建容器中的构建容器部分一样。

3、系统管理 -> 系统配置 -> SSH remote hosts

注:ssh添加不了凭据,需要先到 系统管理 -> credentials 里创建凭据,填上远程服务器的用户名和密码。

4、在General里勾选This project is parameterized,添加string类型的参数,名称为docker_registry,填上私有仓库的地址和端口。

5、创建自由风格项目,源码管理选择git,填上项目地址和凭证。

6、添加构建步骤,类型为Invoke top-level Maven targets:选择maven版本和填上目标内容为:

clean install -Dmaven.test.skip=true dockerfile:build [-f pom.xml]

7、添加构建步骤,类型为Execute shell

注:JOB_NAME为任务名称,由于构建出来的镜像名称被repository标签指定为了项目的artifactId,所以任务名称要和artifactId一样。

image_tag=$docker_registry/$JOB_NAME
echo '================docker镜像清理================'
if [ -n  "$(docker ps -a -f  name=$JOB_NAME  --format '{{.ID}}')" ]
then
#删除之前的容器
docker rm -f $JOB_NAME
fi
# 清理无用镜像
docker image prune -f 
# 创建TAG
docker tag $JOB_NAME $image_tag
echo '================docker镜像推送================'
# 推送镜像
docker push $image_tag
# 删除TAG
echo '================docker tag 清理 ================'
docker rmi $image_tag

8、添加构建步骤,类型为Execute shell script on remote host using ssh

echo '================拉取最新镜像================'
docker pull $docker_registry/$JOB_NAMEecho '================删除清理容器镜像================'
if [ -n  "$(docker ps -a -f  name=$JOB_NAME  --format '{{.ID}}' )" ]
then
#删除之前的容器
docker rm -f $JOB_NAME
fi
# 清理无用镜像
docker image prune -f 
echo '===============启动容器================'
docker run -d --net=host --name $JOB_NAME $docker_registry/$JOB_NAME#echo '===============启动容器================'
#docker run -d   --net=host -e PARAMS="--spring.profiles.active=prod" --name $JOB_NAME $docker_registry/$JOB_NAME

官仓构建

使用官方仓库进行CI/CD。

步骤基本与上节CI/CD一样,第4步的参数名称改为version,值为版本号。

本地shell修改为:

登录官方账号时报错:WARNING! Using --password via the CLI is insecure. Use --password-stdin。该错旧版无,登录成功后,密码会经过base64编码保存在$HOME/.docker/config.json的auth属性中,使用该命令echo 'auth值' | base64 --decode即可看到明文密码。

image_name="chat"
image_tag="ningbiluoer/$image_name"
echo '================构建镜像================'
# 清理无用镜像
docker image prune -f 
# 创建TAG
docker tag $image_name $image_tag:$version
echo '================推送镜像================'
# 推送镜像(需先登录官方docker账号)
docker push $image_tag:$version
echo '================推送完成================'
docker rmi $image_tag:$version

远程shell改为:

image_name="chat"
image_tag="ningbiluoer/$image_name"
echo '================清理容器================'
if [ -n  "$(docker ps -a -f  name=$image_name  --format '{{.ID}}')" ]
then
#删除之前的容器
docker rm -f $image_name
#删除镜像
docker rmi $(docker images --filter=reference=$image_tag --format='{{.ID}}')
fi
# 清理无用镜像
docker image prune -f 
echo '================拉取镜像================'
docker pull $image_tag:$version
echo '===============启动容器================'
docker run -d -p 32380:32380 --name $image_name $image_tag:$version

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com