Jenkins是基于Java开发的一种持续集成工具,主要用于持续、自动的构建/测试软件等相关项目。在Java开发中我们经常能看到使用jenkins来部署,.Net core目前还是比较少见的,但是好的东西我们就应该要拿来使用、借鉴。
1. 安装JenKins这里使用Docker来安装JenKins,当然也可以直接安装到Linux中。
创建jenkins工作目录
mkdir /usr/local/jenkins
拉取jenkins镜像
docker pull jenkins
这里有个小插曲,我用的是jenkins镜像,默认也是latest一般意味着最后最新版本。很多官方最新镜像也都是如此命名;直到后来安装配置完成后,登录进去提示我不是最新版本,让我更新,并且很多插件已经不支持此版本了。发现当前版本和最新版本还相差好几个。心想这不是官方镜像吗 怎么还是这么旧的版本,最后通过搜索发现,Jenkins官方最新镜像现在已改为jenkins/jenkins的了。
所以最新版是:jenkins/jenkins
我们拉取最新lts版本。
docker pull jenkins/jenkins:lts
看如下图jenkins和jenkins/jenkins两个镜像的差别,发现常规下的latest版本并不最新的了,它们的创建时间已经是1年以前了。而jenkins/jenkins 则创建时间在2天不到。
所以常规的latest并不意味着最新版本。
修改jenkins目录和docker目录权限,这里1000是容器中Jenkins 的用户 uid
chown -R 1000:1000 /usr/local/Jenkins
sudo chown -R 1000:1000 /var/run/docker.sock
尤其docker.sock 这个权限很重要,到时候容器里的Jenkins需要执行docker命令需要的
运行Jenkins 注意后面的镜像名称和版本lts
docker run -itd -p 8080:8080 -p 50000:50000 --name jenkins --privileged=true -v /usr/local/jenkins:/var/jenkins_home -v /usr/bin/docker:/bin/docker -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts
参数解释:
-p 8080:8080 -p 50000:50000 --映射jenkins端口
--name jenkins --容器名称自己命名
privileged=true --授予容器管理员权限
-v /usr/local/jenkins:/var/jenkins_home --映射jenkins目录
-v /usr/bin/docker:/bin/docker --映射docke目录 到时候需要在容器里执行docker命令
-v /var/run/docker.sock:/var/run/docker.sock --映射docker执行命令 到时候需要容器里执行docker命令。
容器是否启动成功最好还是通过docker ps 或者netstat –ntlp |grep 8080 (查看我们容器映射的端口是否监听成功) 查看当前容器是否运行成功。
某些情况下,如权限没有配对,启动会不成功的。
查看正在运行的容器。
docker ps
2. 配置JenKins
查看容器启动成功后,我们可以通过地址+端口访问刚刚运行的Jenkins
例如:8080
安装成功访问后会如下图所示。
提示首次访问需要密码,我们通过刚刚映射的Jenkins目录里查看这个默认密码。
默认密码路径:/usr/local/jenkins/secrets/ (注意前面usr/local/jenkins路径就是刚刚自己映射的目录)
查看密码文件
cat initialAdminPassword
输入密码然后继续下一步。
下一步如果有出现404的,如下图
网上搜索了解听说是Jenkins的一个bug;部分版本存在。
解决办法(以下步骤是解决登录404的;如果没有404则可以跳过)
首先回到Jenkins主目录找到config.xml文件并打开。
将<useSecurity> 修改为false
停止并重新运行jenkins
重启后一定要重新查看默认密码,否则旧密码是登录不成功的。
登录进去以后这里默认选择推荐的插件。