jenkins我是通过下载镜像完成安装的,建议使用docker hub的镜像,它提供的版本比较新。一开始为了图快,我用了163镜像库的jenkins镜像,它的版本比dokcer hub低一个版本。安装好后安装插件,有个必要的插件安装不上,提示版本太低,后来换成docker hub提供的高版本镜像文件就OK了。这是官方地址
操作系统版本:Ubuntu16
docker版本:1.13.1
私有库harbor搭建成功
spring boot项目配置好dockerfile maven插件
拉取镜像
sudo docker pull jenkins
构建镜像
a. 由于容器内权限问题,我们需要根据官方镜像构建一个自己的jenkins镜像。很简单,写个Dockerfile即可,内容如下:
FROM jenkins
USER root
RUN apt-get update && apt-get install -y sudo && rm -rf /var/lib/apt/lists/*
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers
USER jenkins
b. 在Dockerfile所在目录执行构建新镜像命令:
sudo docker build -t jenkins:2.0 #这里的镜像名是自己任取的
启动容器
sudo docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -u root \
-v /home/acmedcare/jenkins_home:/var/jenkins_home \
-v /opt/maven/apache-maven-3.2.5:/usr/local/maven \
-v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker \
上面的命令通过-v 将本地maven目录与Jenkins容器内目录关联,方便后面构建任务时要用到
a. 浏览器输入http:ip:8080
b. 第一次进入会让你输入初始密码,界面上会告诉你在哪个文件下,或者通过docker logs -f jenkins容器号查看启动日志,上面也会打出初始密码。
c. 输入密码成功后选择安装默认插件,下面就跟着提示一步步走就好了。
d. 上面 步骤成功后会进入主界面,马赛克的地方是我已经建好的构建任务
构建任务
a.点击新建
b. general部分填项目名和项目信息
c. 源码管理,jenkins拉代码的地方 ,我的代码是放在gitlab上的,所以配置git。要成功拉取远程仓库的代码,本地环境要配置git账户信息的,所以我先进入容器配置git账户信息的
sudo docker exec jenkins /binbash #jenkins是容器名
git config --global user.name "Issac"
git config --global user.email "Issac@xx.com"
//如果配置了ssh,还需要再配置公私钥匙,这里不再详述
d. 构建触发器,可选配置项。第二个勾选项“触发远程构建”,意思是使用get请求下面说明的url,且带上token,就会触发构建。
e.Pre Steps 一般就是写打包命令,我写的是用mvn打包和打成docker镜像
f. Post Steps,这里就是写执行脚本,脚本就是负责将打好的镜像push到私有库,远程登录部署机器,pull下来刚才的镜像,停止删除之前的容器,启动该新镜像。脚本我是直接拿的网上现成的。需要注意的是,远程登录部署机,需要在jenkins容器内配置ssh免密登录,我先贴免密登录配置,再贴脚本。
免密登录:
sudo docker exec 容器号 /bin/bash #进入容器
ssh-keygen -t rsa #会进入交互模式,一路按回车
会有文字提示生成的公私钥文件存入位置,一般在命令运行当前目录生成.ssh目录,进入该目录,至少有下面两个文件:
id_rsa : 生成的私钥文件
id_rsa.pub : 生成的公钥文件
下面就是将公钥内容拷到目标机器上,有两种方法,一种在当前机器通过以下命令:
ssh-copy-id -i ~/.ssh/id_rsa <romte_ip>
另一种是就是手工将本地id_rsa.pub文件的内容拷贝至远程服务器的~/.ssh/authorized_keys文件中
jenkins执行脚本:
echo '================开始推送镜像================'
sudo docker login --username=admin --password=Harbor12345 x.x.x.x:8090 #登录私有库(harbor我没有用域名)
sudo docker push x.x.x.x:8090/xxx/xxx:latest#推送镜像,镜像文件已经在前面的mvn步骤打好了
echo '================结束推送镜像================'
echo '================开始远程启动================'
ssh root@x.x.x.x -tt << remotessh ###ssh远程部署机器
####从这里开始都是在远程机器上执行命令
cd /opt/issac
./jenkins.sh x.x.x.x:8090/xxx/xxx
sudo docker login -u admin -p Harbor12345 121.42.153.1:8090
sudo docker pull x.x.x.x:8090/xxx/xxx:latest
sudo docker run -d --name=容器名-`date +%Y-%m-%d` -p:8882:8882 --add-host discovery0:x.x.x.x -v /tmp/logs:/logs --network=discovery0 -e x.x.x.x:8090/xxx/xxx:latest
echo "finished!"
##--add-host是容器内添加一条dns,--newwork是当前容器的网络加入我已经创建好的桥接网络discovery0,我的业务系统需要的。
#####执行完毕
exit ###退出远程机器
remotessh ###结尾哦
echo '================结束远程启动================'
exit ###退出远程机器
remotessh ###结束ssh
echo '================结束远程启动================'
下面是远程部署机器上jenkins.sh的内容,网上抄来的,很简单,就是停掉和删除老容器
#!/bin/sh
sudo docker stop $(sudo docker ps | grep $1|awk '{print $1}'|sed 's/%//g')
sudo docker rm $(sudo docker ps -a | grep $1|awk '{print $1}'|sed 's/%//g')
点击保存后,进入主界面,进入自己刚创建的构建任务,点击构建,就会自动执行刚才配置好的内容了。
构建的时候,上图左下角会出现一个递增序号,点击进去后再点控制台,可以看到构建进度
PS:还有一种触发方式就是git push tag触发构建,这个需要在gitlab端配置勾子,也很简单,我是因为Jenkins和部署机器各自在内外网,无法通信,所以没用这个方式。
到此,jenkins搭建配置完毕
参考:
这位大神写的很好
Original url: Access
Created at: 2019-03-21 19:26:50
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论