jenkins结合gitlab实现pipline的自动构建部署
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jenkins结合gitlab实现pipline的自动构建部署相关的知识,希望对你有一定的参考价值。
部署jenkins与gitlab服务就在这不演示了,可以参考前面的两篇文章。
1、jenkins配置自动构建部署
1.1、基于ssh key拉取代码
先在jenkins服务器上创建个ssh key,在把公钥配置到gitlab上面,再到jenkins web界面配置凭据,使jenkins来拉取代码。
root@jenkins-slave:~# ssh-keygen
root@jenkins-slave:~# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDYN/bU3KUcOE5Qt30LyDot9Qay2mHCAx6bgF9Mv+SH4RQG2YCqmMiKxdITiqby5MhicgtOQ5dTaaAp5oJ0DmjwA9lrzeZ0m0OhMBxrTwH6vp8zt4m2IkogDAAGe32wOE6/FpRqaev6zPkHRwxbO6W1sXWVxvwX+OYcJJ1xR/FiVxoeE7GHt3S06y7v+/OKpl49TGgtc6bV0gNebE44JD82SF74zoyVeAqkZeuq3+U7psRuGKcsfwwLnMusbLvac920DpFswZFqVgRzTfMqZE5ZkmWdR816+BbPzLgkcQzDaWn+99Ly7vJmfVdE+1ZMidW2oundoEBRMOhd3Ori13PnjxCaaUgJXQ1wLt/kLpQjq0FqTGbZRZ8vdcYG/IxRKixb303kjNA2F+zX9ZZOXjlDQqMZbleNqc+GgZDCv5k2XmQ9xF+PbhRjtfmPjGHkqOlM/gsq4Wxl254GNGpZZLRWnHKfPLlThmJvlhw8v8yIc8fjaDxLUADytaqCYSEIgBE= root@jenkins-slave.stars.com
root@jenkins-slave:~# cat /root/.ssh/id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----
2、pipline
官方pipline的示例:https://www.jenkins.io/zh/doc/book/pipeline/ pipline是帮助jenkins实现CI到CD转变的重要角色,是运行在jenkins 2.X版本的核心插件,简单来说pipline就是一套运行与jenkins上的一套工作流框架,将原本独立运行与单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程,从而实现单个任务是很难实现的复杂流程编排和任务可视化,pipline的实现是一套Groovy DSL,任何发布流程都可以表述为一段Groovy脚本。
2.1、pipline语法
https://www.jenkins.io/zh/doc/book/pipeline/syntax/ stage:阶段,一个pipline可以划分为若干个stage,每个stage都是一个操作的步骤,比如clone代码、代码编译、构建镜像、上传镜像、镜像部署,阶段是一个逻辑分组,可以跨多个node执行。 node:节点,每个node都是一个jenkins的节点,可以是jenkins master也可以是jenkins agent,node是执行step的具体服务器。 step:步骤,step是jenkins的pipline最基本的操作单元,从在服务器上创建目录到构建容器镜像,由各类的jenkins插件提供实现,例如:sh "make"
2.2、pipline优势
- 可持续性:jenkins的重启或者中断后不会影响正在执行的job。
- 可支持暂停:pipline可以选择停止并等待人工输入或者批准在继续执行。
- 可扩展:通过groovy的编程更容易的扩展插件。
- 并行执行:通过groovy脚本可以实现step,stage间的并行执行,和更复杂的相互依赖关系。
2.3、创建一个pipline
创建一个简单的部署web的pipline,并测试构建发布。
1.3、测试访问web
以上是关于jenkins结合gitlab实现pipline的自动构建部署的主要内容,如果未能解决你的问题,请参考以下文章