Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具。本文将介绍Docker下安装jenkins以及使用jenkins在Docker环境下构建.net core应用。
一、安装jenkins
这里使用Docker来安装JenKins,当然也可以直接安装到Linux中。
-
1、配置环境
mkdir /home/jenkins 创建jenkin文件夹,用于映射
chown -R 1000:1000 /home/jenkins 给uid为1000的权限
想让jenkins能有权限给docker主机发送构建镜像及容器命令,需要开放docker.sock权限
chown -R 1000:1000 /var/run/docker.sock
如果还是没有权限 可以暴力的使用chmod 777 /var/run/docker.sock -
2、运行jenkins容器
docker run -itd -p 9090:8080 -p 50000:50000 --name jenkins --privileged=true -v /home/jenkins:/var/jenkins_home -v /usr/bin/docker:/bin/docker -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts
容器启动后,打开jenkin地址 http://192.168.0.102:9090
会出现初始化界面,如果等待了许久仍然在初始化界面不动,需要你进入jenkins的工作目录,打开-----hudson.model.UpdateCenter.xml将 url 中的
https://updates.jenkins.io/update-center.json
更改为https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
是国内的清华大学的镜像地址。
或者更改为http://updates.jenkins.io/update-center.json,即去掉 https 中的 s 。然后重新下容器。
初始化完成后会要输入密码
查看密码
cat /home/jenkins/secrets/initialAdminPassword
输入密码后会让我们输入系统的管理员名称及密码,设置完后跳转到插件安装界面,我们选择安装推荐的插件,里面包含git等等常用的插件。
安装完插件后会跳转到系统管理员设置界面
后面的几个页面都使用默认设置,即完成初始化配置。 完成后的界面如下
二、在docker环境下构建.net core应用
- 1、准备.net core应用
新建一个.net core 3.1的web应用程序项目,在项目中添加docker容器支持,自动生成Dockerfile文件。这里演示使用源代码的方式构建,所以不需要修改Dockerfile,但是需要将Dockerfile文件移动到解决方案sln目录下(默认生成的是在项目目录下)。然后在Github上建立一个代码仓库,直接将解决方法推送到GitHub上。然后使用这个代码仓库来进行构建。 - 2、jenkins新建任务。
在jienkins中点击新建按钮,创建一个新任务。填写任务名字,选择自由风格,如下图
接着来到了任务设置界面
设置为GitHub项目,填写GitHub地址
源码管理,选择git,填写仓库地址
如果使用手动构建,不需要设置构建触发器和构建环境
构建选项卡,选择执行shell,shell命令如下
cd /var/jenkins_home/workspace/testpro/WebApp/
docker stop mytestjenkins
docker rm mytestjenkins
docker build -t mytestbuild .
docker run -d -p 9009:80 --name mytestjenkins mytestbuild
cd /var/jenkins_home/workspace/testpro/WebApp/ 这行命令解释:/var/jenkins_home为jenkins的目录,也就是我们前面运行jenkins容器命令中的映射目录。workspace为jenkins拉取代码的目录,testpro为任务的名字,WebApp是我们存放在GitHub上项目的文件夹名称。
第一次手动构建一次容器,不然后续自动构建时stop及rm容器会报错,因为不存在该容器。
然后保存。
立即构建
构建结果
访问构建的容器 http://192.168.0.102:9009/weatherforecast 看到有正常的数据返回。
参考文档
在Docker内安装jenkins运行和基础配置
Linux文档整理之【Jenkins+Docker自动化部署.Net Core】