使⽤Docker+Jenkins⾃动构建部署
环境
Windows 10
Docker Version 18.06.1-ce-win73 (19507)
运⾏jenkins
运⾏jenkins 容器
docker run -d --name lnmp-jenkins --user root -p 8080:8080 -p 50000:50000 jenkins/jenkins:2.165
1、请使⽤ root 账户运⾏,否则使⽤默认jenkins账户运⾏的时间将会有问题。
2、由于是Windows 环境,所以这⾥不建议挂在数据卷。否则将会有⼀些插件安装不成功的问题出现。如果⾮要挂在请求使⽤ 
3、⽅便区分,请给容器给个名字
设置账户
通过you_host:8080登陆查看
在Getting Started界⾯会需要初始的密码Unlock Jenkins。密码会在输出终端,也可根据页⾯提⽰到容器的jenkins_home中查
查看密码请进⼊容器内查看
docker exec -it lnmp-jenkins bash
密码⽂件路径
root@52c33b1a61ba:/var/jenkins_home/secrets#
有了密码,输⼊后安装建议的插件。完毕后,根据提⽰设置登陆账户。
安装Publish Over SSH插件
⾸页 -> 点击系统管理 -> 管理插件 ->可选插件 -> 过滤:ssh -> 选择Publish Over SSH插件,点击直接安装。 
设置服务器SSH信息
⾸先在容器中⽣成rsa密钥:
# 从宿主机客户进⼊容器,⽬前容器名lnmp-jenkins,也可通过docker ps 查看
$ docker exec -it lnmp-jenkins /bin/bash
# 进⼊容器后建⽴.ssh⽬录,创建密钥⽂件私钥id_rsa,公钥id_rsa.pub
~ mkdir ~/.ssh && cd ~/.ssh
~ ssh-keygen -t rsa
# ⼀直回车即可
docker进入容器
添加公钥到宿主机
将id_rsa.pub中字符串添加到authorized_keys⽂件末尾,重启ssh服务sudo service ssh restart
注意宿主机是否开启ssh服务。
可以在容器终端中使⽤下⾯的命令添加到宿主机中。也可⼿动复制id_rsa.pub到宿主机的.ssh/authorized_keys⽂件中。ssh-copy-id -i ~/.ssh/id_rsa.pub <username>@<host>
这⾥会要求我们输⼊远程服务器的密码。
修改服务器的ssh配置⽂件
ssh-server配置⽂件位于:/etc/ssh/sshd_config中,需要设置ssh-server允许使⽤私钥/公钥对的⽅式登录,打开配置⽂件: vim /etc/ssh/sshd_config
增加设置:
RSAAuthentication yes
PubkeyAuthentication yes
然后重启ssh-server:
sudo /etc/init.d/ssh restart
设置完成之后就可以使⽤命令ssh <username>@<host>直接登录服务器了,不需要再输⼊密码了。
项⽬配置
⾸先,新建⼀个任务。填写项⽬名称。 选择源码管理为:Git,填写项⽬库的URL。私有项⽬需要添加Git账号。
构建环境:选择Send files or execute commands over SSH after the build runs,选择服务器,以及添加Exec command。保存。
添加私钥
jenkins⾸页,系统管理 -> 系统设置 -> 下拉,到,填写Key 和 SSH Server -> 保存
⾼级选项能够配置ssh服务器端⼝和超时。Test可测试,显⽰success配置成功。
配置webhook
配置webhook,实现⾃动部署
获取API tonken:⾸页 -> ⽤户 -> 选择当前的⽤户 -> 设置 -> 在API Tonken 项中点击Show
p/buildWithParameters?token=11216ee77000c52461ad16e5c4502427bb&cause=Cause+Text
p/job/Python%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/build?token=11216ee77000c52461
添加令牌:返回⾸页 -> 项⽬ -> 配置 -> 构建触发器 -> 选择 "触发远程构建" ->粘贴"API Token"内容到"⾝份验证令牌"
测试结果
修改本地代码然后提交、Jenkins⾃动构建部署

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。