提交 3baabeda 编写于 作者: LinuxSuRen's avatar LinuxSuRen

Auto commit by hugo-plugin.

上级 6cc369d3
......@@ -34,7 +34,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.github.io/" />
<meta property="og:updated_time" content="2019-04-24T00:00:00&#43;00:00"/>
<meta property="og:updated_time" content="2019-04-25T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Jenkins 中文社区">
<meta itemprop="description" content="">
......@@ -242,15 +242,15 @@
<a href="/event/beijing-2019-11/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<a href="/event/wuhang/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/hacktberfest.jpg"></img>
</a>
<a href="/event/shanghai-2019-06/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/shanghai.jpeg"></img>
<a href="/event/beijing-2019-04-20/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/cloud-native-community-day.jpeg"></img>
</a>
......@@ -263,22 +263,22 @@
<a href="/event/beijing-2019-04-20/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/cloud-native-community-day.jpeg"></img>
<a href="/event/shenzhen/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/shenzhen.jpeg"></img>
</a>
<a href="/event/shenzhen/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/shenzhen.jpeg"></img>
<a href="/event/beijing-2019-11/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/hacktberfest.jpg"></img>
</a>
<a href="/event/wuhang/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/hacktberfest.jpg"></img>
<a href="/event/shanghai-2019-06/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/shanghai.jpeg"></img>
</a>
......
......@@ -6,6 +6,13 @@
"description": "行为规范",
"content": " 留言 留言之前需要使用 GitHub 账号登陆。大家要注意文明用语,严禁攻击、诋毁、灌水、广告等无关的话。对于违反人,一经发现将会被拉入黑名单。\n提问 欢迎每一位朋友在这里提出与 Jenkins 或相关领域的技术问题,但是,在提问之前建议先在搜索引擎和本站中进行搜索。\n问题至少要包含如下部分:\n 场景以及问题是如何发生的,方便阅读的人复现 软件、环境相关版本信息 日志、截图等(建议使用附件的方式) 出于对回答问题者的尊重,请得到解决方案后及时表示感谢,或者从其他地方得到答案后添加相关链接以及说明。\nGitHub 请您使用同一个 GitHub 账号来与大家交流,不欢迎使用所谓的“小号”。\n"
},
{
"uri": "https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/",
"title": "使用 Jenkins + Ansible 实现自动化部署 Nginx",
"tags": ["jenkins", "ansible", "nginx"],
"description": "使用 Jenkins + Ansible 实现自动化部署 Nginx",
"content": " 本文介绍如何使用 Jenkins + Ansible 实现对 Nginx 的自动化部署。最终达到的效果有如下几点: 1. 只要你将 Nginx 的配置推送到 GitHub 中,Jenkins 就会自动执行部署,然后目标服务器的 Nginx 配置自动生效。这个过程是幂等(idempotent)的,只要代码不变,执行多少遍,最终效果不变。 2. 如果目标机器没有安装 Nginx,则会自动安装 Nginx。 3. 自动设置服务器防火墙规则。\n1. 实验环境介绍 本次实验使用 Docker Compose 搭建 Jenkins 及 Jenkins agent。使用 Vagrant 启动一台虚拟机,用于部署 Nginx。使用 Vagrant 是可选的,读者可以使用 VirtualBox 启动一个虚拟机。使用 Vagrant 完全是为了自动化搭建实验环境。\n以下是整个实验环境的架构图: 注意,图中的 5123 \u0026lt;-\u0026gt; 80 代表将宿主机的 5123 端口请求转发到虚拟机中的 80 端口。\n Vagrant:虚拟机管理工具,通过它,我们可以使用文本来定义、管理虚拟机。 Ansible:自动化运维工具 Docker Compose:它是一个用于定义和运行多容器 Docker 应用程序的工具。可以使用 YAML 文件来配置应用程序的服务。 2. 启动实验环境 克隆代码并进入文件夹 bash git clone https://github.com/zacker330/jenkins-ansible-nginx.git cd jenkins-ansible-nginx 构建 Jenkins agent 的镜像 需要自定义 Jenkins agent 镜像有两个原因: 本次实验,使用 Swarm 插件实现 Jenkins master 与 agent 之间的通信,所以 Jenkins agent 需要启动 swarm 客户端。 Jenkins agent 必须支持 Ansible。 bash docker build -f JenkinsSlaveAnsibleDockerfile -t jenkins-swarm-ansible . 启动 Jenkins master 及 Jenkins agent bash docker-compose up -d 通过 http://localhost:8080 访问 Jenkins master,如果出现“解锁密码”页面,如下图,则执行命令 docker-compose logs jenkins 查看 Jenkins master 启动日志。将日志中的解锁密码输入到表单中。然后就一步步按提示安装即可。 安装 Jenkins 插件 本次实验需要安装以下插件: Pipeline 2.6:https://plugins.jenkins.io/workflow-aggregator Swarm 3.15:https://plugins.jenkins.io/swarm 用于 实现 Jenkins master 与 Jenkins agent 自动连接 Git 3.9.3:https://plugins.jenkins.io/git 配置 Jenkins master 不执行任务 进入页面:http://localhost:8080/computer/(master)/configure,如下图所示设置: 确认 Jenkins 安全配置有打开端口,以供 Jenkins agent 连接。 我们设置 Jenkins master 开放的端口,端口可以是固定的 50000 ,也可以设置为随机。设置链接:http://localhost:8080/configureSecurity/。 启动目标机器,用于部署 Nginx 在命令行中执行以下命令:\nvagrant up 注意,Vagrantfile 文件中的 config.vm.box 值必须改成你的 vagrant box 。\n 至此,实验环境已经搭建好了。接下来就可以新建 Jenkins 任务了。\n3. 在 Jenkins 上创建部署任务 新建流水线任务 配置流水线 配置 Jenkins 任务从远程仓库拉取 Jenkinsfile,如下图所示: 除此之外,不需要其它配置了,是不是很简单?\n4. 手工触发一次自动化构建 点击“立即构建”: 最终执行日志如下: 至此,部署已经完成。以后修改 Nginx 的配置,只需要修改代码,然后推送到远程仓库,就会自动化部署。不需要手工登录到目标机器手工修改了。\n最后,我们可以通过访问 http://localhost:5123,如果出现如下页面说明部署成功:\n5. 代码讲解 以上步骤并不能看出自动化部署真正做了什么。那是因为我们所有的逻辑都写在代码中。是的,可以说是 everything is code。\n接下来我们介绍代码仓库。\n% tree -L 2 ├── JenkinsSlaveAnsibleDockerfile # Jenkins agent 镜像 Dockerfile ├── Jenkinsfile # 流水线逻辑 ├── README.md ├── Vagrantfile # Vagrant 虚拟机定义文件 ├── docker-compose.yml # Jenkins 实现环境 ├── env-conf # 所有应用配置 │ └── dev # dev 环境的配置 ├── deploy # Ansible 部署脚本所在文件夹 │ ├── playbook.yaml │ └── roles └── swarm-client.sh # Jenkins swarm 插件的客户端 5.1流水线逻辑 Jenkinsfile 文件用于描述整条流水线的逻辑。代码如下:\npipeline{ // 任务执行在具有 ansible 标签的 agent 上 agent { label \u0026quot;ansible\u0026quot;} environment{ // 设置 Ansible 不检查 HOST_KEY ANSIBLE_HOST_KEY_CHECKING = false } triggers { pollSCM('H/1 * * * *') } stages{ stage(\u0026quot;deploy nginx\u0026quot;){ steps{ sh \u0026quot;ansible-playbook -i env-conf/dev deploy/playbook.yaml\u0026quot; } }}} environment 部分:用于定义流水线执行过程中的环境变量。 triggers 部分:用于定义流水线的触发机制。pollSCM 定义了每分钟判断一次代码是否有变化,如果有变化则自动执行流水线。 agent 部分:用于定义整条流水线的执行环境。 stages 部分:流水线的所有阶段,都被定义在这部分。 以上只是定义流水线是如何执行的,目前整条流水线只有一个 deploy nginx 阶段,并且只执行了一条 ansible-playbook 命令。但是它并没有告诉我们部署逻辑是怎么样的。\n5.2 部署逻辑 所有的部署逻辑,包括 Nginx 的安装启动、配置的更新以及加载,都放在 Ansible 脚本中。对 Ansible 不熟的同学,可以在本文末尾找到介绍 Ansible 的文章。\n整个部署逻辑的入口在 deploy/playbook.yaml,代码如下:\n--- - hosts: \u0026quot;nginx\u0026quot; become: true roles: # Nginx 的部署 - ansible-role-nginx # 对防火墙的设置 - ansible-role-firewall hosts:定义了 playbook 部署的目标主机分组名为 nginx。 roles:包含了两个执行具体部署动作的 role,至于 role 内部逻辑,不在本文讨论范围,有兴趣的同学阅读源码。 5.3 配置管理 谈到部署,就不得不谈配置管理。\n回顾前文中流水线中执行的 shell 命令:ansible-playbook -i env-conf/dev deploy/playbook.yaml 我们通过 -i 参数指定部署时所使用的环境配置。通过这种方式实现环境配置与执行脚本的分离。这样带来以下几个好处: 1. 新增环境时,只需要复制现有的环境,然后将里面的变量的值改成新环境的即可。比如,要对测试环境进行部署,只需要将 -i 参数值改成:env-conf/test。 2. 对配置版本化控制。\n本次实验中,各个环境的配置放在 env-conf 目录中,目前只有 dev 环境,以下是 env-conf/ 目录结构:\n% cd env-conf/ % tree └── dev ├── group_vars │ └── nginx.yaml ├── host_vars │ └── 192.168.52.10 └── hosts hosts文件:Ansible 中通过“分组”来实现对主机的管理。hosts 文件内容如下: [nginx] 192.168.52.10 host_vars 目录:用于存放主机级别的配置变量,本例中 192.168.52.10 是一个 YAML 格式文件。注意文件名是该主机的 IP。我们在文件中放主机相关的配置,比如 Ansible 连接主机时使用到的用户名和密码。 group_vars 目录:用于存放组级别的配置变量。比如 nginx.yaml 对应的就是 nginx 这个组的的配置变量。文件名与 hosts 中的组名对应。 总结 到此,我们完整的自动化部署已经讲解完成。但是还遗留下一些问题: 1. 本文只是安装了一个“空”的 Nginx,但是没有介绍 Nginx 真正配置。 2. 目前主机的连接信息(SSH 密码)是明文写在 host_vars/192.168.52.10 文件中的,存在安全风险。 3. 没有介绍如何当 Java 应用部署时,如何自动更新 Nginx 的配置。\n本文属于使用 Jenkins + Ansible 实现自动化部署的入门文章,笔者将根据读者的反馈决定是否写续集。\n如果觉得本文讲的 Jenkins 流水线逻辑部分不够过瘾,可以考虑入手一本最近才出版的《Jenkins 2.x实践指南》。长按下图进行扫码购买。\n附录 本次实验环境代码:https://github.com/zacker330/jenkins-ansible-nginx 简单易懂 Ansible 系列 —— 解决了什么:https://showme.codes/2017-06-12/ansible-introduce/ Puppet,Chef,Ansible 的共性:https://showme.codes/2016-01-02/the-nature-of-ansible-puppet-chef/ "
},
{
"uri": "https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-24-progressive-delivery-in-kubernetes-blue-green-and-canary-deployments/",
"title": "Kubernetes 中的渐进式交付:蓝绿部署和金丝雀部署",
......@@ -328,6 +335,13 @@
"description": "",
"content": ""
},
{
"uri": "https://jenkins-zh.github.io/tags/ansible/",
"title": "Ansible",
"tags": [],
"description": "",
"content": ""
},
{
"uri": "https://jenkins-zh.github.io/categories/",
"title": "Categories",
......@@ -629,6 +643,13 @@
"description": "",
"content": ""
},
{
"uri": "https://jenkins-zh.github.io/tags/nginx/",
"title": "Nginx",
"tags": [],
"description": "",
"content": ""
},
{
"uri": "https://jenkins-zh.github.io/tags/opensource/",
"title": "Opensource",
......
......@@ -6,7 +6,7 @@
<description>Recent content on Jenkins 中文社区</description>
<generator>Hugo -- gohugo.io</generator>
<language>zh-CN</language>
<lastBuildDate>Wed, 24 Apr 2019 00:00:00 +0000</lastBuildDate>
<lastBuildDate>Thu, 25 Apr 2019 00:00:00 +0000</lastBuildDate>
<atom:link href="https://jenkins-zh.github.io/index.xml" rel="self" type="application/rss+xml" />
......@@ -24,6 +24,18 @@
GitHub 请您使用同一个 GitHub 账号来与大家交流,不欢迎使用所谓的“小号”。</description>
</item>
<item>
<title>使用 Jenkins &#43; Ansible 实现自动化部署 Nginx</title>
<link>https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/</link>
<pubDate>Thu, 25 Apr 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/</guid>
<description>本文介绍如何使用 Jenkins + Ansible 实现对 Nginx 的自动化部署。最终达到的效果有如下几点: 1. 只要你将 Nginx 的配置推送到 GitHub 中,Jenkins 就会自动执行部署,然后目标服务器的 Nginx 配置自动生效。这个过程是幂等(idempotent)的,只要代码不变,执行多少遍,最终效果不变。 2. 如果目标机器没有安装 Nginx,则会自动安装 Nginx。 3. 自动设置服务器防火墙规则。
1. 实验环境介绍 本次实验使用 Docker Compose 搭建 Jenkins 及 Jenkins agent。使用 Vagrant 启动一台虚拟机,用于部署 Nginx。使用 Vagrant 是可选的,读者可以使用 VirtualBox 启动一个虚拟机。使用 Vagrant 完全是为了自动化搭建实验环境。
以下是整个实验环境的架构图: 注意,图中的 5123 &amp;lt;-&amp;gt; 80 代表将宿主机的 5123 端口请求转发到虚拟机中的 80 端口。
Vagrant:虚拟机管理工具,通过它,我们可以使用文本来定义、管理虚拟机。 Ansible:自动化运维工具 Docker Compose:它是一个用于定义和运行多容器 Docker 应用程序的工具。可以使用 YAML 文件来配置应用程序的服务。 2. 启动实验环境 克隆代码并进入文件夹 bash git clone https://github.com/zacker330/jenkins-ansible-nginx.git cd jenkins-ansible-nginx 构建 Jenkins agent 的镜像 需要自定义 Jenkins agent 镜像有两个原因: 本次实验,使用 Swarm 插件实现 Jenkins master 与 agent 之间的通信,所以 Jenkins agent 需要启动 swarm 客户端。 Jenkins agent 必须支持 Ansible。 bash docker build -f JenkinsSlaveAnsibleDockerfile -t jenkins-swarm-ansible .</description>
</item>
<item>
<title>Kubernetes 中的渐进式交付:蓝绿部署和金丝雀部署</title>
<link>https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-24-progressive-delivery-in-kubernetes-blue-green-and-canary-deployments/</link>
......
......@@ -6,6 +6,11 @@
<loc>https://jenkins-zh.github.io/about/code-of-conduct/</loc>
</url>
<url>
<loc>https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/</loc>
<lastmod>2019-04-25T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-24-progressive-delivery-in-kubernetes-blue-green-and-canary-deployments/</loc>
<lastmod>2019-04-24T00:00:00+00:00</lastmod>
......@@ -217,6 +222,12 @@
<priority>0</priority>
</url>
<url>
<loc>https://jenkins-zh.github.io/tags/ansible/</loc>
<lastmod>2019-04-25T00:00:00+00:00</lastmod>
<priority>0</priority>
</url>
<url>
<loc>https://jenkins-zh.github.io/categories/</loc>
<priority>0</priority>
......@@ -371,7 +382,7 @@
<url>
<loc>https://jenkins-zh.github.io/tags/jenkins/</loc>
<lastmod>2019-04-23T00:00:00+00:00</lastmod>
<lastmod>2019-04-25T00:00:00+00:00</lastmod>
<priority>0</priority>
</url>
......@@ -390,7 +401,7 @@
<url>
<loc>https://jenkins-zh.github.io/</loc>
<lastmod>2019-04-24T00:00:00+00:00</lastmod>
<lastmod>2019-04-25T00:00:00+00:00</lastmod>
<priority>0</priority>
</url>
......@@ -447,6 +458,12 @@
<priority>0</priority>
</url>
<url>
<loc>https://jenkins-zh.github.io/tags/nginx/</loc>
<lastmod>2019-04-25T00:00:00+00:00</lastmod>
<priority>0</priority>
</url>
<url>
<loc>https://jenkins-zh.github.io/tags/opensource/</loc>
<lastmod>2019-03-13T00:00:00+00:00</lastmod>
......@@ -548,7 +565,7 @@
<url>
<loc>https://jenkins-zh.github.io/wechat/</loc>
<lastmod>2019-04-24T00:00:00+00:00</lastmod>
<lastmod>2019-04-25T00:00:00+00:00</lastmod>
<priority>0</priority>
</url>
......
<!DOCTYPE html>
<html class="no-js" lang="zh-CN">
<head>
<meta charset="utf-8">
<link rel="preload" href="https://jenkins-zh.github.io/files/muli-latin-200.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://jenkins-zh.github.io/files/muli-latin-400.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://jenkins-zh.github.io/files/muli-latin-800.woff2" as="font" type="font/woff2" crossorigin>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Ansible | Jenkins 中文社区</title>
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width,minimum-scale=1">
<meta name="generator" content="Hugo 0.54.0" />
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
<link rel="alternate" type="application/rss&#43;xml" href="https://jenkins-zh.github.io/tags/ansible/index.xml">
<link href='/dist/main.css' rel='stylesheet' type="text/css" /><script src="/js/chart.js"></script>
<style>
img.avatar {
width: 32px;
display: inline;
}
</style>
<meta property="og:title" content="Ansible" />
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.github.io/tags/ansible/" />
<meta property="og:updated_time" content="2019-04-25T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Ansible">
<meta itemprop="description" content="">
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Ansible"/>
<meta name="twitter:description" content=""/>
</head>
<body class="ma0 sans-serif bg-primary-color-light">
<nav class="bg-primary-color-dark pv4 w-100" role="navigation">
<div class="center flex-ns flex-wrap items-center justify-start mw9">
<h1 class="dim f3 lh-solid ml0-ns mr0 mr4-l mv0 pl3 pl4-ns">
<a href="https://jenkins-zh.github.io/" class="link white">
Jenkins 中文社区
</a>
</h1>
<ul class="list ma0 pa0 dn dib-l">
<li class="f5 dib mr4" role="menuitem">
<a href="/wechat/" class="dim link light-silver"
>
微信
</a>
</li>
<li class="f5 dib mr4" role="menuitem">
<a href="/event/" class="dim link light-silver"
>
活动
</a>
</li>
<li class="f5 dib mr4" role="menuitem">
<a href="/about/" class="dim link light-silver"
>
关于我们
</a>
</li>
<li class="f5 dib mr4" role="menuitem">
<a href="http://jenkins.io/zh" class="dim link light-silver"
target="_blank">
Jenkins 官网
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="10" height="10" viewBox="0 0 32 32" class="fill-current v-base" aria-label="External Link">
<path d="M25.152 16.576v5.696q0 2.144-1.504 3.648t-3.648 1.504h-14.848q-2.144 0-3.648-1.504t-1.504-3.648v-14.848q0-2.112 1.504-3.616t3.648-1.536h12.576q0.224 0 0.384 0.16t0.16 0.416v1.152q0 0.256-0.16 0.416t-0.384 0.16h-12.576q-1.184 0-2.016 0.832t-0.864 2.016v14.848q0 1.184 0.864 2.016t2.016 0.864h14.848q1.184 0 2.016-0.864t0.832-2.016v-5.696q0-0.256 0.16-0.416t0.416-0.16h1.152q0.256 0 0.416 0.16t0.16 0.416zM32 1.152v9.12q0 0.48-0.352 0.8t-0.8 0.352-0.8-0.352l-3.136-3.136-11.648 11.648q-0.16 0.192-0.416 0.192t-0.384-0.192l-2.048-2.048q-0.192-0.16-0.192-0.384t0.192-0.416l11.648-11.648-3.136-3.136q-0.352-0.352-0.352-0.8t0.352-0.8 0.8-0.352h9.12q0.48 0 0.8 0.352t0.352 0.8z"></path>
</svg>
</a>
</li>
</ul>
<div class="db dib-ns pl3"><form id="site-search-form" action="" role="search">
<fieldset class="bn ma0 pa0">
<label class="clip" for="email-address">Search</label>
<input type="search" id="search-input" class="needs-js bg-left bg-transparent bn f5 input-reset lh-solid mt3 mt0-ns pl4 pv2 w5 white"
placeholder="搜索文档" type="text"
name="email-address" value="" style="background-image:url('/images/icon-search.png');background-size:16px 16px;">
</fieldset>
</form>
</div>
<div class="list ma0 pa0 dn dib-l"></div>
<span class="absolute mt1 mt2-l pr3 right-0 top-0">
<a class="github-button needs-js link primary-color-dark" href="https://github.com/jenkins-zh/jenkins-zh/" data-size="large" data-show-count="false" aria-label="Star Jenkins WeChat GitHub">Star</a>
</span>
</div>
</nav>
<main role="main" class="content-with-sidebar min-vh-100 pb7 pb0-ns">
<div class="w-100 ph4 pb5 pb6-ns pt1 mt4 pt3-ns">
<div class="flex">
<div class="w-100 w-80-l ph0 ph4-l">
<article class="w-100 nested-copy-line-height nested-links nested-img">
<h1 class="primary-color-dark f2">
Tag: Ansible
</h1>
<div class=" mid-gray f5 f4-l">
</div>
</article>
<div class="flex flex-wrap">
<section class="flex-ns flex-wrap justify-between w-100">
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/" class="link primary-color dim">使用 Jenkins &#43; Ansible 实现自动化部署 Nginx</a>
</h1>
<div class="lh-copy links">
使用 Jenkins + Ansible 实现自动化部署 Nginx
<a href="/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
</div>
</div>
</div>
</main>
<footer class="bg-primary-color-dark ph4-ns pt4 relative w-100" role="contentinfo">
<div class="center flex-ns flex-wrap justify-between mw9 w-90">
<div class="pb3 pt4 w-100 w-50-ns">
<div class="b f3 light-gray mb3 nested-links tc">
<a href="https://github.com/jenkins-zh/jenkins-zh/graphs/contributors" target="_blank" class="link">Jenkins 社区贡献者</a> 维护<br/>
</div>
<ul class="center f6 list ma0 mv3 pa0 tc" style="display:none"><li class="dib mr3"><a href="https://github.com/jenkins-zh/jenkins-zh/issues/new" class="dim link light-gray pv2">File an Issue</a></li></ul>
<ul class="center f6 list ma0 mv4 pa0 tc">
<li class="dib mr3">
<a href="https://twitter.com/suren69811254" target="_blank" class="dim link light-gray pv2">@suren69811254</a>
</li>
<li class="dib mr3">
<a href="https://www.youtube.com/channel/UC63xz3pq26BBgwB3cnwCoqQ" target="_blank" class="dim link light-gray pv2">YouTube</a>
</li>
</ul>
</div>
<div>
<a href="https://mp.weixin.qq.com/s/vifdduC3kRGSIMpyL03yVA" target="_blank">
<img src="https://jenkins.io/images/jenkins-wechat.png" with="100" height="100">
</a>
</div>
</div>
<div class="f7 gray mb5 mb0-ns ph3 w-100" style="display:none"> 
<p class="dib mr4">Jenkins&reg; is a registered trademark of <a href="https://www.spi-inc.org/" class="link">Software in the Public Interest, Inc.</a></p>
<p class="dib">Copyright 2018–2019 the original authors.</p>
</div>
<div class="bg-primary-color-dark bottom-0 left-0 right-0 dn-l fixed pb3 ph3 w-100"><div class="globalmenu mobilemenu pb3 dn">
<ul class="list hidden dib ph0 ma0 scrolling-touch tc">
<li class="tl dib ma0 hover-bg-black w-100">
<a href="/wechat/" class="ttu f6 link primary-color-light overflow hover-white db brand-font ma0 w-100 pv3 ph4">
微信
</a>
</li>
<li class="tl dib ma0 hover-bg-black w-100">
<a href="/event/" class="ttu f6 link primary-color-light overflow hover-white db brand-font ma0 w-100 pv3 ph4">
活动
</a>
</li>
<li class="tl dib ma0 hover-bg-black w-100">
<a href="/about/" class="ttu f6 link primary-color-light overflow hover-white db brand-font ma0 w-100 pv3 ph4">
关于我们
</a>
</li>
<li class="tl dib ma0 hover-bg-black w-100">
<a href="http://jenkins.io/zh" class="ttu f6 link primary-color-light overflow hover-white db brand-font ma0 w-100 pv3 ph4">
Jenkins 官网
</a>
</li>
</ul>
</div>
<div class="docsmenu mobilemenu pb3 dn">
<ul class="list dib ph0 ma0 scrolling-touch tc">
</ul>
</div>
<div class="flex dn-l justify-between">
<button class="js-toggle flex-auto dib dn-l f6 tc db mt4-ns ph3 pv2 link mr2 white bg-primary-color-dark hover-bg-primary-color ba b--white-40 w-auto" data-target=".globalmenu">Menu</button>
<button class="js-toggle flex-auto dib dn-l f6 tc db mt4-ns ph3 pv2 link white bg-primary-color-dark hover-bg-primary-color ba b--white-40 w-auto" data-target=".docsmenu">Docs Menu</button>
</div>
</div>
</footer>
<link href="/dist/auto-complete.css" rel="stylesheet">
<script type="text/javascript">
var baseurl = "https:\/\/jenkins-zh.github.io\/";
</script>
<script src="/dist/lunr.js"></script>
<script src="/dist/autocomplete.js"></script>
<script src="/dist/jquery-3.2.1.min.js"></script>
<script src="/dist/search.js"></script>
<script async defer src="https://buttons.github.io/buttons.js"></script>
</body>
</html>
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Ansible on Jenkins 中文社区</title>
<link>https://jenkins-zh.github.io/tags/ansible/</link>
<description>Recent content in Ansible on Jenkins 中文社区</description>
<generator>Hugo -- gohugo.io</generator>
<language>zh-CN</language>
<lastBuildDate>Thu, 25 Apr 2019 00:00:00 +0000</lastBuildDate>
<atom:link href="https://jenkins-zh.github.io/tags/ansible/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>使用 Jenkins &#43; Ansible 实现自动化部署 Nginx</title>
<link>https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/</link>
<pubDate>Thu, 25 Apr 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/</guid>
<description>本文介绍如何使用 Jenkins + Ansible 实现对 Nginx 的自动化部署。最终达到的效果有如下几点: 1. 只要你将 Nginx 的配置推送到 GitHub 中,Jenkins 就会自动执行部署,然后目标服务器的 Nginx 配置自动生效。这个过程是幂等(idempotent)的,只要代码不变,执行多少遍,最终效果不变。 2. 如果目标机器没有安装 Nginx,则会自动安装 Nginx。 3. 自动设置服务器防火墙规则。
1. 实验环境介绍 本次实验使用 Docker Compose 搭建 Jenkins 及 Jenkins agent。使用 Vagrant 启动一台虚拟机,用于部署 Nginx。使用 Vagrant 是可选的,读者可以使用 VirtualBox 启动一个虚拟机。使用 Vagrant 完全是为了自动化搭建实验环境。
以下是整个实验环境的架构图: 注意,图中的 5123 &amp;lt;-&amp;gt; 80 代表将宿主机的 5123 端口请求转发到虚拟机中的 80 端口。
Vagrant:虚拟机管理工具,通过它,我们可以使用文本来定义、管理虚拟机。 Ansible:自动化运维工具 Docker Compose:它是一个用于定义和运行多容器 Docker 应用程序的工具。可以使用 YAML 文件来配置应用程序的服务。 2. 启动实验环境 克隆代码并进入文件夹 bash git clone https://github.com/zacker330/jenkins-ansible-nginx.git cd jenkins-ansible-nginx 构建 Jenkins agent 的镜像 需要自定义 Jenkins agent 镜像有两个原因: 本次实验,使用 Swarm 插件实现 Jenkins master 与 agent 之间的通信,所以 Jenkins agent 需要启动 swarm 客户端。 Jenkins agent 必须支持 Ansible。 bash docker build -f JenkinsSlaveAnsibleDockerfile -t jenkins-swarm-ansible .</description>
</item>
</channel>
</rss>
\ No newline at end of file
<!DOCTYPE html><html><head><title>https://jenkins-zh.github.io/tags/ansible/</title><link rel="canonical" href="https://jenkins-zh.github.io/tags/ansible/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://jenkins-zh.github.io/tags/ansible/" /></head></html>
\ No newline at end of file
......@@ -177,6 +177,22 @@
</div>
<div class="break-inside-avoid-l nested-copy-line-height mb5">
<h2 class="f3">
<a href="/tags/ansible" class="link black hover-blue">
ansible <span class="f6 gray"> &#8599;</span>
</a>
</h2>
<h3>
<a href="https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/" class="link blue">
使用 Jenkins &#43; Ansible 实现自动化部署 Nginx
</a>
</h3>
</div>
<div class="break-inside-avoid-l nested-copy-line-height mb5">
<h2 class="f3">
<a href="/tags/cd" class="link black hover-blue">
......@@ -700,6 +716,12 @@
</a>
</h2>
<h3>
<a href="https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/" class="link blue">
使用 Jenkins &#43; Ansible 实现自动化部署 Nginx
</a>
</h3>
<h3>
<a href="https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-23-jenkins-master-shared-home/" class="link blue">
关于 Jenkins master 共享 JENKINS_HOME 目录的实验
......@@ -929,6 +951,22 @@
</div>
<div class="break-inside-avoid-l nested-copy-line-height mb5">
<h2 class="f3">
<a href="/tags/nginx" class="link black hover-blue">
nginx <span class="f6 gray"> &#8599;</span>
</a>
</h2>
<h3>
<a href="https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/" class="link blue">
使用 Jenkins &#43; Ansible 实现自动化部署 Nginx
</a>
</h3>
</div>
<div class="break-inside-avoid-l nested-copy-line-height mb5">
<h2 class="f3">
<a href="/tags/opensource" class="link black hover-blue">
......
......@@ -20,6 +20,15 @@
<description></description>
</item>
<item>
<title>Ansible</title>
<link>https://jenkins-zh.github.io/tags/ansible/</link>
<pubDate>Thu, 25 Apr 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.github.io/tags/ansible/</guid>
<description></description>
</item>
<item>
<title>Cd</title>
<link>https://jenkins-zh.github.io/tags/cd/</link>
......@@ -239,7 +248,7 @@
<item>
<title>Jenkins</title>
<link>https://jenkins-zh.github.io/tags/jenkins/</link>
<pubDate>Tue, 23 Apr 2019 00:00:00 +0000</pubDate>
<pubDate>Thu, 25 Apr 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.github.io/tags/jenkins/</guid>
<description></description>
......@@ -308,6 +317,15 @@
<description></description>
</item>
<item>
<title>Nginx</title>
<link>https://jenkins-zh.github.io/tags/nginx/</link>
<pubDate>Thu, 25 Apr 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.github.io/tags/nginx/</guid>
<description></description>
</item>
<item>
<title>Opensource</title>
<link>https://jenkins-zh.github.io/tags/opensource/</link>
......
......@@ -33,7 +33,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.github.io/tags/jenkins/" />
<meta property="og:updated_time" content="2019-04-23T00:00:00&#43;00:00"/>
<meta property="og:updated_time" content="2019-04-25T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Jenkins">
<meta itemprop="description" content="">
......@@ -162,6 +162,33 @@
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/" class="link primary-color dim">使用 Jenkins &#43; Ansible 实现自动化部署 Nginx</a>
</h1>
<div class="lh-copy links">
使用 Jenkins + Ansible 实现自动化部署 Nginx
<a href="/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/04/2019-04-23-jenkins-master-shared-home/" class="link primary-color dim">关于 Jenkins master 共享 JENKINS_HOME 目录的实验</a>
</h1>
......
......@@ -6,11 +6,23 @@
<description>Recent content in Jenkins on Jenkins 中文社区</description>
<generator>Hugo -- gohugo.io</generator>
<language>zh-CN</language>
<lastBuildDate>Tue, 23 Apr 2019 00:00:00 +0000</lastBuildDate>
<lastBuildDate>Thu, 25 Apr 2019 00:00:00 +0000</lastBuildDate>
<atom:link href="https://jenkins-zh.github.io/tags/jenkins/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>使用 Jenkins &#43; Ansible 实现自动化部署 Nginx</title>
<link>https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/</link>
<pubDate>Thu, 25 Apr 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/</guid>
<description>本文介绍如何使用 Jenkins + Ansible 实现对 Nginx 的自动化部署。最终达到的效果有如下几点: 1. 只要你将 Nginx 的配置推送到 GitHub 中,Jenkins 就会自动执行部署,然后目标服务器的 Nginx 配置自动生效。这个过程是幂等(idempotent)的,只要代码不变,执行多少遍,最终效果不变。 2. 如果目标机器没有安装 Nginx,则会自动安装 Nginx。 3. 自动设置服务器防火墙规则。
1. 实验环境介绍 本次实验使用 Docker Compose 搭建 Jenkins 及 Jenkins agent。使用 Vagrant 启动一台虚拟机,用于部署 Nginx。使用 Vagrant 是可选的,读者可以使用 VirtualBox 启动一个虚拟机。使用 Vagrant 完全是为了自动化搭建实验环境。
以下是整个实验环境的架构图: 注意,图中的 5123 &amp;lt;-&amp;gt; 80 代表将宿主机的 5123 端口请求转发到虚拟机中的 80 端口。
Vagrant:虚拟机管理工具,通过它,我们可以使用文本来定义、管理虚拟机。 Ansible:自动化运维工具 Docker Compose:它是一个用于定义和运行多容器 Docker 应用程序的工具。可以使用 YAML 文件来配置应用程序的服务。 2. 启动实验环境 克隆代码并进入文件夹 bash git clone https://github.com/zacker330/jenkins-ansible-nginx.git cd jenkins-ansible-nginx 构建 Jenkins agent 的镜像 需要自定义 Jenkins agent 镜像有两个原因: 本次实验,使用 Swarm 插件实现 Jenkins master 与 agent 之间的通信,所以 Jenkins agent 需要启动 swarm 客户端。 Jenkins agent 必须支持 Ansible。 bash docker build -f JenkinsSlaveAnsibleDockerfile -t jenkins-swarm-ansible .</description>
</item>
<item>
<title>关于 Jenkins master 共享 JENKINS_HOME 目录的实验</title>
<link>https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-23-jenkins-master-shared-home/</link>
......
......@@ -33,6 +33,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.github.io/tags/jenkins/" />
<meta property="og:updated_time" content="2019-02-27T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Jenkins">
<meta itemprop="description" content="">
......@@ -161,6 +162,33 @@
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/" class="link primary-color dim">使用 Jenkins &#43; Ansible 实现自动化部署 Nginx</a>
</h1>
<div class="lh-copy links">
使用 Jenkins + Ansible 实现自动化部署 Nginx
<a href="/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/04/2019-04-23-jenkins-master-shared-home/" class="link primary-color dim">关于 Jenkins master 共享 JENKINS_HOME 目录的实验</a>
</h1>
......
<!DOCTYPE html>
<html class="no-js" lang="zh-CN">
<head>
<meta charset="utf-8">
<link rel="preload" href="https://jenkins-zh.github.io/files/muli-latin-200.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://jenkins-zh.github.io/files/muli-latin-400.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://jenkins-zh.github.io/files/muli-latin-800.woff2" as="font" type="font/woff2" crossorigin>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Nginx | Jenkins 中文社区</title>
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width,minimum-scale=1">
<meta name="generator" content="Hugo 0.54.0" />
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
<link rel="alternate" type="application/rss&#43;xml" href="https://jenkins-zh.github.io/tags/nginx/index.xml">
<link href='/dist/main.css' rel='stylesheet' type="text/css" /><script src="/js/chart.js"></script>
<style>
img.avatar {
width: 32px;
display: inline;
}
</style>
<meta property="og:title" content="Nginx" />
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.github.io/tags/nginx/" />
<meta property="og:updated_time" content="2019-04-25T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Nginx">
<meta itemprop="description" content="">
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Nginx"/>
<meta name="twitter:description" content=""/>
</head>
<body class="ma0 sans-serif bg-primary-color-light">
<nav class="bg-primary-color-dark pv4 w-100" role="navigation">
<div class="center flex-ns flex-wrap items-center justify-start mw9">
<h1 class="dim f3 lh-solid ml0-ns mr0 mr4-l mv0 pl3 pl4-ns">
<a href="https://jenkins-zh.github.io/" class="link white">
Jenkins 中文社区
</a>
</h1>
<ul class="list ma0 pa0 dn dib-l">
<li class="f5 dib mr4" role="menuitem">
<a href="/wechat/" class="dim link light-silver"
>
微信
</a>
</li>
<li class="f5 dib mr4" role="menuitem">
<a href="/event/" class="dim link light-silver"
>
活动
</a>
</li>
<li class="f5 dib mr4" role="menuitem">
<a href="/about/" class="dim link light-silver"
>
关于我们
</a>
</li>
<li class="f5 dib mr4" role="menuitem">
<a href="http://jenkins.io/zh" class="dim link light-silver"
target="_blank">
Jenkins 官网
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="10" height="10" viewBox="0 0 32 32" class="fill-current v-base" aria-label="External Link">
<path d="M25.152 16.576v5.696q0 2.144-1.504 3.648t-3.648 1.504h-14.848q-2.144 0-3.648-1.504t-1.504-3.648v-14.848q0-2.112 1.504-3.616t3.648-1.536h12.576q0.224 0 0.384 0.16t0.16 0.416v1.152q0 0.256-0.16 0.416t-0.384 0.16h-12.576q-1.184 0-2.016 0.832t-0.864 2.016v14.848q0 1.184 0.864 2.016t2.016 0.864h14.848q1.184 0 2.016-0.864t0.832-2.016v-5.696q0-0.256 0.16-0.416t0.416-0.16h1.152q0.256 0 0.416 0.16t0.16 0.416zM32 1.152v9.12q0 0.48-0.352 0.8t-0.8 0.352-0.8-0.352l-3.136-3.136-11.648 11.648q-0.16 0.192-0.416 0.192t-0.384-0.192l-2.048-2.048q-0.192-0.16-0.192-0.384t0.192-0.416l11.648-11.648-3.136-3.136q-0.352-0.352-0.352-0.8t0.352-0.8 0.8-0.352h9.12q0.48 0 0.8 0.352t0.352 0.8z"></path>
</svg>
</a>
</li>
</ul>
<div class="db dib-ns pl3"><form id="site-search-form" action="" role="search">
<fieldset class="bn ma0 pa0">
<label class="clip" for="email-address">Search</label>
<input type="search" id="search-input" class="needs-js bg-left bg-transparent bn f5 input-reset lh-solid mt3 mt0-ns pl4 pv2 w5 white"
placeholder="搜索文档" type="text"
name="email-address" value="" style="background-image:url('/images/icon-search.png');background-size:16px 16px;">
</fieldset>
</form>
</div>
<div class="list ma0 pa0 dn dib-l"></div>
<span class="absolute mt1 mt2-l pr3 right-0 top-0">
<a class="github-button needs-js link primary-color-dark" href="https://github.com/jenkins-zh/jenkins-zh/" data-size="large" data-show-count="false" aria-label="Star Jenkins WeChat GitHub">Star</a>
</span>
</div>
</nav>
<main role="main" class="content-with-sidebar min-vh-100 pb7 pb0-ns">
<div class="w-100 ph4 pb5 pb6-ns pt1 mt4 pt3-ns">
<div class="flex">
<div class="w-100 w-80-l ph0 ph4-l">
<article class="w-100 nested-copy-line-height nested-links nested-img">
<h1 class="primary-color-dark f2">
Tag: Nginx
</h1>
<div class=" mid-gray f5 f4-l">
</div>
</article>
<div class="flex flex-wrap">
<section class="flex-ns flex-wrap justify-between w-100">
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/" class="link primary-color dim">使用 Jenkins &#43; Ansible 实现自动化部署 Nginx</a>
</h1>
<div class="lh-copy links">
使用 Jenkins + Ansible 实现自动化部署 Nginx
<a href="/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
</div>
</div>
</div>
</main>
<footer class="bg-primary-color-dark ph4-ns pt4 relative w-100" role="contentinfo">
<div class="center flex-ns flex-wrap justify-between mw9 w-90">
<div class="pb3 pt4 w-100 w-50-ns">
<div class="b f3 light-gray mb3 nested-links tc">
<a href="https://github.com/jenkins-zh/jenkins-zh/graphs/contributors" target="_blank" class="link">Jenkins 社区贡献者</a> 维护<br/>
</div>
<ul class="center f6 list ma0 mv3 pa0 tc" style="display:none"><li class="dib mr3"><a href="https://github.com/jenkins-zh/jenkins-zh/issues/new" class="dim link light-gray pv2">File an Issue</a></li></ul>
<ul class="center f6 list ma0 mv4 pa0 tc">
<li class="dib mr3">
<a href="https://twitter.com/suren69811254" target="_blank" class="dim link light-gray pv2">@suren69811254</a>
</li>
<li class="dib mr3">
<a href="https://www.youtube.com/channel/UC63xz3pq26BBgwB3cnwCoqQ" target="_blank" class="dim link light-gray pv2">YouTube</a>
</li>
</ul>
</div>
<div>
<a href="https://mp.weixin.qq.com/s/vifdduC3kRGSIMpyL03yVA" target="_blank">
<img src="https://jenkins.io/images/jenkins-wechat.png" with="100" height="100">
</a>
</div>
</div>
<div class="f7 gray mb5 mb0-ns ph3 w-100" style="display:none"> 
<p class="dib mr4">Jenkins&reg; is a registered trademark of <a href="https://www.spi-inc.org/" class="link">Software in the Public Interest, Inc.</a></p>
<p class="dib">Copyright 2018–2019 the original authors.</p>
</div>
<div class="bg-primary-color-dark bottom-0 left-0 right-0 dn-l fixed pb3 ph3 w-100"><div class="globalmenu mobilemenu pb3 dn">
<ul class="list hidden dib ph0 ma0 scrolling-touch tc">
<li class="tl dib ma0 hover-bg-black w-100">
<a href="/wechat/" class="ttu f6 link primary-color-light overflow hover-white db brand-font ma0 w-100 pv3 ph4">
微信
</a>
</li>
<li class="tl dib ma0 hover-bg-black w-100">
<a href="/event/" class="ttu f6 link primary-color-light overflow hover-white db brand-font ma0 w-100 pv3 ph4">
活动
</a>
</li>
<li class="tl dib ma0 hover-bg-black w-100">
<a href="/about/" class="ttu f6 link primary-color-light overflow hover-white db brand-font ma0 w-100 pv3 ph4">
关于我们
</a>
</li>
<li class="tl dib ma0 hover-bg-black w-100">
<a href="http://jenkins.io/zh" class="ttu f6 link primary-color-light overflow hover-white db brand-font ma0 w-100 pv3 ph4">
Jenkins 官网
</a>
</li>
</ul>
</div>
<div class="docsmenu mobilemenu pb3 dn">
<ul class="list dib ph0 ma0 scrolling-touch tc">
</ul>
</div>
<div class="flex dn-l justify-between">
<button class="js-toggle flex-auto dib dn-l f6 tc db mt4-ns ph3 pv2 link mr2 white bg-primary-color-dark hover-bg-primary-color ba b--white-40 w-auto" data-target=".globalmenu">Menu</button>
<button class="js-toggle flex-auto dib dn-l f6 tc db mt4-ns ph3 pv2 link white bg-primary-color-dark hover-bg-primary-color ba b--white-40 w-auto" data-target=".docsmenu">Docs Menu</button>
</div>
</div>
</footer>
<link href="/dist/auto-complete.css" rel="stylesheet">
<script type="text/javascript">
var baseurl = "https:\/\/jenkins-zh.github.io\/";
</script>
<script src="/dist/lunr.js"></script>
<script src="/dist/autocomplete.js"></script>
<script src="/dist/jquery-3.2.1.min.js"></script>
<script src="/dist/search.js"></script>
<script async defer src="https://buttons.github.io/buttons.js"></script>
</body>
</html>
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Nginx on Jenkins 中文社区</title>
<link>https://jenkins-zh.github.io/tags/nginx/</link>
<description>Recent content in Nginx on Jenkins 中文社区</description>
<generator>Hugo -- gohugo.io</generator>
<language>zh-CN</language>
<lastBuildDate>Thu, 25 Apr 2019 00:00:00 +0000</lastBuildDate>
<atom:link href="https://jenkins-zh.github.io/tags/nginx/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>使用 Jenkins &#43; Ansible 实现自动化部署 Nginx</title>
<link>https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/</link>
<pubDate>Thu, 25 Apr 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/</guid>
<description>本文介绍如何使用 Jenkins + Ansible 实现对 Nginx 的自动化部署。最终达到的效果有如下几点: 1. 只要你将 Nginx 的配置推送到 GitHub 中,Jenkins 就会自动执行部署,然后目标服务器的 Nginx 配置自动生效。这个过程是幂等(idempotent)的,只要代码不变,执行多少遍,最终效果不变。 2. 如果目标机器没有安装 Nginx,则会自动安装 Nginx。 3. 自动设置服务器防火墙规则。
1. 实验环境介绍 本次实验使用 Docker Compose 搭建 Jenkins 及 Jenkins agent。使用 Vagrant 启动一台虚拟机,用于部署 Nginx。使用 Vagrant 是可选的,读者可以使用 VirtualBox 启动一个虚拟机。使用 Vagrant 完全是为了自动化搭建实验环境。
以下是整个实验环境的架构图: 注意,图中的 5123 &amp;lt;-&amp;gt; 80 代表将宿主机的 5123 端口请求转发到虚拟机中的 80 端口。
Vagrant:虚拟机管理工具,通过它,我们可以使用文本来定义、管理虚拟机。 Ansible:自动化运维工具 Docker Compose:它是一个用于定义和运行多容器 Docker 应用程序的工具。可以使用 YAML 文件来配置应用程序的服务。 2. 启动实验环境 克隆代码并进入文件夹 bash git clone https://github.com/zacker330/jenkins-ansible-nginx.git cd jenkins-ansible-nginx 构建 Jenkins agent 的镜像 需要自定义 Jenkins agent 镜像有两个原因: 本次实验,使用 Swarm 插件实现 Jenkins master 与 agent 之间的通信,所以 Jenkins agent 需要启动 swarm 客户端。 Jenkins agent 必须支持 Ansible。 bash docker build -f JenkinsSlaveAnsibleDockerfile -t jenkins-swarm-ansible .</description>
</item>
</channel>
</rss>
\ No newline at end of file
<!DOCTYPE html><html><head><title>https://jenkins-zh.github.io/tags/nginx/</title><link rel="canonical" href="https://jenkins-zh.github.io/tags/nginx/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://jenkins-zh.github.io/tags/nginx/" /></head></html>
\ No newline at end of file
......@@ -419,8 +419,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-23-jenkins-master-shared-home/" class="link">
关于 Jenkins master 共享 JENKINS_HOME 目录的实验
<a href="/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/" class="link">
使用 Jenkins &#43; Ansible 实现自动化部署 Nginx
</a>
</li>
......@@ -431,6 +431,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-23-jenkins-master-shared-home/" class="link">
关于 Jenkins master 共享 JENKINS_HOME 目录的实验
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-19-the-business-value-of-cd/" class="link">
持续交付的商业价值
......
......@@ -363,8 +363,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-23-jenkins-master-shared-home/" class="link">
关于 Jenkins master 共享 JENKINS_HOME 目录的实验
<a href="/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/" class="link">
使用 Jenkins &#43; Ansible 实现自动化部署 Nginx
</a>
</li>
......@@ -375,6 +375,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-23-jenkins-master-shared-home/" class="link">
关于 Jenkins master 共享 JENKINS_HOME 目录的实验
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-19-the-business-value-of-cd/" class="link">
持续交付的商业价值
......
......@@ -520,8 +520,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-23-jenkins-master-shared-home/" class="link">
关于 Jenkins master 共享 JENKINS_HOME 目录的实验
<a href="/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/" class="link">
使用 Jenkins &#43; Ansible 实现自动化部署 Nginx
</a>
</li>
......@@ -532,6 +532,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-23-jenkins-master-shared-home/" class="link">
关于 Jenkins master 共享 JENKINS_HOME 目录的实验
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-19-the-business-value-of-cd/" class="link">
持续交付的商业价值
......
......@@ -442,8 +442,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-23-jenkins-master-shared-home/" class="link">
关于 Jenkins master 共享 JENKINS_HOME 目录的实验
<a href="/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/" class="link">
使用 Jenkins &#43; Ansible 实现自动化部署 Nginx
</a>
</li>
......@@ -454,6 +454,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-23-jenkins-master-shared-home/" class="link">
关于 Jenkins master 共享 JENKINS_HOME 目录的实验
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-19-the-business-value-of-cd/" class="link">
持续交付的商业价值
......
......@@ -452,8 +452,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-23-jenkins-master-shared-home/" class="link">
关于 Jenkins master 共享 JENKINS_HOME 目录的实验
<a href="/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/" class="link">
使用 Jenkins &#43; Ansible 实现自动化部署 Nginx
</a>
</li>
......@@ -464,6 +464,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-23-jenkins-master-shared-home/" class="link">
关于 Jenkins master 共享 JENKINS_HOME 目录的实验
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-19-the-business-value-of-cd/" class="link">
持续交付的商业价值
......
......@@ -396,8 +396,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-23-jenkins-master-shared-home/" class="link">
关于 Jenkins master 共享 JENKINS_HOME 目录的实验
<a href="/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/" class="link">
使用 Jenkins &#43; Ansible 实现自动化部署 Nginx
</a>
</li>
......@@ -408,6 +408,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-23-jenkins-master-shared-home/" class="link">
关于 Jenkins master 共享 JENKINS_HOME 目录的实验
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-19-the-business-value-of-cd/" class="link">
持续交付的商业价值
......
......@@ -485,8 +485,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-23-jenkins-master-shared-home/" class="link">
关于 Jenkins master 共享 JENKINS_HOME 目录的实验
<a href="/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/" class="link">
使用 Jenkins &#43; Ansible 实现自动化部署 Nginx
</a>
</li>
......@@ -497,6 +497,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-23-jenkins-master-shared-home/" class="link">
关于 Jenkins master 共享 JENKINS_HOME 目录的实验
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-19-the-business-value-of-cd/" class="link">
持续交付的商业价值
......
......@@ -409,6 +409,12 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/" class="link">
使用 Jenkins &#43; Ansible 实现自动化部署 Nginx
</a>
</li>
<li class="db b mt4 mb2 mr2">
......@@ -416,6 +422,9 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/04/2019-04-19-the-business-value-of-cd/" class="link">
持续交付的商业价值
......
......@@ -187,6 +187,14 @@
</a>
<a href="https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/" class="dib f6 pl1 hover-bg-light-gray br-100" title="使用 Jenkins &#43; Ansible 实现自动化部署 Nginx ">
<svg class="fill-current" height="30px" viewBox="0 0 24 24" width="30px" xmlns="http://www.w3.org/2000/svg">
<path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/>
<path d="M0 0h24v24H0z" fill="none"/>
</svg>
</a>
<a href="https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-23-jenkins-master-shared-home/" class="dib f6 pr1 hover-bg-light-gray br-100" title="关于 Jenkins master 共享 JENKINS_HOME 目录的实验">
......
......@@ -33,7 +33,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.github.io/wechat/" />
<meta property="og:updated_time" content="2019-04-24T00:00:00&#43;00:00"/>
<meta property="og:updated_time" content="2019-04-25T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Wechats">
<meta itemprop="description" content="">
......@@ -162,6 +162,33 @@
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/" class="link primary-color dim">使用 Jenkins &#43; Ansible 实现自动化部署 Nginx</a>
</h1>
<div class="lh-copy links">
使用 Jenkins + Ansible 实现自动化部署 Nginx
<a href="/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/04/2019-04-24-progressive-delivery-in-kubernetes-blue-green-and-canary-deployments/" class="link primary-color dim">Kubernetes 中的渐进式交付:蓝绿部署和金丝雀部署</a>
</h1>
......@@ -399,33 +426,6 @@
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/04/2019-04-03-the-benefits-and-challenges-of-continuous-integration/" class="link primary-color dim">持续集成的收益与挑战</a>
</h1>
<div class="lh-copy links">
本文介绍了持续集成的定义,并解释了实施CI的各种收益与挑战
<a href="/wechat/articles/2019/04/2019-04-03-the-benefits-and-challenges-of-continuous-integration/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
......
......@@ -6,11 +6,23 @@
<description>Recent content in Wechats on Jenkins 中文社区</description>
<generator>Hugo -- gohugo.io</generator>
<language>zh-CN</language>
<lastBuildDate>Wed, 24 Apr 2019 00:00:00 +0000</lastBuildDate>
<lastBuildDate>Thu, 25 Apr 2019 00:00:00 +0000</lastBuildDate>
<atom:link href="https://jenkins-zh.github.io/wechat/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>使用 Jenkins &#43; Ansible 实现自动化部署 Nginx</title>
<link>https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/</link>
<pubDate>Thu, 25 Apr 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/</guid>
<description>本文介绍如何使用 Jenkins + Ansible 实现对 Nginx 的自动化部署。最终达到的效果有如下几点: 1. 只要你将 Nginx 的配置推送到 GitHub 中,Jenkins 就会自动执行部署,然后目标服务器的 Nginx 配置自动生效。这个过程是幂等(idempotent)的,只要代码不变,执行多少遍,最终效果不变。 2. 如果目标机器没有安装 Nginx,则会自动安装 Nginx。 3. 自动设置服务器防火墙规则。
1. 实验环境介绍 本次实验使用 Docker Compose 搭建 Jenkins 及 Jenkins agent。使用 Vagrant 启动一台虚拟机,用于部署 Nginx。使用 Vagrant 是可选的,读者可以使用 VirtualBox 启动一个虚拟机。使用 Vagrant 完全是为了自动化搭建实验环境。
以下是整个实验环境的架构图: 注意,图中的 5123 &amp;lt;-&amp;gt; 80 代表将宿主机的 5123 端口请求转发到虚拟机中的 80 端口。
Vagrant:虚拟机管理工具,通过它,我们可以使用文本来定义、管理虚拟机。 Ansible:自动化运维工具 Docker Compose:它是一个用于定义和运行多容器 Docker 应用程序的工具。可以使用 YAML 文件来配置应用程序的服务。 2. 启动实验环境 克隆代码并进入文件夹 bash git clone https://github.com/zacker330/jenkins-ansible-nginx.git cd jenkins-ansible-nginx 构建 Jenkins agent 的镜像 需要自定义 Jenkins agent 镜像有两个原因: 本次实验,使用 Swarm 插件实现 Jenkins master 与 agent 之间的通信,所以 Jenkins agent 需要启动 swarm 客户端。 Jenkins agent 必须支持 Ansible。 bash docker build -f JenkinsSlaveAnsibleDockerfile -t jenkins-swarm-ansible .</description>
</item>
<item>
<title>Kubernetes 中的渐进式交付:蓝绿部署和金丝雀部署</title>
<link>https://jenkins-zh.github.io/wechat/articles/2019/04/2019-04-24-progressive-delivery-in-kubernetes-blue-green-and-canary-deployments/</link>
......
......@@ -33,7 +33,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.github.io/wechat/" />
<meta property="og:updated_time" content="2019-03-20T00:00:00&#43;00:00"/>
<meta property="og:updated_time" content="2019-04-03T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Wechats">
<meta itemprop="description" content="">
......@@ -162,6 +162,33 @@
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/04/2019-04-03-the-benefits-and-challenges-of-continuous-integration/" class="link primary-color dim">持续集成的收益与挑战</a>
</h1>
<div class="lh-copy links">
本文介绍了持续集成的定义,并解释了实施CI的各种收益与挑战
<a href="/wechat/articles/2019/04/2019-04-03-the-benefits-and-challenges-of-continuous-integration/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/03/2019-03-18-weekly-version/" class="link primary-color dim">Jenkins 更新通知</a>
</h1>
......@@ -399,33 +426,6 @@
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/02/2019-02-13-outreachy-audit-log-plugin/" class="link primary-color dim">Jenkins 对审计日志的支持</a>
</h1>
<div class="lh-copy links">
Outreachy 实习生提供了 Jenkins 对审计日志的支持
<a href="/wechat/articles/2019/02/2019-02-13-outreachy-audit-log-plugin/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
......
......@@ -33,6 +33,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.github.io/wechat/" />
<meta property="og:updated_time" content="2019-02-13T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Wechats">
<meta itemprop="description" content="">
......@@ -161,6 +162,33 @@
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/02/2019-02-13-outreachy-audit-log-plugin/" class="link primary-color dim">Jenkins 对审计日志的支持</a>
</h1>
<div class="lh-copy links">
Outreachy 实习生提供了 Jenkins 对审计日志的支持
<a href="/wechat/articles/2019/02/2019-02-13-outreachy-audit-log-plugin/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/contributing/" class="link primary-color dim"></a>
</h1>
......@@ -419,33 +447,6 @@ wechat: wechatid github: linuxsuren terms: - 2018-11-11 根据微信公众号
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2018/12/2018-12-19-jenkins-survey/" class="link primary-color dim">2018年 Jenkins 国内使用情况调查问卷</a>
</h1>
<div class="lh-copy links">
共建开放、包容、活跃的 Jenkins 社区
<a href="/wechat/articles/2018/12/2018-12-19-jenkins-survey/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
......
......@@ -161,6 +161,33 @@
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2018/12/2018-12-19-jenkins-survey/" class="link primary-color dim">2018年 Jenkins 国内使用情况调查问卷</a>
</h1>
<div class="lh-copy links">
共建开放、包容、活跃的 Jenkins 社区
<a href="/wechat/articles/2018/12/2018-12-19-jenkins-survey/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2018/12/2018-12-5-custom-war-packager/" class="link primary-color dim">Custom WAR Packager</a>
</h1>
......@@ -403,33 +430,6 @@ Jenkins 中文社区邀您参与社区共同成长 在开源盛会开展的同
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/04/2019-04-12-what-is-cicd/" class="link primary-color dim">什么是 CI/CD?</a>
</h1>
<div class="lh-copy links">
本文介绍了 CI/CD 的概念及应用场景
<a href="/wechat/articles/2019/04/2019-04-12-what-is-cicd/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
......
......@@ -161,6 +161,33 @@
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/04/2019-04-12-what-is-cicd/" class="link primary-color dim">什么是 CI/CD?</a>
</h1>
<div class="lh-copy links">
本文介绍了 CI/CD 的概念及应用场景
<a href="/wechat/articles/2019/04/2019-04-12-what-is-cicd/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2018/12/2018-12-19-scaling-network-connections/" class="link primary-color dim">从 Jenkins Master 扩展网络连接</a>
</h1>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册