前端 docker jenkins
1.为什么使用jenkins
jenkins是一个自动化构建部署的工具,用java语言写的。
对前端而言,不用jenkins,也可以实现本地打包,ssh工具上传至服务器部署。
但是,有问题:
1).每次打包部署需要敲命令和记住流程
2).团队人多的情况下,不是每个人都有权限进入服务器
3).当构建需要的npm版本不小心变动,可能构建结果有问题。
2.为什么选用docker的方式
无论window,macos还是linux,jenkins官网(https://www.jenkins.io/download/)都提供了软件下载包。
但是最方便的无疑是docker方式,全新的环境(容器),再也不用担心本机上环境会不会有冲突的问题。
3.具体步骤:
如果用的是window环境,需要装个docker-desktop,docker相关的环境都有了。
本文是linux centos 环境 root用户
1)安装docker 安装 docker-compose,参见官网:https://docs.docker.com/engine/install/centos/
2) 生成docker-compose.yaml:(cat命令,本地生成拖到linux等都行)
version: '3'
services:
docker_jenkins:
user: root
restart: always
image: jenkins/jenkins:lts
container_name: docker_jenkins
environment:
- TZ=Asia/Shanghai
ports:
- '8080:8080'
- '50000:50000'
volumes:
- ./data:/var/jenkins_home
- /usr/bin/docker:/usr/bin/docker
- /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
3)启动docker
docker-compose up -d
-d是后台启动docker的意思,查看启动的容器,客户以看到容器ID等信息:
docker ps -a
想要进入启动的docker容器:
docker exec -it 容器name或者容器ID /bin/bash
这一步其实没必要 docker pull jenkins/jenkins,因为当你运行docker-compose up -d 会从dockerhub上拉这个镜像。
4)输入网址,网页界面配置jenkins:
jenkins初始化的密码,可以这么查看:
docker logs 容器ID
插件安装选择推荐插件,结束后有个设置用户名密码,别跳过设置下。
对于前端而言,打包vue react项目需要node环境,npm命令,
右上方有个盾佩图标,点进去看到Manage Jenkins,点进去在插件里找到Node插件,安装,不需要重启
回到全局配置,这时候就有node配置项目了,选择node的版本,不建议选最新版本,推荐选14版本,最新版本出现过 npm run build停止不动的情况。这一步我们不需要安装,只需要选版本就行。
5)jenkins网页构建任务
(1)填写git仓库地址,凭证
凭证建议用privete key。进入docker容器里生成ssh公钥私钥,不用担心生成文件路径的问题,在任何目录下执行ssh-keygen,都会生成在当前用户的.ssh文件夹下,本文的是在/root/.ssh/下:
docker exec -it 容器name或者容器ID /bin/bash
ssh-keygen
(2)勾选构建环境下的:
(3)构建 执行shell
node -v npm -v npm config set registry https://registry.npm.taobao.org npm i npm run build
(4)构建好了之后,dist文件夹传到目标服务器上
如果构建好的,本地nginx就可以用,就没必要上传了。
很多播客推荐插件 publish over SSH
但是,2022年1月,publish over SSH因为安全原因,jenkins官方下架了
采用scp免密码方式。具体自行搜索。
注意点:
刚开始接触的同学,可能想不通为什么在docker-compose.yaml里有一项 volumn,实际上不写这一项会出大问题。因为jenkins的配置不会保存在docker镜像里,只能通过本地挂载卷的方式存储jenkins,踩了不少坑。
部分同学看到的jenkins页面设置是英文的,这个只需要重启jenkins即可。ip:8080/restart