1. 实验架构:
  2.  
  3. 192.168.0.96 gitlab
  4.  
  5. 192.168.0.97 jenkins
  6.  
  7. 192.168.0.98 harbordocker集群
  8.  
  9. 说明:下面代码编译镜像那一步的代码必须靠左,目的是不要有空格,否则报错,deploy那一步也必须是那种格式,否则报错
  10.  
  11. 安装完jenkins后首先生成pipeline可以用的git链接地址,参照下面连接,看里面的第7
  12.  
  13. https://www.cnblogs.com/effortsing/p/10468840.html
  14.  
  15. pipline脚本如下:
  16. pipeline {
  17. agent any
  18. stages {
  19. stage('git checkout'){
  20. steps {
  21. echo 'git clone'
  22. checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'c32a3a24-2c9d-4c8d-b456-9d6d0badf3a2', url: 'http://192.168.0.96:8081/zihao/test.git']]])
  23. }
  24. }
  25. stage('maven build'){
  26. steps {
  27. echo 'maven build'
  28. sh '''
  29. export JAVA_HOME=/usr/local/jdk1.8.0_171/
  30. /usr/local/apache-maven-3.5.4/bin/mvn clean package -Dmaven.test.skip=true
  31. '''
  32. }
  33. }
  34.  
  35. stage('docker build and push images'){
  36. steps {
  37. echo 'docker build and push images'
  38. sh '''
  39. REPOSITORY=192.168.0.98:5000/library/solo/solo:${Tag}
  40. cat >Dockerfile<<EOF
  41. FROM 192.168.0.98:5000/library/tomcat-85:latest
  42. RUN rm -rf /usr/local/tomcat/webapps/ROOT/
  43. COPY target/*.war /usr/local/tomcat/webapps/ROOT.war
  44. WORKDIR /usr/local/tomcat
  45. EXPOSE 8080
  46. CMD ["./bin/catalina.sh", "run"]
  47. EOF
  48. docker build -t $REPOSITORY .
  49. docker login -u admin -p Harbor12345 192.168.0.98:5000
  50. docker push $REPOSITORY
  51. '''
  52. }
  53. }
  54.  
  55. stage('deploy'){
  56. steps {
  57. echo 'deploy'
  58. sh '''
  59. REPOSITORY=192.168.0.98:5000/library/solo/solo:${Tag}
  60. cat >deploy.sh<<EOF
  61. #!/bin/bash
  62. ssh root@192.168.0.98 'docker container run -d --name blog-solo-2 -v /opt:/opt -p 89:8080 $REPOSITORY'
  63. EOF
  64. chmod +x deploy.sh
  65. sh deploy.sh
  66. '''
  67. }
  68. }
  69.  
  70. }
  71. }
  72.  
  73. 说明:远程执行命令前提需要安装ssh agent插件,
  74.  
  75. 现在ssh agent的认证,已不支持明文用户密码,而只能用加密方式实现。
  76.  
  77. 所以先在jenknisdocker集群之间实现ssh免密码rsa证书登陆。
  78.  
  79. 私钥放jenkins,公钥放在docker集群,然后,将私钥拿出来,写入到jenkins凭据
  80.  
  81. 参照:https://blog.csdn.net/weixin_34067980/article/details/86444168
  82.  
  83. 脚本参照:
  84.  
  85. https://blog.csdn.net/jackyzhousales/article/details/81713004
  86.  
  87. https://blog.csdn.net/a1010256340/article/details/83989059
  88.  
  89. 生成pipeline可以用的git链接地址参照:
  90.  
  91. https://www.cnblogs.com/FRESHMANS/p/8184874.html

pipline中执行shell脚本推送镜像并且部署的更多相关文章

  1. Linux中执行shell脚本的4种方法总结

    bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在 ...

  2. Linux中执行shell脚本的4种方法

    bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在 ...

  3. 每天一个linux命令(62):sh命令 /Linux中执行shell脚本的4种方法总结

    bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在 ...

  4. SQL Server 中执行Shell脚本计算本地文件的内容大小

    SQL Server 数据库中除了能执行基本的SQL语句外,也可以执行Shell脚本.默认安装后,SQL中的Shell脚本的功能是关闭的,需要手动打开, 执行以下脚本即可打开该功能. -- 允许配置高 ...

  5. Linux中执行shell脚本命令的4种方法总结

    bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在 ...

  6. 在crontab中执行shell脚本的问题

    crontab中记录的编写比较简单,下面是一个示例: * * * /app/tpssapp/ftpsrc/tools/statTables/statTables.sh > /app/tpssap ...

  7. Linux 中执行Shell 脚本的方式(三种方法)

    Shell 脚本的执行方式通常有如下三种: (1)bash script-name 或者 sh script-name:(2)path/script-name或者./script-name:(3)so ...

  8. 在jenkins中使用shell命令推送当前主机上的docker镜像到远程的Harbor私有仓库

    1.jenkins主机上的docker配置 先在Jenkins主机的docke上配置上Harbor私有仓库地址 cat /etc/docker/daemon.json { "insecure ...

  9. shell脚本中执行shell脚本(2)

    (a.sh)读取用户输入参数,并在脚本(b.sh)中使用 1.a.sh #!/bin/sh read -p "please input name value: " name ./b ...

随机推荐

  1. 错误信息: The server cannot or will not process the request due to something that is perceived to be a client error

    错误原因:在提交的表单中有 date 类型的数据,也就是不能传输日期类型的数据. 嗯!我知道,去吧!

  2. Ubuntu16.04 install hadoop-2.8.1.tar.gz Cluster Setup

    环境说明: ip地址 用户名称 机器名称 机器角色 192.168.3.150 donny  donny-Lenovo-B40-80 Master + Salve 192.168.3.167 cqb ...

  3. [Flutter] Create a Customer widget

    For example, we want to have to button, looks similar to FloatingActionButton: But in the doc, it sa ...

  4. (转载) 搭建非域AlwaysOn win2016+SQL2016

    非域搭建Alwayson只是省去搭建域控那一部分,其他大同小异 条件: 操作系统:windows server 2016 数据库:SQL Server 2016 SSMS版本:17.3 节点1:HDD ...

  5. 2017.10.1 国庆清北 D1T2 两个逗比捉迷藏

    题目描述 你是能看到第二题的friends呢. ——laekov Hja和Yjq在玩捉迷藏.Yjq躲了起来,Hja要找他.在他们玩游戏的房间里,只有一堵不透明的墙和一个双面的镜子.Hja和Yjq可以看 ...

  6. 力扣50题 Pow(x,n)

    本题是力扣网第50题. 实现 pow(x, n) ,即计算 x 的 n 次幂函数. 采用递归和非递归思路python实现. class Solution: #递归思路 def myPow_recurs ...

  7. SQLServer 使用自定义端口连接的方法(转载)

    使用过SQL Server的人大多都知道,SQL Server服务器默认监听的端口号是1433,但是我今天遇到的问题是我的机器上有三个数据库实例,这样使用TCP/IP远程连接时就产生了问题.如何在Mi ...

  8. Android根据内网外网连接情况配置服务器访问IP

    新项目的app,可通过内网和外网的服务器ip进行请求访问,但是客户提供了专业终端,终端在wifi情况下走外网内网都可以,但关闭wifi则只能走4G专网,也就是只能走内网. 可前往我的小站查看:Andr ...

  9. tail -f 加过滤功能

    实时查看日志 通过-f参数,我们可以实时查看文件的新增内容: $ tail -f itbilu.log 注意:使用-f参数时不会中断文件监视,需要通过ctrl+c手动结束. 实时日志查看与grep过滤 ...

  10. Java 8 新特性总结

    一.Java 8 Lambda表达式 Lambda表达式,也称为闭包,它是推动Java 8发布的最重要新特性. Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法). 1.1 语法 使用 ...