当前位置:   article > 正文

Devops——Jenkins的pipeline实战_jenkins自动化测试 devops pipline

jenkins自动化测试 devops pipline

摘要

实战要体验Jenkins集群同时执行两个任务,都是编译构建GitHub上的热门开源项目:

    在agent1上编译和构建spring-cloud-alibaba,再通过scp命令将构建结果传输到master电脑的/usr/local/build_result目录下;
    在agent2编译和构建spring-framework,再通过scp命令将构建结果传输到master电脑的/usr/local/build_result目录下;

配置环境和项目

1. 在master电脑上创建文件夹/usr/local/build_result

2 .配置maven,在Jenkins网页上选择Global Tool Configuration,如下图红框所示:

3.新增一个maven配置,名为mvn-3.6.2,然后点击“保存”按钮,如下图:

4. agent1和agent2上用scp命令传输文件到master上的时候,第一次ssh要在控制台输入"yes",为了避免执行任务的时候出现这个等待输入的操作,我们去手动执行一遍,后面就再也不用了,ssh登录agent1之后,执行以下命令进入容器:

docker exec -it agent /bin/bash

5.执行命令ssh root@192.168.25.131,这时候控制台提示输入yes或者no,请您输入yes,再根据提示输入master的密码,此时登录master成功 

  1. [root@agent1 16]# docker exec -it agent /bin/bash
  2. root@82eb8cfec0a6:/# ssh root@192.168.133.131
  3. The authenticity of host '192.168.133.131 (192.168.133.131)' can't be established.
  4. ECDSA key fingerprint is SHA256:DPE2nldWHiOhC4DB9doy7jPWNZVup6XFZ+sR2i1gqz8.
  5. Are you sure you want to continue connecting (yes/no)? yes
  6. Warning: Permanently added '192.168.133.131' (ECDSA) to the list of known hosts.
  7. root@192.168.133.131's password:
  8. Last login: Sat Nov 16 19:59:42 2019 from 192.168.133.132

6.此时您是在agent1的容器中ssh登录了master,所以要连续输入两次exit命令才能返回到agent1的控制台;

7.在agent2电脑上也执行相同的操作;

编译构建spring-cloud-alibaba的任务

spring-cloud-alibaba是个maven工程,要用maven来编译构建:

1.在Jenkins网页上,点击下图红框位置,创建一个任务:

2 如下图,创建名为spring-clolud-alibaba的pipeline任务:

3.下图红框位置就是输入pipeline脚本的地方:

 4.在上图红框位置输入以下内容:

  1. pipeline {
  2. agent {
  3. label 'maven'
  4. }
  5. tools {
  6. maven 'mvn-3.6.2'
  7. }
  8. stages {
  9. stage('Checkout') {
  10. steps {
  11. echo '从GitHub下载spring-cloud-alibaba工程的源码(2.1.1.RELEASE归档包)'
  12. sh 'wget https://github.com/alibaba/spring-cloud-alibaba/archive/v2.1.1.RELEASE.tar.gz'
  13. echo '下载结束,解压归档包'
  14. sh 'tar -zxf v2.1.1.RELEASE.tar.gz'
  15. }
  16. }
  17. stage('Build') {
  18. steps {
  19. echo '开始编译构建'
  20. sh 'cd spring-cloud-alibaba-2.1.1.RELEASE && mvn clean package -U -DskipTests'
  21. }
  22. }
  23. stage('Save') {
  24. steps {
  25. echo '将构建结果传送到存储服务器'
  26. sh 'cd spring-cloud-alibaba-2.1.1.RELEASE/spring-cloud-alibaba-nacos-discovery/target && sshpass -p 888888 scp ./*.jar root@192.168.133.131:/usr/local/build_result'
  27. echo '传送完毕'
  28. }
  29. }
  30. stage('Clean') {
  31. steps {
  32. echo '清理Maven工程'
  33. sh 'cd spring-cloud-alibaba-2.1.1.RELEASE && mvn clean'
  34. echo '清理完毕'
  35. }
  36. }
  37. }
  38. }

5.点击底部的"保存"按钮后,点击下图红框中的"立即构建"即可开始任务:

6.点击下图红框中的红色圆球,即可跳转到实时输出任务信息的页面:

7.页面实时输出构建信息:

8.主页面可以看到是agent1在执行任务,如下图红框所示,可见pipeline脚本中的标签已经生效了,将任务调度到标签为maven的节点去执行:

编译构建spring-cloud-alibaba工程是个费时的操作,我们现在去创建另一个任务:编译构建spring-framework

编译构建spring-framework的任务

spring-framework是个gradle工程,不需要准备gradle环境,在执行编译命令时会自动下载gradle工具:

1.创建名为spring-framework的pipeline任务:

2.pipeline脚本如下:

  1. pipeline {
  2. agent {
  3. label 'gradle'
  4. }
  5. stages {
  6. stage('Checkout') {
  7. steps {
  8. echo '从GitHub下载spring-framework工程的源码(master分支)'
  9. checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'https://github.com/spring-projects/spring-framework.git']]])
  10. }
  11. }
  12. stage('Build') {
  13. steps {
  14. echo '开始编译构建'
  15. sh './gradlew build'
  16. }
  17. }
  18. stage('传送构建结果') {
  19. steps {
  20. echo '将构建结果传送到存储服务器'
  21. sh 'cd spring-core/build/libs && sshpass -p 888888 scp ./*.jar root@192.168.133.131:/usr/local/build_result && cd ../../..'
  22. echo '传送完毕'
  23. }
  24. }
  25. stage('Clean') {
  26. steps {
  27. echo '清理gradle工程'
  28. sh './gradlew clean'
  29. echo '清理完毕'
  30. }
  31. }
  32. }
  33. }

3.立即执行此任务,可见任务已经被调度到agent2上去执行了,此时的agent1和agent2正在同时执行任务,如下图:

查看构建结果

上述两个任务在构建成功后,都会通过scp命令将构建结果传送到master的/usr/local/build_result目录下:

至此,Jenkins集群下的pipeline实战就完成了,借助pipeline的标签参数,可以控制任务的调度节点,实现多任务同时在多节点执行;

博文参考

Jenkins Pipeline语法(上) - 简书

Jenkins Pipeline语法(中) - 简书

Jenkins Pipeline语法(下) - 简书

Jenkins集群下的pipeline实战_程序员欣宸的博客-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/492229
推荐阅读
相关标签
  

闽ICP备14008679号