5

jenkins结合gitlab实现pipline的自动构建部署

 1 year ago
source link: https://blog.51cto.com/u_15105742/6005942
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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= [email protected]
root@jenkins-slave:~# cat /root/.ssh/id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----
jenkins结合gitlab实现pipline的自动构建部署_gitlab
jenkins结合gitlab实现pipline的自动构建部署_gitlab_02
jenkins结合gitlab实现pipline的自动构建部署_jenkins_03
jenkins结合gitlab实现pipline的自动构建部署_服务器_04

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,并测试构建发布。

jenkins结合gitlab实现pipline的自动构建部署_jenkins_05
jenkins结合gitlab实现pipline的自动构建部署_服务器_06
jenkins结合gitlab实现pipline的自动构建部署_gitlab_07
jenkins结合gitlab实现pipline的自动构建部署_服务器_08
jenkins结合gitlab实现pipline的自动构建部署_服务器_09
jenkins结合gitlab实现pipline的自动构建部署_gitlab_10

1.3、测试访问web

jenkins结合gitlab实现pipline的自动构建部署_服务器_11
jenkins结合gitlab实现pipline的自动构建部署_服务器_12
jenkins结合gitlab实现pipline的自动构建部署_jenkins_13
  • 1收藏
  • 评论
  • 分享
  • 举报

上一篇:安装jenkins服务


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK