常用的几种方式 Jenkins、Github Action、GitLab CICD,本文先从Jenkins入手.
Jenkins
安装Jenkins环境
-
安装Docker,目的是接下来会创建一个独立的、可移植的容器.
-
拉取Jenkins 镜像
docker pull jenkins/jenkins
- 启动Jenkins 容器
docker run -d -p 8080:8080 -p 50000:50000 jenkins/jenkins
-
获取jenkins初始密码
-
docker ps
查找 Jenkins 容器 ID -
docker exec -it <container_id> bash
进入 Jenkins 容器 -
ls /var/jenkins_home/secrets/
找到初始密码文件
-
5. 访问:http://localhost:8080/,将上面密码输入到页面中
1. 选择自选插件安装,除了默认勾选推荐的外,手动勾选NodeJS
2. 创建管理员账号
3. 下一步
Jenkins环境准备完毕,正式开始创建第一个pipeline吧!
自动化构建
下边以Git 公有仓库为例,私库思路一样,但需额外配置Credentials
- 点击create,输入任务名称,先创建一个Freestyle形式的pipeline
- 确认之后开始配置项目基本信息
1. 基本项选GitHub项目-填写远端github地址
2. **源码管理**选择Git,填写仓库URL和目标分支
3. **构建触发器**选择GitHub hook,以后推送到指定分支才触发构建
4. **Build Steps 添加要执行的shell脚本**
**至此,**自动化构建 **部分的操作已经完成!当你代码push到dev中,会触发Jenkins自动构建,构建后的产物默认会放到Jenkins 项目的工作目录中的 workspace 子目录中(Docker有所不同),**你可以在项目配置页面的 “高级项目配置” 中指定工作目录的名称.
amazing! GitHub hook trigger for GITScm polling 现在会自动检测 GitHub 上的代码提交并触发构建,不需要手动配置webhooks了.
问题:
1.Jenkins 项目配置中选择了 “GitHub hook trigger for GITScm polling”,为什么没有触发自动构建?
A: Github无法跟本地部署的Jenkins建立连接,如果是布在公网服务器上就好了.
2.构建失败,** not found
A: 这可能是因为 Jenkins 在执行构建时的环境不包含 **,可以进入到Jenkins容器中查看 docker exec -it <container_id> bash
以node和npm为例,如果确实没有去Jenkin首页->系统管理->插件管理 搜索安装
安装完去系统管理-> 全局工具配置中如下图配置:
终于TMD构建成功了! Jenkins的配置项真的好难理解,尤其是掺杂了汉化版之后…构建时报错npm not found,在系统管理->插件安装 安装完node之后,去系统管理->工具配置中新增node安装并指定一个node版本! 同时!!注意!!!此时丢弃之前创建的项目,需要重新创建一个构建项目!!!一定要重新创建,然后会发现在新项目配置的构建环境中多了几项:
然后执行构建,构建环境中就包含node了,相应的npm也有.
自动化部署
在腾讯云选购一个轻量应用服务器console.cloud.tencent.com/lighthouse/…,
这里需要用到Publish over SSH插件:
SSH: (Secure Shell) 它是一种用于在网络上安全地进行远程访问的协议。允许在两台计算机间建立安全连接,安全的传输数据.
安装完返回全局设置,设置SSH server:
这步其实根本机CLI连接远程服务器一样,设置之前可以使用本机连接远程服务调试:
ssh root@123.249.39.161
项目配置,会发现在构建后操作中增加了一个选项 Send build artifacts over SSH
点击开始构建,可在控制台中查看相关信息:
不出意外的话现在访问目标服务器http://123.249.39.161/ 就可以正常使用web服务了~
问题:
1.vue build之后的index.html为什么不能直接浏览器打开?
Q: 因为需要将index.html放到静态服务器的根目录,修改构建后配置即可(如下图):
2.还有些其他技术细节,比如上传完构建产物,执行python3 -m http.server 80 发现80端口被占用怎么办
3.构建产物是否需要压缩上传
4.构建部署过程监控
5.ssh连接服务器过慢 如何优化
6.区分环境部署到对应的服务器 等等
原文链接:https://juejin.cn/post/7353280369380950042 作者:yuezhongbao