之前基于 GitLab + Jenkins 实现了简单的 NGINX 的自动化发布。
具体包含如下的组件:
🧠疑问:
为什么不用 Ansible?
答:这里说明下,之所以不用 Ansible,是因为这个环境默认没有安装 Ansible,而且 Publish Over SSH 也足够用了,就没再用 Ansible 了。
这里有 3 个几个自动化 job,如下:
说明:
配置 WebHook
以test-intranet-nginx
为例进行说明.
https://jenkins.example.com/generic-webhook-trigger/invoke?token=Jdy0bTQafyfUUBxJw33k
(假设 jenkins.example.com 是 Jenkins 的控制台域名,token 可以在对应的 Jenkins 插件 Generic Webhook Trigger 中找到,这里 token 是用于区别具体是哪个 job。)说明:
URL地址可以在 Jenkins的对应插件里找到.
Trigger可以按需调整.
在 Jenkins 的 系统配置里 -> Publish over SSH:
如下图:
填入:
说明:
一般情况下,对于 NGINX, 目录是2个, 为:
/etc/nginx
(放配置*.conf
) 和/usr/share/nginx/html
(放静态 web 文件)
以下图 Job 为例:
首先配置 源码管理, 如下图:
填入:
master
(按需调整)gitlab
然后配置 构建触发器, 如下图:
说明:
详细使用请在浏览器输入图中的 URL 进一步查看.
最后, 是 构建后操作(实际「构建」过程没做任何事情). 如下图:
注意:
如果有多台 nginx 要同时发, 就要在这里同时写上多台 SSH Server.
iaas_web_xxxx/conf/**/*
iaas_web_xxxx/
. 移除后, 示例为: conf/nginx.conf
/etc/nginx
. 那么示例就发布到: /etc/nginx
+ conf/nginx.conf
, 即: /etc/nginx/conf/nginx.conf
nginx -t && nginx -s reload
(或:sudo systemctl reload nginx
). 即, 先 -t
验证配置是否有语法错误, 然后再 reload
发布. 如果验证有问题, jenkins pipeline 会异常, 变黄或变红.push
或 merge
(也会触发push
的动作) 到 master
上push
event, 触发 webhook 调用: https://example.com/generic-webhook-trigger/invoke?token=Jdy0bTQafyfUUBxJw33k
提示:
如果因为其他异常, 导致未自动发布,那么也可以手动点击 Job 页面的: 立即构建 进行手动触发
可以通过首图的 rss 订阅: Atom feed 失败, 这样发布失败你就会及时收到邮件.
三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.
版本控制是软件开发的核心,促进团队协作与项目管理。通过制定明确的分支命名策略,遵循一致的代码提交规范,如指明提交类型和简短描述,增强了历史记录的可读性,可以清晰地组织和理解项目的结构与进展。