pipline中执行shell脚本推送镜像并且部署
- 实验架构:
- 192.168.0.96 gitlab
- 192.168.0.97 jenkins
- 192.168.0.98 harbor、docker集群
- 说明:下面代码编译镜像那一步的代码必须靠左,目的是不要有空格,否则报错,deploy那一步也必须是那种格式,否则报错
- 安装完jenkins后首先生成pipeline可以用的git链接地址,参照下面连接,看里面的第7步
- https://www.cnblogs.com/effortsing/p/10468840.html
- pipline脚本如下:
- pipeline {
- agent any
- stages {
- stage('git checkout'){
- steps {
- echo 'git clone'
- 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']]])
- }
- }
- stage('maven build'){
- steps {
- echo 'maven build'
- sh '''
- export JAVA_HOME=/usr/local/jdk1.8.0_171/
- /usr/local/apache-maven-3.5.4/bin/mvn clean package -Dmaven.test.skip=true
- '''
- }
- }
- stage('docker build and push images'){
- steps {
- echo 'docker build and push images'
- sh '''
- REPOSITORY=192.168.0.98:5000/library/solo/solo:${Tag}
- cat >Dockerfile<<EOF
- FROM 192.168.0.98:5000/library/tomcat-85:latest
- RUN rm -rf /usr/local/tomcat/webapps/ROOT/
- COPY target/*.war /usr/local/tomcat/webapps/ROOT.war
- WORKDIR /usr/local/tomcat
- EXPOSE 8080
- CMD ["./bin/catalina.sh", "run"]
- EOF
- docker build -t $REPOSITORY .
- docker login -u admin -p Harbor12345 192.168.0.98:5000
- docker push $REPOSITORY
- '''
- }
- }
- stage('deploy'){
- steps {
- echo 'deploy'
- sh '''
- REPOSITORY=192.168.0.98:5000/library/solo/solo:${Tag}
- cat >deploy.sh<<EOF
- #!/bin/bash
- ssh root@192.168.0.98 'docker container run -d --name blog-solo-2 -v /opt:/opt -p 89:8080 $REPOSITORY'
- EOF
- chmod +x deploy.sh
- sh deploy.sh
- '''
- }
- }
- }
- }
- 说明:远程执行命令前提需要安装ssh agent插件,
- 现在ssh agent的认证,已不支持明文用户密码,而只能用加密方式实现。
- 所以先在jenknis和docker集群之间实现ssh免密码rsa证书登陆。
- 私钥放jenkins,公钥放在docker集群,然后,将私钥拿出来,写入到jenkins凭据
- 参照:https://blog.csdn.net/weixin_34067980/article/details/86444168
- 脚本参照:
- https://blog.csdn.net/jackyzhousales/article/details/81713004
- https://blog.csdn.net/a1010256340/article/details/83989059
- 生成pipeline可以用的git链接地址参照:
- https://www.cnblogs.com/FRESHMANS/p/8184874.html
pipline中执行shell脚本推送镜像并且部署的更多相关文章
- Linux中执行shell脚本的4种方法总结
bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在 ...
- Linux中执行shell脚本的4种方法
bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在 ...
- 每天一个linux命令(62):sh命令 /Linux中执行shell脚本的4种方法总结
bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在 ...
- SQL Server 中执行Shell脚本计算本地文件的内容大小
SQL Server 数据库中除了能执行基本的SQL语句外,也可以执行Shell脚本.默认安装后,SQL中的Shell脚本的功能是关闭的,需要手动打开, 执行以下脚本即可打开该功能. -- 允许配置高 ...
- Linux中执行shell脚本命令的4种方法总结
bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在 ...
- 在crontab中执行shell脚本的问题
crontab中记录的编写比较简单,下面是一个示例: * * * /app/tpssapp/ftpsrc/tools/statTables/statTables.sh > /app/tpssap ...
- Linux 中执行Shell 脚本的方式(三种方法)
Shell 脚本的执行方式通常有如下三种: (1)bash script-name 或者 sh script-name:(2)path/script-name或者./script-name:(3)so ...
- 在jenkins中使用shell命令推送当前主机上的docker镜像到远程的Harbor私有仓库
1.jenkins主机上的docker配置 先在Jenkins主机的docke上配置上Harbor私有仓库地址 cat /etc/docker/daemon.json { "insecure ...
- shell脚本中执行shell脚本(2)
(a.sh)读取用户输入参数,并在脚本(b.sh)中使用 1.a.sh #!/bin/sh read -p "please input name value: " name ./b ...
随机推荐
- 错误信息: The server cannot or will not process the request due to something that is perceived to be a client error
错误原因:在提交的表单中有 date 类型的数据,也就是不能传输日期类型的数据. 嗯!我知道,去吧!
- 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 ...
- [Flutter] Create a Customer widget
For example, we want to have to button, looks similar to FloatingActionButton: But in the doc, it sa ...
- (转载) 搭建非域AlwaysOn win2016+SQL2016
非域搭建Alwayson只是省去搭建域控那一部分,其他大同小异 条件: 操作系统:windows server 2016 数据库:SQL Server 2016 SSMS版本:17.3 节点1:HDD ...
- 2017.10.1 国庆清北 D1T2 两个逗比捉迷藏
题目描述 你是能看到第二题的friends呢. ——laekov Hja和Yjq在玩捉迷藏.Yjq躲了起来,Hja要找他.在他们玩游戏的房间里,只有一堵不透明的墙和一个双面的镜子.Hja和Yjq可以看 ...
- 力扣50题 Pow(x,n)
本题是力扣网第50题. 实现 pow(x, n) ,即计算 x 的 n 次幂函数. 采用递归和非递归思路python实现. class Solution: #递归思路 def myPow_recurs ...
- SQLServer 使用自定义端口连接的方法(转载)
使用过SQL Server的人大多都知道,SQL Server服务器默认监听的端口号是1433,但是我今天遇到的问题是我的机器上有三个数据库实例,这样使用TCP/IP远程连接时就产生了问题.如何在Mi ...
- Android根据内网外网连接情况配置服务器访问IP
新项目的app,可通过内网和外网的服务器ip进行请求访问,但是客户提供了专业终端,终端在wifi情况下走外网内网都可以,但关闭wifi则只能走4G专网,也就是只能走内网. 可前往我的小站查看:Andr ...
- tail -f 加过滤功能
实时查看日志 通过-f参数,我们可以实时查看文件的新增内容: $ tail -f itbilu.log 注意:使用-f参数时不会中断文件监视,需要通过ctrl+c手动结束. 实时日志查看与grep过滤 ...
- Java 8 新特性总结
一.Java 8 Lambda表达式 Lambda表达式,也称为闭包,它是推动Java 8发布的最重要新特性. Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法). 1.1 语法 使用 ...