<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>jenkins | Easton Man's Blog</title>
	<atom:link href="https://blog.eastonman.com/blog/tag/jenkins/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.eastonman.com</link>
	<description>临渊羡鱼，不如退而结网</description>
	<lastBuildDate>Mon, 25 Jan 2021 02:21:27 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.5</generator>

<image>
	<url>https://blog.eastonman.com/wp-content/uploads/2021/02/cropped-Logo-e1613298891313-32x32.png</url>
	<title>jenkins | Easton Man's Blog</title>
	<link>https://blog.eastonman.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Jenkins 部署指北</title>
		<link>https://blog.eastonman.com/blog/2020/11/deploy-jenkins/</link>
					<comments>https://blog.eastonman.com/blog/2020/11/deploy-jenkins/#respond</comments>
		
		<dc:creator><![CDATA[Easton Man]]></dc:creator>
		<pubDate>Sun, 01 Nov 2020 08:43:40 +0000</pubDate>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[jenkins]]></category>
		<guid isPermaLink="false">https://blog.eastonman.com/?p=226</guid>

					<description><![CDATA[<p>预计阅读时间： 4 分钟本文记录使用Docker从头建立Jenkins服务的过程。 开始之前 本文假设你已经拥 [&#8230;]</p>
The post <a href="https://blog.eastonman.com/blog/2020/11/deploy-jenkins/">Jenkins 部署指北</a> first appeared on <a href="https://blog.eastonman.com">Easton Man's Blog</a>.]]></description>
										<content:encoded><![CDATA[<p class="wpwc-reading-time">预计阅读时间： 4 分钟</p>
<p>本文记录使用Docker从头建立Jenkins服务的过程。</p>



<h2 class="wp-block-heading">开始之前</h2>



<p>本文假设你已经拥有一定的Linux基础，懂得命令行操作、ssh等工具的使用。</p>



<p>方便起见，本文使用Docker来部署Jenkins。其他安装方式参考深入阅读部分文章。</p>



<h2 class="wp-block-heading">安装 Docker</h2>



<p>Docker为服务的部署提供了前所未有的便捷性，有关的介绍可以前往<a href="https://www.docker.com/resources/what-container">官网</a>了解。</p>



<p>安装Docker只需按照步骤操作即可，此处放上官方教程链接：</p>



<p><a href="https://docs.docker.com/engine/install/centos/" target="_blank" rel="noreferrer noopener">CentOS</a></p>



<p><a href="https://docs.docker.com/engine/install/debian/" target="_blank" rel="noreferrer noopener">Debian</a></p>



<p>本文给出一个Debian发行版上的命令汇总，理论上Copy-Paste到命令行，以有sudo权限的非特权用户执行就可以完成Docker和docker-compose的安装。</p>



<pre class="wp-block-code"><code># For Debian
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg2 \
    software-properties-common -y

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

sudo add-apt-repository \
   "deb &#91;arch=amd64] https://download.docker.com/linux/debian \
   $(lsb_release -cs) \
   stable"
sudo apt update
   
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose</code></pre>



<p>如果希望能以非特权用户与Docker通信，则需要将用户加入docker组中。在Debian上可以利用adduser，当然也可以使用usermod，此处简易起见，使用adduser。</p>



<pre class="wp-block-code"><code>sudo adduser $(whoami) docker</code></pre>



<p>需要重新登录才能生效。</p>



<p>至此，我们已经成功地安装好了Docker，可以运行一个hello world: <code>docker run hello-world</code> 以验证是否安装成功并设置好用户组。</p>



<h2 class="wp-block-heading">部署Jenkins</h2>



<p>Jenkins目前分为两个镜像<a href="https://hub.docker.com/r/jenkinsci/blueocean" target="_blank" rel="noreferrer noopener">jenkinsci/blueocean</a>和<a href="https://hub.docker.com/r/jenkins/jenkins" target="_blank" rel="noreferrer noopener">jenkins/jenkins</a>，区别在于前者预先安装了blueocean插件，后者没有。感觉blueocean还是比较有必要装的，推荐直接使用前者。</p>



<p>最简单的方法只需要一行，这是Docker给我们提供的便利。</p>



<pre class="wp-block-code"><code>docker run -p 8080:8080 jenkinsci/blueocean</code></pre>



<p>访问ip：8080就可以看到jenkins的初始化界面了，我在这一步没有截图，此处借用一张网上的图。</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="583" src="https://blog.eastonman.com/wp-content/uploads/2020/11/1219668-20190530140504602-1470043120-1024x583.png" alt="" class="wp-image-239" srcset="https://blog.eastonman.com/wp-content/uploads/2020/11/1219668-20190530140504602-1470043120-1024x583.png 1024w, https://blog.eastonman.com/wp-content/uploads/2020/11/1219668-20190530140504602-1470043120-300x171.png 300w, https://blog.eastonman.com/wp-content/uploads/2020/11/1219668-20190530140504602-1470043120-768x437.png 768w, https://blog.eastonman.com/wp-content/uploads/2020/11/1219668-20190530140504602-1470043120.png 1053w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>此时我们需要到命令行寻找刚刚docker那一条命令的输出，有类似这样的</p>



<pre class="wp-block-code"><code>*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

f63c3c3247e6445ab77517c38cddfb65

This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************</code></pre>



<p>可以看到这就是我们要找的admin password。</p>



<p>输入以后就成功进入了Jenkins。至此，我们已经完成了Jenkins的安装。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="499" src="https://blog.eastonman.com/wp-content/uploads/2020/11/image-1024x499.png" alt="" class="wp-image-240" srcset="https://blog.eastonman.com/wp-content/uploads/2020/11/image-1024x499.png 1024w, https://blog.eastonman.com/wp-content/uploads/2020/11/image-300x146.png 300w, https://blog.eastonman.com/wp-content/uploads/2020/11/image-768x374.png 768w, https://blog.eastonman.com/wp-content/uploads/2020/11/image-1536x749.png 1536w, https://blog.eastonman.com/wp-content/uploads/2020/11/image.png 1776w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>当然，如果我们要在生产环境使用的话还需要做存储的持久化，使用https等。需要使用docker-compose来避免每次都要输入很多的命令行参数，我在此放一个我使用的docker-compose.yml。</p>



<pre class="wp-block-code"><code>version: '2.4'

volumes:
  jenkins:
    name: jenkins

networks:
  jenkins:
    name: jenkins
    ipam:
      config:
        - subnet: 172.23.1.0/24

services:
  jenkins:
    image: jenkinsci/blueocean
    container_name: jenkins
    restart: unless-stopped
    networks:
      jenkins:
        ipv4_address: 172.23.1.23
    volumes:
      - jenkins:/var/jenkins_home</code></pre>



<p>我没有使用Docker的port映射，而是使用了HAProxy作为反向代理，是为了方便tls的配置和多站点共用443端口。有关反向代理和tls配置不再赘述，有兴趣可以看看下面的几条链接。</p>



<h2 class="wp-block-heading">深入阅读</h2>



<ul class="wp-block-list"><li>TLS相关：<a href="https://halfrost.com/https_tls1-2_handshake/" target="_blank" rel="noreferrer noopener">https://halfrost.com/https_tls1-2_handshake/</a></li><li>Docker基本概念：<a href="https://zhuanlan.zhihu.com/p/39171987" target="_blank" rel="noreferrer noopener">https://zhuanlan.zhihu.com/p/39171987</a></li><li>Docker-Compose：<a href="https://www.runoob.com/docker/docker-compose.html" target="_blank" rel="noreferrer noopener">https://www.runoob.com/docker/docker-compose.html</a></li><li>Docker-Compose文档：<a href="https://docs.docker.com/compose/compose-file/" target="_blank" rel="noreferrer noopener">https://docs.docker.com/compose/compose-file/</a></li><li>HAProxy：<a href="https://blog.csdn.net/napolunyishi/article/details/50455896" target="_blank" rel="noreferrer noopener">https://blog.csdn.net/napolunyishi/article/details/50455896</a></li><li>Acme.sh：<a href="https://github.com/acmesh-official/acme.sh" target="_blank" rel="noreferrer noopener">https://github.com/acmesh-official/acme.sh</a></li><li>Jenkins其他安装方式：<a href="https://www.jenkins.io/zh/doc/book/installing/" target="_blank" rel="noreferrer noopener">https://www.jenkins.io/zh/doc/book/installing/</a></li></ul>



<p></p>The post <a href="https://blog.eastonman.com/blog/2020/11/deploy-jenkins/">Jenkins 部署指北</a> first appeared on <a href="https://blog.eastonman.com">Easton Man's Blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.eastonman.com/blog/2020/11/deploy-jenkins/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
