事情的起因是最近手上拆出来的项目越来越多,每次花费在打包等待、ftp上传、文件部署上的时间越发的难以忽略了,刚好手上还有个闲置的树莓派3B
就是上面左边这货,1C1G的配置渣是渣了点儿,不过闲着也是闲着
环境搭建
系统更新
安装前先更新一下本地系统到最新1
2sudo apt-get update
sudo apt-get upgrade
安装配置java环境
系统本身自带的是openjdk,不是太好使,需要安装oracle的jdk版本,如果说有梯子的话可以用如下一条命令搞定:1
sudo apt install oracle-java8-jdk -y
否则的话就只能选择手动安装了,先检查一下系统是32还是64位1
getconf LONG_BIT
然后在Oracle官网下载对应版本的压缩包,解压后把bin目录设置进path环境变量即可
安装Jenkins
1 | wget -q -O - [https://pkg.jenkins.io/debian/jenkins.io.key](https://pkg.jenkins.io/debian/jenkins.io.key) | sudo apt-key add - |
依次执行以上命令,然后安静的等待就好了
配置Jenkins
- 修改[/var/lib/jenkins/updates/default.json]文件,将第一行用来检测连接的google.com换成baidu.com,对于有梯子的用户可以忽略
- 浏览器访问http://ip:8080,根据提示获取密码输入
- 替换插件镜像地址,手工进入 http://ip:8080/restaert
[Manage Jenkins] -> [Manage Plugins] -> [Advanced] -> [Update Site]
将 https://updates.jenkins.io/update-center.json 替换为 http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json - 其他一路默认即可
配置构建任务
- 创建一个Freestyle project,输入个名字、描述,全部按默认值保存就好
- 进入插件管理,在“可选插件”中找到“Publish Over SSH”进行安装
配置jenkins用户与版本库机器的ssh互信
1
2
3ssh-keygen -t rsa -b 4096 -m PEM # 默认的ed25519算法不被jenkins所支持
eval "$(ssh-agent -s)" # 启动ssh-agent用于phrase托管
ssh-add ~/.ssh/id_rsa进入任务配置页,配置源码路径,认证类型选择“SSH Username with private key”,这里要填入id_rsa文件的内容
切换至构建标签下,增加构建步骤,选择“Execute shell”,添加用于压缩打包目录的脚本(根据自己项目需要填写)
1
2
3
4rm -f dist.tar.bz2 \
&& cnpm install \
&& cnpm run build \
&& tar cvzf dist.tar.bz2 dist在生产机器创建devops用户,用于文件部署,并将jenkins机器的公钥加入生产机器信任列表中
- jenkins中配置与生产主机的互信
[Manage Jenkins] -> [Configure System] -> [Publish over SSH]
- 进入到任务配置页面,新增构建后操作,选择“Send build artifacts over SSH”,在“Exec command”上填写要执行的远程主机部署脚本