Git + Jenkins 自动化 NGINX 发布简易实现

简介: Git + Jenkins 自动化 NGINX 发布简易实现

概述

之前基于 GitLab + Jenkins 实现了简单的 NGINX 的自动化发布。

具体包含如下的组件:

  1. GitLab
  1. 包括 GItLab 的 WebHook;
  1. Jenkins 及其插件:
  1. Generic Webhook Trigger
  2. Publish Over SSH

🧠疑问:

为什么不用 Ansible?

答:这里说明下,之所以不用 Ansible,是因为这个环境默认没有安装 Ansible,而且 Publish Over SSH 也足够用了,就没再用 Ansible 了。

详细说明

这里有 3 个几个自动化 job,如下:

  1. Generic Webhook Trigger 用于和 GitLab 联动, 自动触发 WebHook
  2. Publish Over SSH 用于通过 SSH 发布 NGINX 配置

说明:

配置 WebHook

test-intranet-nginx 为例进行说明.

  1. 进入该项目 -> 设置 -> 集成. 如下图:
  2. URL 里填入: https://jenkins.example.com/generic-webhook-trigger/invoke?token=Jdy0bTQafyfUUBxJw33k(假设 jenkins.example.com 是 Jenkins 的控制台域名,token 可以在对应的 Jenkins 插件 Generic Webhook Trigger 中找到,这里 token 是用于区别具体是哪个 job。)
  3. Trigger 选择: Push events -> master.
  4. 按需取消勾选 Enable SSL verification. 保存. 如下:

说明:

URL 地址可以在 Jenkins 的对应插件里找到.

Trigger 可以按需调整.

在 Jenkins 的 系统配置 里 -> Publish over SSH:

如下图:

jenkins 插件 publish over ssh

填入:

  • Key
  • SSH Server 的:
  • name(用于给 jenkins 用户识别的用户名)
  • Hostname(目标机器的 IP 地址)
  • Username(目标机器的 OS 用户)
  • Remote Directory(需要把文件发送到的目标机器的目录地址)

说明:

一般情况下,对于 NGINX, 目录是 2 个, 为: /etc/nginx(放配置 *.conf) 和 /usr/share/nginx/html(放静态 web 文件)

以下图 Job 为例:

首先配置 源码管理, 如下图:

job 源码管理配置

填入:

  1. 仓库 URL
  2. 认证信息(如果是公开的库, 就不需要认证信息)
  3. 分支: master(按需调整)
  4. 源码库的信息:
  1. 本例中,类型是: gitlab
  2. URL
  3. GitLab 的 Version

然后配置 构建触发器, 如下图:

jenkins-webhook-trigger1.png

说明:

详细使用请在浏览器输入图中的 URL 进一步查看.

  1. Variable (使用默认配置)
  2. Expression (使用默认配置)
  3. Token

jenkins-webhook-trigger2.png

  1. Expression(解释如下: 用于进行目录过滤,填入正则后,只有目录匹配正则且发生变化才会触发构建)

  1. Text (默认配置)

最后, 是 构建后操作(实际「构建」过程没做任何事情). 如下图:

配置 publish over ssh

注意:

如果有多台 nginx 要同时发, 就要在这里同时写上多台 SSH Server.

  1. Name: 下拉框选择对应 Name
  2. Transfers
  1. Source files: 源文件, 位于: iaas_web_xxxx/conf/**/*
  2. Remove prefix: 需要移除的前缀, 为: iaas_web_xxxx/. 移除后, 示例为: conf/nginx.conf
  3. Remote directory: 不填写就是之前填写的目录, 一般为 /etc/nginx. 那么示例就发布到: /etc/nginx + conf/nginx.conf, 即: /etc/nginx/conf/nginx.conf
  4. Exec command: 文件传输过去后需要执行的命令. 为: nginx -t && nginx -s reload(或:sudo systemctl reload nginx). 即, 先 -t 验证配置是否有语法错误, 然后再 reload 发布. 如果验证有问题, jenkins pipeline 会异常, 变黄或变红.

发布流程

  1. 用户通过 IDE + Git, 在自己本地修改 NGINX Conf, 并最终 pushmerge(也会触发 push 的动作) 到 master
  2. GitLab 接收到 push event, 触发 webhook 调用: https://example.com/generic-webhook-trigger/invoke?token=Jdy0bTQafyfUUBxJw33k
  3. Jenkins 收到 webhook trigger. 并结合 filter 的 Expression 进行判断,确认匹配,则开始自动启动一次 Job.
  4. 该 Job 过程为:
  1. 将存有 nginx 配置的仓库 pull 到 jenkins.
  2. 通过 Publish over SSH, 将相关目录和文件传输到 SSH Server 的指定目录
  3. 执行 nginx 命令, 进行发布.
  1. 结束.

提示:

如果因为其他异常, 导致未自动发布,那么也可以手动点击 Job 页面的: 立即构建 进行手动触发

可以通过 首图 的 rss 订阅: Atom feed 失败, 这样发布失败你就会及时收到邮件.

相关文章
|
2月前
|
测试技术 开发工具 git
利用Git Hooks自动化你的开发流程
Git Hooks 是 Git 的强大功能,允许在特定事件(如提交、推送、合并请求)发生时自动执行脚本。通过合理设置和使用 Git Hooks,可以自动化测试、代码风格检查等任务,提高代码质量和开发效率。本文介绍了如何设置和使用常用的 Git Hooks,包括 `pre-commit`、`pre-push` 和 `post-merge`,并提供了最佳实践建议。
|
1月前
|
移动开发 jenkins 持续交付
jenkins配置git
通过上述步骤,您可以在 Jenkins 中成功配置 Git,从而实现自动拉取代码并进行构建和部署。这些配置不仅提高了开发效率,还保证了代码的连续集成和交付。确保每一步配置正确,以避免在实际使用中遇到问题。
55 1
|
1月前
|
运维 jenkins Java
Jenkins 自动化局域网管控软件构建与部署流程
在企业局域网管理中,Jenkins 作为自动化工具,通过配置源码管理、构建及部署步骤,实现了高效、稳定的软件开发与部署流程,显著提升局域网管控软件的开发与运维效率。
47 5
|
3月前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
3月前
|
测试技术 开发工具 git
利用Git Hooks自动化你的开发流程
【10月更文挑战第6天】在现代软件开发中,版本控制至关重要,Git作为主流工具,提供了强大的代码管理功能。Git Hooks 是 Git 的一个特性,可在特定事件(如提交、推送)发生时自动执行脚本,实现开发流程自动化。本文介绍 Git Hooks 的基本概念、常见用例及设置方法,涵盖 pre-commit、pre-push 等多种类型的 Hooks,并展示了如何利用它们进行代码格式化、自动化测试和风格检查,提升开发效率与代码质量。通过合理应用 Git Hooks,可以显著减少人为错误,确保代码一致性,并促进团队协作。
|
3月前
|
运维 jenkins 持续交付
自动化部署的魅力:如何用Jenkins和Docker简化运维工作
【10月更文挑战第7天】在现代软件开发周期中,快速且高效的部署是至关重要的。本文将引导你理解如何使用Jenkins和Docker实现自动化部署,从而简化运维流程。我们将从基础概念开始,逐步深入到实战操作,让你轻松掌握这一强大的工具组合。通过这篇文章,你将学会如何利用这些工具来提升你的工作效率,并减少人为错误的可能性。
|
3月前
|
运维 监控 jenkins
运维自动化实践:利用Jenkins实现高效CI/CD流程
【10月更文挑战第18天】运维自动化实践:利用Jenkins实现高效CI/CD流程
|
5月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
109 1
|
5月前
|
持续交付 jenkins C#
“WPF与DevOps深度融合:从Jenkins配置到自动化部署全流程解析,助你实现持续集成与持续交付的无缝衔接”
【8月更文挑战第31天】本文详细介绍如何在Windows Presentation Foundation(WPF)项目中应用DevOps实践,实现自动化部署与持续集成。通过具体代码示例和步骤指导,介绍选择Jenkins作为CI/CD工具,结合Git进行源码管理,配置构建任务、触发器、环境、构建步骤、测试及部署等环节,显著提升开发效率和代码质量。
108 0
|
5月前
|
JavaScript jenkins 持续交付
自动化部署与持续集成:使用Jenkins和Docker优化开发流程
【8月更文挑战第31天】在软件开发的世界里,时间就是一切。本文将引导你通过Jenkins和Docker的强大组合,实现自动化部署和持续集成,让你的开发流程如丝般顺滑。我们将从基础设置开始,逐步深入到构建管道,最终实现一键部署的梦想。准备好让你的开发效率飞跃,一起探索这个令人兴奋的旅程吧!