峨影夜思 發表於 2022-6-6 15:03:00

Devops 初探,JenKins安装,配置关联gitee

<h2 id="devops-是什么">Devops 是什么</h2>
<p>DevOps即Development和Operations的组合词,是一组过程、方法与系统的统称,用于促进开发应用程序或软件工程、技术运营和质量保障QA部门之间的沟通、协作与整合。</p>
<p>DevOps是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化,它促进开发和运营团队之间的协作,以自动化和可重复的方式更快地将代码部署到生产中。</p>
<p>DevOps有助于提高组织提供应用程序和服务的速度。它使组织能够更好地为客户服务,并在市场中更有竞争力。</p>
<p>简而言之,DevOps可以定义为开发和IT运营的一致性,以及更好的沟通和协作。</p>
<p>如图</p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150142115-771614989.png" alt="image-20220602175601380" loading="lazy"></p>
<h2 id="为什么需要devops">为什么需要DevOps</h2>
<p>在DevOps之前:</p>
<p>● 开发和运营团队完全孤立。</p>
<p>● 测试和部署是在设计构建之后完成的独立活动。因此,他们比实际构建周期消耗更多时间。</p>
<p>● 在不使用DevOps的情况下,团队成员将大量时间花在测试,部署和设计上,而不是构建项目。</p>
<p>● 手动代码部署会导致生产中出现人为错误</p>
<p>● 开发和运营团队有各自的时间表,不同步导致进一步的延误。</p>
<p>在DevOps 模式下,开发团队和运营团队都不再是“孤立”的团队。有时,这两个团队会合为一个团队,他们的工程师会在应用程序的整个生命周期(从开发测试到部署再到运营)内相互协作,开发出一系列不限于单一职能的技能。</p>
<h2 id="devops的目的">devops的目的</h2>
<ul>
<li>
<p>DevOps 突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠。</p>
</li>
<li>
<p>DevOps 希望做到的是软件产品交付过程中 <code>IT 工具链的打通</code>,使得各个团队减少时间损耗,更加高效的协同工作。</p>
</li>
</ul>
<h2 id="ci-cd-是什么">CI 、CD 是什么?</h2>
<ul>
<li>
<p><code>持续集成(Continuous Integration)</code>:持续集成是指软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快、更早的发现其中的错误。持续集成源自于极限编程(XP),是 XP 最初的 12 种实践之一。<code>持续集成需要具备</code>:</p>
</li>
<li>
<ul>
<li>① <code>全面的自动化测试</code>:这是实践持续集成 &amp;&amp; 持续部署的基础,与此同时,选择合适的自动化测试工具也极为重要。</li>
</ul>
</li>
<li>
<ul>
<li>② <code>灵活的基础设施</code>:<code>容器、虚拟机</code> 的存在让开发人员和 QA 人员不必再大费周折。</li>
</ul>
</li>
<li>
<ul>
<li>③ <code>版本工具工具</code>:如 Git、SVN 等。</li>
</ul>
</li>
<li>
<ul>
<li>④ <code>自动化的构建和软件发布流程工具</code>:如 Jenkins 等。</li>
</ul>
</li>
<li>
<ul>
<li>⑤ <code>反馈机制</code>:构建、测试失败的时候,可以快速的反馈到相关负责人,以便尽快的解决问题,使得产品能更早的达到稳定的版本。</li>
</ul>
</li>
<li>
<p><code>持续交付(Continuous Delivery)</code>:持续交付在持续集成的基础上,将集成后的代码部署到<code>更贴近真实运行环境</code>的『<code>类生成环境</code>』中。持续交付优先于整个产品生命周期的软件部署,建立在高水平自动化持续集成之上。持续交付的优点和持续集成非常类似:</p>
</li>
<li>
<ul>
<li>① <code>快速发布</code>:能够应对业务需求,更快的实现软件价值。</li>
</ul>
</li>
<li>
<ul>
<li>② <code>编码、测试、上线、交付</code>的频繁迭代周期缩短,同时获得迅速反馈。</li>
</ul>
</li>
<li>
<ul>
<li>③ <code>高质量的软件发布标准</code>:整个交付过程标准化、可重复、可靠。</li>
</ul>
</li>
<li>
<ul>
<li>④ <code>整个交付过程进度可视化</code>:方便团队人员了解项目成熟度。</li>
</ul>
</li>
<li>
<ul>
<li>⑤ <code>更先进的团队协作方式</code>:从需求分析、产品的用户体验到交互设计、开发、测试、运维等角色的密切协作,相比于传统的瀑布式软件团队,更少浪费。</li>
</ul>
</li>
<li>
<p><code>持续部署(Continuous Deployment)</code>:持续部署是指当交付的代码通过评审之后,自动部署到生产环境中。持续部署是持续交付的最高阶段。这意味着,所有通过了一系列的自动化测试的改动都将自动部署到生产环境。</p>
</li>
</ul>
<blockquote>
<p>开发人员提交代码,持续集成服务器获取代码,执行单元测试,根据测试结果决定是否部署到预演环境,如果成功部署到预演环境,进行整体验收测试,如果测试通过,自动部署到生产环境。整个过程自动化高效运转。</p>
</blockquote>
<h2 id="推荐常用的cicd工具">推荐常用的CI/CD工具</h2>
<h3 id="jenkins">Jenkins</h3>
<p>专业的CI/CD工具,可扩展自动化服务器、安装配置简单、丰富的插件库、分布式架构设计、支持所有的平台、可视化的管理页面。</p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150141911-1437914933.png" alt="images" loading="lazy"></p>
<h3 id="gitlab">GitLab</h3>
<p>端到端DevOps工具,常用功能:代码审查、问题跟踪、动态订阅、易于扩展、项目wiki、多角色项目管理、项目代码在线编译预览、CI/CD工具集成。</p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150141976-1149826764.png" alt="images" loading="lazy"></p>
<p>提交合并代码集成 :通过git push 进行操作或者在GitLab Web页面操作。</p>
<p>发布应用到服务器 : 获取制品库中的应用,然后用salt、ansible发布部署到服务器。</p>
<p>完全自动化: 提交代码-&gt; 构建部署 -&gt; 发布</p>
<p>gitlab虽然强大但是过于庞大,并且gitlab一般是用于git私有存储库来使用,所以这里还是使用Jenkins</p>
<h2 id="jenkins-1">Jenkins</h2>
<h3 id="docker-安装-jenkins">Docker 安装 Jenkins</h3>
<pre><code># 端口是 8080
docker run      \
       -u root\
       --name=jenkins\
       -d \
       -p 8080:8080 \
       -p 50000:50000 \
       -v jenkins-data:/var/jenkins_home \
       -v /etc/localtime:/etc/localtime:ro \
       -v /var/run/docker.sock:/var/run/docker.sock \
       --restart=always \
       jenkinsci/blueocean
</code></pre>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150141869-160476367.png" alt="image-20220602182123077" loading="lazy"></p>
<h3 id="初始化jenkins">初始化Jenkins</h3>
<p>等待安装完成即可,安装完毕之后通过 浏览器访问如我的</p>
<pre><code>http://192.168.176.100:8080
</code></pre>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150142185-858423770.png" alt="image-20220602182325544" loading="lazy"></p>
<p>这个密码,在日志可以找到</p>
<pre><code>docker logs jenkins
</code></pre>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150142685-607239647.png" alt="image-20220602182511696" loading="lazy"></p>
<p>已经找到了密码,输入密码即可进去</p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150141939-1870753953.png" alt="image-20220602182609473" loading="lazy"></p>
<p>安装插件</p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150141886-1198558506.png" alt="image-20220606094003930" loading="lazy"></p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150142136-991482704.png" alt="image-20220606094453865" loading="lazy"></p>
<p>创建管理员用户</p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150141829-1764424212.png" alt="image-20220606094654919" loading="lazy"></p>
<p>配置实例,一般会自己获取,没有获取就自己填写</p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150142329-2111295258.png" alt="image-20220606094801974" loading="lazy"></p>
<p>完成重启</p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150142210-649696201.png" alt="image-20220606094844971" loading="lazy"></p>
<p>刷新页面,用刚刚创建的管理员用户登录</p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150141437-1292848583.png" alt="image-20220606095327907" loading="lazy"></p>
<p>这下就进去了</p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150142091-1515954155.png" alt="image-20220606095430624" loading="lazy"></p>
<h3 id="安装插件">安装插件</h3>
<ul>
<li>
<p>Docker、Docker Pipeline:安装 Docker Pipeline 会自动安装 Docker 插件,Docker Pipeline 插件允许我们自定义 agent 使用 Docker 环境。</p>
</li>
<li>
<p>Git Parameter:解析 git 参数,允许我们选择分支进行构建。</p>
</li>
<li>
<p>Active Choices:可以做到参数的级联选择。</p>
</li>
<li>
<p>Generic Webhook Trigger:通用的 webhook 触发器,构建更强大的 webhook 功能。</p>
</li>
<li>
<p>Role-based Authorization Strategy:RBAC 权限控制。</p>
</li>
<li>
<p>List Git Branches Parameter:列出分支参数。</p>
</li>
<li>
<p>Build With Parameters:基于自定义参数构建。</p>
</li>
<li>
<p>Jersey 2 API、Gitee:Gitee 插件。</p>
</li>
</ul>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150142097-1561709069.png" alt="image-20220606095705070" loading="lazy"></p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150141874-1206456419.png" alt="image-20220606095814384" loading="lazy"></p>
<p>docker系列</p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150141721-916181274.png" alt="image-20220606095959828" loading="lazy"></p>
<p>git系列</p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150141960-2063083752.png" alt="image-20220606101929099" loading="lazy"></p>
<p>后面就不一一演示了,上面几个插件都要安装</p>
<p>安装完成后勾选重启,重启完成即可</p>
<h2 id="准备git-项目并配置jenkis-关联-gitee">准备git 项目并配置Jenkis 关联 Gitee</h2>
<p>以 gitee 为例,因为 github 实现是太慢了,自己随便建一个项目</p>
<p>这里我也是随便建了一个</p>
<p>https://gitee.com/makalochen/devop-test</p>
<h3 id="jenkis-关联-gitee">Jenkis 关联 Gitee</h3>
<p>申请gitee私人令牌</p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150142264-2135126789.png" alt="image-20220606100622788" loading="lazy"></p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150141384-1453908047.png" alt="image-20220606100751128" loading="lazy"></p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150142096-1399576651.png" alt="image-20220606100847830" loading="lazy"></p>
<h3 id="jenkins-配置-gitee-api-令牌">Jenkins 配置 Gitee API 令牌</h3>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150141562-1334197295.png" alt="image-20220606101307607" loading="lazy"></p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150141976-349356574.png" alt="image-20220606101339157" loading="lazy"></p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150141887-1617747661.png" alt="image-20220606101409630" loading="lazy"></p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150141462-1697356988.png" alt="image-20220606101432554" loading="lazy"></p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150141535-957806006.png" alt="image-20220606101455053" loading="lazy"></p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150142198-85950285.png" alt="image-20220606104553385" loading="lazy"></p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150141525-1158549609.png" alt="image-20220606104610341" loading="lazy"></p>
<h3 id="jenkins-配置关联-gitee">Jenkins 配置关联 Gitee</h3>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150142215-1517915813.png" alt="image-20220606104758045" loading="lazy"></p>
<p>下划找到gitee配置</p>
<p><img src="https://img2022.cnblogs.com/blog/1652001/202206/1652001-20220606150142043-1542406879.png" alt="image-20220606105052965" loading="lazy"></p>
<p>最后别忘了保存</p><br><br>
来源:https://www.cnblogs.com/makalochen/p/16348261.html
頁: [1]
查看完整版本: Devops 初探,JenKins安装,配置关联gitee