解放手动挡部署,丰衣足食。
简介
- 大名鼎鼎jenkins,CI/CD的概念咱就不赘述了,打舌。
Jenkins的安装及配置
Docker环境下的安装
- 下载Jenkins的Docker镜像:
1 | docker pull jenkins/jenkins:lts |
- 在Docker容器中运行Jenkins:
1 | docker run -p 8080:8080 -p 50000:5000 --name jenkins \ |
这点很重要
,配置都在jenkins_home,若需重新挂载,拷贝jenkins_home即可
1 | # 重新封装镜像 |
Jenkins的配置
运行成功后访问该地址登录Jenkins,第一次登录需要输入管理员密码:http://x.x.x.x:8080/
- 使用管理员密码进行登录,可以使用以下命令从容器启动日志中获取管理密码:
1 | docker logs jenkins |
- 选择安装插件方式,这里我们直接安装推荐的插件:
选择安装推荐插件
即可 - 根据引导提示进行配置,确保插件
Publish Over SSH
,git
已被安装 - 在系统管理->系统配置中添加全局ssh的配置,这样Jenkins使用ssh就可以执行远程的linux脚本了:
Homename
为ip
可以通过ssh公钥的方式在Key
中填写
也可以使用账号密码,在高级
中填写
注意这里的Remote Directory
会成功后续job中指定脚本环境的初始目录
前端部署
环境准备
- 部署主机需要安装npm,nodejs
1 | yum install nodejs npm |
执行脚本准备
1 |
|
在Jenkins中创建执行任务
- 首先我们需要新建一个任务:
- 指定
自由风格软件
- 设置源代码管理
- 之后添加一个执行远程shell脚本的构建,用于编译前端代码
后端部署
环境准备
- 可以选择在部署主机编译源代码,将编译好的包传入容器
- 也可以在容器内编译,省去宿主机的环境搭建
执行脚本准备
1 |
|
在Jenkins中创建执行任务
- 任务的设置和前端的部署任务类似
网关
- 一般前后端分离项目会使用nginx做静态资源的服务方,并对后端服务做反向代理
- 简单的提供个配置文件做为例子:
1 | user admin; |
- docker 运行命令为:
1 | docker run \ |
问题记录
- No valid crumb was included in the request
解决方案:- 在jenkins 的Configure Global Security下 , 取消“防止跨站点请求伪造(Prevent Cross Site Request Forgery exploits)”的勾选
插件下载过慢,失败
解决方案:- 修改下载源,jenkins_home/updates/default.json
1
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
- 修改下载源,jenkins_home/updates/default.json
mvn 未找到命令
解决方案:设置环境变量:
1
2source /etc/profile
source ~/.bash_profile或者 在/usr/bin下创建软链接
1
ln –s /opt/maven/bin/mvn /usr/bin/mvn