def getHost(){
def remote = [:]
remote.name = 'server02'
remote.host = '39.19.90'
remote.user = 'root'
remote.port =
remote.password = '#########'
remote.allowAnyHosts = true
return remote
}
pipeline {
agent any
environment{
def server = ''
}
stages {
stage('init-server'){
steps {
script {
server = getHost()
}
}
}
stage('检出') {
steps {
sh "cd ~/cobbler.sysconfig/cobbler.identityserver; git pull;"
git url: 'https://github.com/cysnet/cobbler.identityserver.git', branch: 'master', credentialsId:'86a8ba78-9bb7-4a9b-bb53-3a77224c27ce'
sh "cp ~/cobbler.sysconfig/cobbler.identityserver/appsettings.json $WORKSPACE/Cobbler.IdentityServer/"
}
}
stage('docker清理') {
steps {
script{
image_name = sh(script: "docker images -a|grep 'chenyishi/cobbler.identityserver'| awk '{print \$1 }'", returnStdout: true).trim()
echo image_name
if (image_name!=null&&image_name!=""){
sh(script: "docker rmi chenyishi/cobbler.identityserver:1.0 --force")
}
}
script{
container_name = sh(script: "docker ps -a -f name=cobbler.identityserver -q", returnStdout: true).trim()
echo container_name
if (container_name!=null &&container_name!=""){
sh(script: "docker rm --force ${container_name}")
}
}
script{
image_name = sh(script: "docker images -f label=name=cobbler.identityserver -q", returnStdout: true).trim()
echo image_name
if (image_name!=null&&image_name!=""){
sh(script: "docker rmi ${image_name} --force")
}
}
}
}
stage('构建') {
steps {
sh "docker build --label name=cobbler.identityserver -t cobbler.identityserver:1.0 .;"
sh "docker login -u ##### -p #####; docker tag cobbler.identityserver:1.0 chenyishi/cobbler.identityserver:1.0"
}
}
stage('docker push') {
steps {
sh "docker push chenyishi/cobbler.identityserver:1.0"
}
}
stage('remote server docker run'){
steps {
script {
sshCommand remote: server, command: """
container_name=`docker ps -a -f name=cobbler.identityserver -q`;
if [ \$container_name ];then docker rm --force \$(docker ps -a -f name=cobbler.identityserver -q); fi;
image_name=`docker images -f "label=name=cobbler.identityserver" -q`;
if [ \$image_name ];then sudo docker rmi \$(docker images -f "label=name=cobbler.identityserver" -q); fi;
docker login -u ##### -p #######;
docker run --name cobbler.identityserver -d -p : chenyishi/cobbler.identityserver:1.0;
"""
}
}
}
}
}

jenkins pipline的更多相关文章

  1. jenkins pipline 几个注意细节

    新建jenkins pipline 1)pipeline的脚本语法要正确,sonarqube的projectKey需要做相应的修改 2)先执行一次构建,会报错 3)进到jenkins workspac ...

  2. 持续集成工具之Jenkins pipline简单示例

    前文我们主要聊了下jenkins的插件安装.用户及权限管理.邮件发送.配置凭证到gitlab上拉取项目和创建普通job:回顾请参考https://www.cnblogs.com/qiuhom-1874 ...

  3. ubuntu 16.04 jenkins pipline的实现 最终docker启动服务

    准备工作:两台虚拟机A:192.168.1.60 B:192.168.1.61 C:一个存放代码的代码库(github)A:jenkins git docker openssh-server(ssh) ...

  4. jenkins pipline 和 jenkinsfile

    Jenkins Pipeline(或简称为 "Pipeline")是一套插件,将持续交付的实现和实施集成到 Jenkins 中.Jenkins Pipeline 提供了一套可扩展的 ...

  5. jenkins pipline和jenkinsfile

    Jenkins Pipeline(或简称为 "Pipeline")是一套插件,将持续交付的实现和实施集成到 Jenkins 中. Jenkins Pipeline 提供了一套可扩展 ...

  6. 使用Jenkins+Pipline 持构建自动化部署之安卓源码打包、测试、邮件通知

    一.引言 Jenkins 2.x的精髓是Pipeline as Code,那为什么要用Pipeline呢?jenkins1.0也能实现自动化构建,但Pipeline能够将以前project中的配置信息 ...

  7. jenkins pipline 发送邮件

    推荐一个好网站https://www.w3cschool.cn/jenkins/jenkins-e7bo28ol.html 获取git 用户信息// Get checkout output value ...

  8. Jenkins Pipline语法

    引用自:http://baijiahao.baidu.com/s?id=1582812185263227836&wfr=spider&for=pc 引用自:https://www.cn ...

  9. jenkins pipline 用法收集

    1.下载多个项目 node { stage('clone'){ dir('test1'){ checkout([$class: 'GitSCM', branches: [[name: '*/maste ...

随机推荐

  1. 到底啥是鸭子类型(duck typing)带简单例子

    #百度百科鸭子类型定义 这是程序设计中的一种类型推断风格,这种风格适用于动态语言(比如PHP.Python.Ruby.Typescript.Perl.Objective-C.Lua.Julia.Jav ...

  2. MiniDao & Freemarker & include

    minidao include - 国内版 Binghttps://cn.bing.com/search?q=minidao+include&qs=n&form=QBRE&sp ...

  3. git pull There is no tracking information for the current branch.

    在高版本的 git下面,也许会看见这样的提示: 解决方案:指定当前工作目录工作分支,跟远程的仓库,分支之间的链接关系. 比如我们设置master对应远程仓库的master分支 git branch - ...

  4. VS Code 通过文件名查询文件并打开

    On Windows press Ctrl+p or Ctrl+e On Mac press Cmd+p on the Linux press also Ctrl+p works Older Mac ...

  5. 让remix使用本地文件系统

    让remix使用本地文件系统   转:https://blog.csdn.net/platocnet/article/details/83376792 1. 测试发现使用npm命令安装相关环境不成功, ...

  6. ionic生命周期函数

    Ionic4中的生命周期函数和angualr7基本是一样的,下面我们看看Ionic4中的生命周期函数,以及生命周期函数的用法. Ionic4中内置的生命周期函数: ionViewWillEnter — ...

  7. Spring的Bean的生命周期方法执行顺序测试

    通过一个简单的Maven工程来演示Spring的Bean生命周期函数的执行顺序. 下面是工程的目录结构: 直接贴代码: pom.xml文件内容: <?xml version="1.0& ...

  8. 关于[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)] 的解释

    关于[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)] 的解释 [StructLayout(LayoutKind.Sequentia ...

  9. Windows Vistual Studio 2013/2015 MRPT安装

    博客参考:https://blog.csdn.net/qyjzhou/article/details/80110941 MRPT 安装 1. 官网编译好的程序直接安装 https://sourcefo ...

  10. Qt tableView设置不可编辑

    main_ui.tableView_record->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToConten ...