用树莓派构建生产发布系统

Jenkins

事情的起因是最近手上拆出来的项目越来越多,每次花费在打包等待、ftp上传、文件部署上的时间越发的难以忽略了,刚好手上还有个闲置的树莓派3B

raspberry-pi

就是上面左边这货,1C1G的配置渣是渣了点儿,不过闲着也是闲着

环境搭建

系统更新

安装前先更新一下本地系统到最新

1
2
sudo 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

raspberry-pi

然后在Oracle官网下载对应版本的压缩包,解压后把bin目录设置进path环境变量即可

安装Jenkins

1
2
3
4
wget -q -O - [https://pkg.jenkins.io/debian/jenkins.io.key](https://pkg.jenkins.io/debian/jenkins.io.key) | sudo apt-key add -
sudo sh -c 'echo deb [https://pkg.jenkins.io/debian-stable](https://pkg.jenkins.io/debian-stable) binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install jenkins

依次执行以上命令,然后安静的等待就好了

配置Jenkins

  1. 修改[/var/lib/jenkins/updates/default.json]文件,将第一行用来检测连接的google.com换成baidu.com,对于有梯子的用户可以忽略
  2. 浏览器访问http://ip:8080,根据提示获取密码输入
  3. 替换插件镜像地址,手工进入 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
  4. 其他一路默认即可

配置构建任务

  1. 创建一个Freestyle project,输入个名字、描述,全部按默认值保存就好
  2. 进入插件管理,在“可选插件”中找到“Publish Over SSH”进行安装
  3. 配置jenkins用户与版本库机器的ssh互信

    1
    2
    3
    ssh-keygen -t rsa -b 4096 -m PEM   # 默认的ed25519算法不被jenkins所支持
    eval "$(ssh-agent -s)" # 启动ssh-agent用于phrase托管
    ssh-add ~/.ssh/id_rsa
  4. 进入任务配置页,配置源码路径,认证类型选择“SSH Username with private key”,这里要填入id_rsa文件的内容

版本库配置

版本库配置

  1. 切换至构建标签下,增加构建步骤,选择“Execute shell”,添加用于压缩打包目录的脚本(根据自己项目需要填写)

    1
    2
    3
    4
    rm -f dist.tar.bz2 \
    && cnpm install \
    && cnpm run build \
    && tar cvzf dist.tar.bz2 dist
  2. 在生产机器创建devops用户,用于文件部署,并将jenkins机器的公钥加入生产机器信任列表中

  3. jenkins中配置与生产主机的互信
    [Manage Jenkins] -> [Configure System] -> [Publish over SSH]

主机互信

  1. 进入到任务配置页面,新增构建后操作,选择“Send build artifacts over SSH”,在“Exec command”上填写要执行的远程主机部署脚本

部署动作