使用 jenkins 完成 maven 项目自动化部署及回滚
前言
Jenkins 简介
Jenkins is a self-contained, open source automation server which can be used to automate all sorts of tasks related to building, testing, and delivering or deploying software.
Jenkins can be installed through native system packages, Docker, or even run standalone by any machine with a Java Runtime Environment (JRE) installed.
------ [jenkins.io](https://jenkins.io/doc/)
Jenkins 是一个独立开源的自动化服务, 可以用来对软件进行自动化构建, 测试, 发布, 部署等操作. Jenkins 可以通过软件包管理器, Docker 安装, 或者在任意一台安装了 JRE 的机器上独立运行.
按照我的理解, jenkins 其实就是一个线性的指令集, 它所做的事情就是按照我们设置的流水线完成一些重复性的工作. jenkins 只是负责管理流水线的运行与否以及状态监控 , 在流水线各个节点上的任务依然需要由专业的 “工人” 去完成, 扮演 “工人” 角色的就是 jenkins 插件以及我们日常使用的诸如 Git, maven 等第三方工具. jenkins 根据预先设计好的指令调用第三方工具完成该部分的功能并监控其执行状态, 一个节点执行成功, 便跳转到下一个节点继续执行, 直到运行完流水线上的所有节点. 如果不巧有任意一个节点执行失败, jenkins 便会捕获异常状态并终止流水线的执行.
本文主要介绍如何使用 Jenkins 对 maven 项目进行自动化构建, 部署, 备份以及回滚操作.
nginx 301 重定向实现方案
前言
依然是博客的问题, 因为我的主域名设置了一条 MX 记录, 导致主域名不能设置 CNAME 或者 url 转发 等解析记录, dnspod 提示建议使用 A 记录解析主域名, 遗憾的是我的博客搭建在 Github Pages 和 Coding Pages 上面, 他们只提供 CNAME 解析. 虽然可以通过 ping 命令得到 Github Pages 和 Coding Pages 的 ip, 但毕竟他们的 ip 相当多, 而且可能会有变动, 可能会导致解析不稳定.
而且我的需求只是暂时将主域名指向博客所在的子域名, 所以最后选择了将主域名指向自己的一台服务器, 在服务器上利用 nginx 做 301 跳转, 算是退而求其次, 不太完美地解决了这个问题吧.
Ubuntu 18.04 系统优化
cron 表达式简介
cron 表达式的格式
cron 表达式的格式由 7 部分组成, 各个部分之间用空格隔开, 其中第七个部分为可选部分. 如:
* * * * * * (*), 其中, 括起来的部分表示可选.
我们把上面被空格隔开的 7 个部分称为 7 个 “域”, 每个 “域” 代表不同的含义. 分别为:
{秒} {分} {时} {日} {月} {周} {年}, 其中, {年} 可以为空.
各个域的取值如下:
| 域 | 取值范围 | 允许的特殊符号 |
|---|---|---|
| 秒 | 0 - 59 | , - * / |
| 分 | 0 - 59 | , - * / |
| 时 | 0 - 23 | , - * / |
| 日 | 1 - 31 | , - * / ? L C W |
| 月 | 1 - 12 (JAN - DEC) | , - * / |
| 周 | 1 - 7 (SUN - SAT) | , - * / ? L C # |
| [年] | 1970 - 2099 (可留空) | , - * / |